机器学习算法如何解决这个特定问题?

数据挖掘 机器学习 xgboost
2022-03-12 05:48:40

让我们考虑一个列出待售产品的电子商务网站的案例。现在,一个人可以进入特定的产品页面并决定是否将其添加到购物车中。如果我们将其视为一个分类问题,那么产品的规格可以是其功能(例如,手机、相机分辨率、屏幕尺寸、价格、保修期)以及客户点击的特定产品页面视图是否添加到购物车按钮可以是成功标准(分类标签)。

观察结果是,对于同一组功能,X 表示产品页面视图,很少有客户点击添加到购物车按钮(y = 1)。这意味着对于相同的 X,会有很多 Y=0 而很少有 Y=1。

我的同行说,像 XGBoost 这样的机器学习算法将能够对此进行分类。虽然我不相信算法将如何预测 X 和 Y 将是 1,而实际上它本身只有很小的机会成为 1,因为许多客户不会将其添加到购物车中。

我知道它会给我一个 y 为 1 的概率分数,但这太低而无法使用。

2个回答

我知道它会给我一个 y 为 1 的概率分数,但这太低而无法使用。

鉴于您对输入数据的描述,正如您所解释的那样,它只是产品的规格(并且隐含地表示您正在为以某种方式到达产品页面的用户进行分类),那么这是您能做的最好的事情。您根本没有关于用户的动机和历史的数据,这些数据将使您能够比给定产品统计数据的平均购买概率进一步细化。

如果您可以访问有关访问者的数据、他们访问过的其他页面、以前的购买、他们是否从特定广告或搜索结果中点击等功能,那么您可能能够进一步细化该值。然而,即使有这种支持数据,您仍然无法预测明确的“将购买”与“不会购买”——相反,您可以将通用 p=0.01 细化为个性化范围 p= 0.0001 到 p=0.05,具体取决于用户详细信息。

这种概率变化仍然可以成功地用于广告和销售渠道。例如,在决定投放什么广告时,0.01 和 0.05 概率之间的差异是使用网站广告部分的效率提高的 5 倍。诀窍是找到利用信息的正确方法。

通常,您无法可靠地预测用户会在网站上购买手机等产品。隐藏变量太多。所以不要试图设计依赖于直接是/否预测的系统。

它看起来是一个有趣的项目。如果我没有错,您想预测特定用户是否将特定产品添加到他/她的购物车(目标 = 1)或不(目标 = 0)。在这个项目中使用数据科学概念是一个很棒的主意。

从我的角度来看,首先,您应该浏览您的数据以手动分析它并尝试收集尽可能多的隐藏数据。你做的分析越多(电子商务),你就会得到越多的数据。好吧,我不是电子商务领域的专家,但可以说例如一天的类型(节日或工作日)或特定的用户历史可能对这个系统有用。

完成此操作后,您应该尝试填充缺失的数据(如果您有一些数据缺失),而不是仅仅忽略这些数据。然后,您应该绘制一些数据图表,以了解所有特征如何相互关联。这可能会帮助您分析哪些是重要功能。例如,通过查看图表,您可能会看到特定产品的销量随着该产品的受欢迎程度而增加。matplotlib并且seaborn是执行此操作的最佳库。

接下来也是最重要的一步是将机器学习模型应用于目标数据的预测(是/否)。

很明显,您将获得大多数数据为否 (y = 0)。因此,您的训练数据中有不平衡的数据集。正如您的同行所建议的那样,XGBoost 将是分类不平衡数据的最佳选择。现在,您应该在拟合模型之前对您的数据进行小幅修改。您可以通过在 (y = 1) 类上增加权重来调整目标数据的权重。

  weights = np.zeros(len(y_train))
  weights[y_train == 0] = 5
  weights[y_train == 1] = 10  

我认为您也可以cross-validation仅在您的训练数据上尝试(5 倍)。F1-Macro使用分数来查找准确性和评估模型 也很好。

你一定要试试这个东西。最后,您可能会获得比您预期更多的好处。您还可以使用这些数据稍后在您的电子商务网站上制作产品推荐系统。