基于分类法设计产品推荐系统

machine learningpythondata science

随着网上购物越来越受欢迎,个性化推荐在电子商务中变得越来越重要。由于网上有数百万种商品,因此很难找到客户想要的确切商品。个性化推荐可以提供帮助,根据用户的需求和习惯为他们提供推荐。基于分类法的推荐系统是个性化建议的一种方法。当对象或概念根据分类法(一种层次结构)进行组织和分类时,搜索和检索信息会更简单。在本文中,我们将仔细研究基于分类法的产品推荐系统以及如何自行开发一个。

什么是分类法?

分类法是一种将事物分类并组织成层次结构的方法。为了让人们更容易在电子商务中搜索和定位他们要搜索的内容,可以使用分类法对项目进行分类和子分组。基于分类法的内容推荐系统与传统推荐系统相比具有许多优势。准确度的提高是一个显著的优势。根据某一类别中商品之间的相似性,可以生成推荐,通过根据商品属性对商品进行分类,可以提高推荐的相关性。另一个好处是增强了用户体验。当用户获得符合他们兴趣和偏好的个性化推荐时,他们更有可能找到符合他们需求的商品,并且更倾向于访问网站。基于分类法的推荐系统可以处理庞大而多样化的数据集,使其适用于拥有大量库存的电子商务平台。

分类法如何工作?

基于分类法的推荐系统根据商品的特征将其分为组和子组。根据其品牌、价格、颜色或尺寸等特征,每种产品被分为一个或多个组。当用户搜索或看到某种产品时,系统会根据他们的行为和兴趣推荐同一类别或子类别中的其他商品。

例如,如果用户搜索蓝色连衣裙,该算法可以推荐相同颜色或设计的替代礼服。包括 KNN(k-最近邻)算法在内的几种算法可用于确定类别内产品之间的相似程度,该算法根据产品的特征计算产品之间的距离。企业可以通过采用基于分类法的推荐系统为消费者提供与他们的兴趣相关的个性化推荐,从而提高客户满意度和忠诚度。

基于分类法设计产品推荐系统

在开发基于分类法的产品推荐系统时,我们将利用 pandas 库进行数据处理和分析,以及利用 scikit-learn 包进行机器学习策略。为了明确说明基于分类法的推荐系统,我们将创建此数据集。

KNN(k-最近邻)方法是一种机器学习技术,可根据数据点的属性确定数据点之间的距离,该方法用于构建推荐系统。本研究的目的是展示如何使用基于分类法的推荐系统根据人们的兴趣和行为为他们提供个性化推荐。

首先,让我们导入必要的库 -

import pandas as pd
import numpy as np
from sklearn.neighbors import NearestNeighbors

接下来让我们使用我们的分类法为产品构建一个数据集:

products = pd.DataFrame({
   'product_id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
   'category': ['Tops', 'Tops', 'Tops', 'Bottoms', 'Bottoms', 'Shoes', 'Shoes', 'Accessories', 'Accessories', 'Accessories'],
   'sub_category': ['T-Shirts', 'Shirts', 'Sweaters', 'Pants', 'Jeans', 'Sneakers', 'Boots', 'Jewelry', 'Hats', 'Bags'],
   'material': ['Cotton', 'Cotton', 'Wool', 'Cotton', 'Denim', 'Leather', 'Leather', 'Gold', 'Cotton', 'Leather'],
   'style': ['Casual', 'Formal', 'Casual', 'Casual', 'Casual', 'Casual', 'Formal', 'Formal', 'Casual', 'Casual'],
   'color': ['White', 'Blue', 'Gray', 'Black', 'Blue', 'White', 'Black', 'Gold', 'Red', 'Brown'],
   'size': ['S', 'M', 'L', 'S', 'M', '10', '11', 'NA', 'NA', 'NA'],
   'brand': ['Nike', 'Ralph Lauren', 'Tommy Hilfiger', 'Levi's', 'Wrangler', 'Adidas', 'Steve Madden', 'Tiffany', 'New Era',      'Coach']
})

在此过程中,会产生十种产品的数据集,每种产品都有类别、子类别、材质、款式、颜色、尺寸和品牌。

接下来,我们必须将分类数据转换为数值数据。为了将类别信息转换为数字信息,我们将采用独热编码。

products_encoded = pd.get_dummies(products[['category', 'sub_category', 'material', 'style', 'color', 'size', 'brand']])

对数据进行编码后,我们现在可以将 KNN 模型拟合到我们的数据集中

knn_model = NearestNeighbors(metric='cosine', algorithm='brute')
knn_model.fit(products_encoded)

使用 KNN 模型发现给定产品的 K 个最近邻居,我们现在可以进行预测 −

def get_recommendations(product_id, K):
   product_index = products[products['product_id'] == product_id].index[0]
   distances, indices = knn_model.kneighbors(products_encoded.iloc[product_index, :].values.reshape(1, -1), n_neighbors=K+1)
   recommended_products = []
   for i in range(1, K+1):
      recommended_products.append(products.iloc[indices.flatten()[i], 0])
   return recommended_products

最后,我们使用以下代码进行预测。

print(get_recommendations(1, 3))

输出

[4, 3, 9]

在此示例中,我们构建了一个包含十种商品的数据集,并使用独热编码将分类数据转换为数值数据。然后,我们将 KNN 模型拟合到数据集,并构建一个函数,根据特定产品的 K 个最近邻居提供建议。最后,我们通过获取 product_id 1 的前三个建议来测试推荐系统。

结论

最后,基于分类法的推荐系统是构建产品建议系统的绝佳方式。该系统可以根据客户的属性对事物进行分类,从而为客户提供个性化建议,从而增强他们的平台体验。然而,创建有效的分类法和收集产品数据可能很困难,推荐系统可能会遇到冷启动问题和可扩展性问题。最终,基于分类法的推荐系统对于希望增强用户体验、增加收入和最大限度减少流失的电子商务企业来说是一个强大的工具。


相关文章