【问题标题】:Training machine learning model for ecommerce customer/orders models电子商务客户/订单模型的训练机器学习模型
【发布时间】:2020-03-04 14:36:33
【问题描述】:

我有以下数据集:

| customer | item | number_of_orders |
|    1     |  1   |         1        |
|    1     |  2   |         0        |
|    1     |  3   |         0        |
|    1     |  4   |         1        |
|    2     |  1   |         0        |
|    2     |  2   |         0        |
|    2     |  3   |         0        |
|    2     |  4   |         1        |
...

我试图断定用户 X 是否会订购商品 Y 作为第一步。

这是我目前拥有的代码

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

from sklearn.neighbors import KNeighborsClassifier

model = KNeighborsClassifier(n_neighbors=3)

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=7)

model.fit(X_train, Y_train)
predictions = model.predict(X_test)
result = accuracy_score(Y_test, predictions)
result

它提供了非常高的准确度,但我怀疑它与 number_of_orders 的数据集中的大量零有关。

有人可以建议如何改进这个机器学习模型吗?

我也有关于价格和商品数量以及每件商品的平均价格的信息,我也想使用这些信息。

我的最终目标是根据这些数据创建一个推荐系统,根据其他订单返回一个推荐列表。

【问题讨论】:

  • 您是否尝试过与 KNeighborsClassifier 不同的其他 ML 模型?回归,支持向量机,...
  • @rgralma 我尝试过回归。我还没有尝试过 SVM 或 RandomForest。我的最终目标是根据我拥有的数据制作一个推荐系统。

标签: python machine-learning scikit-learn recommendation-engine


【解决方案1】:

首先,我建议将您的评估方法更改为加权 F1 分数 https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html - 确保选择“加权”选项以解决标签不平衡问题。这个分数非常适合您的问题。

其次,我会尝试一些其他模型,KNN 是一个好的开始,但它可能无法找到合适的决策边界来分离您的问题。也许尝试随机森林和/或新的 histgradientboostingclassifier(类似于 lightgbm 方法)。

您也可以尝试重新表述您的问题,并尝试将其作为推荐问题来解决,也许您可​​以使用一些矩阵分解技术,这似乎很有帮助,因为您发布的格式的数据通常非常稀疏(很多 0 )。

【讨论】:

  • 走推荐者路线是我的最终目标。我想看看哪个项目最适合我询问的某些客户。你还会建议和这里一样吗?
  • 是的,推荐人绝对适合这种方法。我真的可以为 python 推荐 LightFM :)
【解决方案2】:

那里可能有很多零!使用下面的一小段代码示例来查找数据集中零的百分比。

df_missing = df.isna()
df_num_missing = df_missing.sum()
print(df_num_missing / len(df))
print(df.isna().mean().round(4) * 100)

我不知道您的阈值是多少,但我推测如果 50% 或更多为零,那将是一个非常无用的功能。您可以获取非零记录的子集。

df.drop(df[df['number_of_orders'] == 0].index,inplace=True)

试试看,看看你们相处得如何。另外,试试其他人的建议。一些算法在处理零、空值等方面非常聪明。我相信随机森林(回归和分类)即使在数据集大多是垃圾的情况下也非常强大。

【讨论】:

  • 谢谢!我的方法有很多零,我可以看到大约 95%,因为我已经将所有客户与每个项目混合并匹配,这会产生很多零。我的最终目标是以此为基础构建一个推荐系统
猜你喜欢
  • 2018-07-12
  • 1970-01-01
  • 2017-09-21
  • 2017-12-14
  • 2021-10-01
  • 1970-01-01
  • 2017-10-09
  • 2017-07-15
  • 2018-06-12
相关资源
最近更新 更多