Mercari数据集——机器学习&深度学习视角
作者头像
  • jinanlanjiu1
  • 2020-09-16 09:32:13 3

目录

  1. 业务成绩
  2. 误差度量
  3. 机器学习和深度学习的应用
  4. 数据来源
  5. 数据探索性分析 (EDA)
    • 类别名称分析
    • 品牌名称分析
    • 价格分析
    • 描述文字分析
    • 商品条件分析
    • 双变量分析
  6. 现有方法
  7. 数据准备
  8. 模型构建
  9. 结果
  10. 改善RMSLE的尝试
  11. 将来工作
  12. GitHub存储库
  13. 参考文献

1. 业务成绩

Mercari是一家运营于日本和美国的电子商务公司,主要产品是Mercari marketplace应用程序。用户可以通过该应用程序轻松买卖商品。

应用程序允许用户自由选择商品价格,但这也带来了风险,因为过高或过低的价格可能导致亏损。解决这一问题的方法是自动推荐商品价格。因此,Mercari希望为其卖家提供价格建议。

目前的问题是预测商品的价格,这属于回归问题。训练数据中的特征包括商品ID、名称、物品状况、类别、品牌名称、价格、运费以及描述。测试数据中包含所有其他特征,除了价格。

2. 误差度量

误差度量使用均方根对数误差(RMSLE)。RMSLE的计算公式如下:

$$ text{RMSLE} = sqrt{frac{1}{n}sum{i=1}^{n}(log(yi + 1) - log(hat{y}_i + 1))^2} $$

RMSLE的计算代码如下:

python def rmsle(y_true, y_pred): assert len(y_true) == len(y_pred) score = np.sqrt(np.mean(np.power(np.log1p(y_pred) - np.log1p(y_true), 2))) return score

3. 机器学习和深度学习的应用

在当今的人工智能时代,机器学习和深度学习是两个热门词汇。无论是出行预订、医疗诊断、个人助手还是产品推荐,这些技术都在改变我们的生活。我们的任务是通过自然语言处理(NLP)进行价格预测,这属于回归任务。

解决这个问题的方法之一是利用向量化技术,如TF-IDF和BoW,生成固定大小的稀疏向量表示。另一种方法是使用深层NLP架构,如卷积神经网络(CNN)、长短时记忆网络(LSTM)或门控循环单元(GRU),这些网络能够自主学习特征。

4. 数据来源

数据集来自Kaggle,这是一个流行的在线数据科学家社区。

5. 数据探索性分析 (EDA)

5.1 类别名称分析

训练数据集包含1287个类别。类别名称由“/”分隔,包含主类别、子类别1和子类别2。我们将这些类别拆分为三个新列,以便更好地预测商品价格。

5.2 品牌名称分析

共有4807个品牌,其中出现频率最高的前10个品牌如下图所示。

5.3 价格分析

价格分布如下图所示。我们发现大多数商品的价格低于29美元,其中75%的商品价格低于29美元,50%的商品价格低于17美元,25%的商品价格低于10美元。平均价格约为26.7美元。

5.4 描述文字分析

我们绘制了词云图以了解描述文字中的常见单词。这些单词在下图中展示。

5.5 商品条件分析

商品条件分为1到5,其中1代表最佳状态,5代表最差状态。商品状况良好的商品数量较多。

5.6 双变量分析

通过分析价格与其他特征的关系,我们可以更好地进行特征工程。例如,我们发现当商品价格较高时,卖方支付运费的情况较多。

6. 现有方法

一些博客和论文已经提出了解决方案,包括简单的机器学习或深度学习方法。以下是几种方法:

  • MLP: 使用前馈神经网络,可以有效处理稀疏特征。
  • CNN: 使用卷积神经网络和最大池化层,结合预训练的GloVe向量进行词嵌入。
  • LGBM + Ridge: 使用基于树的梯度提升框架LightGBM和岭回归模型。
  • GRU + 2 Ridge: 使用RNN、Ridge和RidgeCV构建关联模型。

7. 数据准备

清理数据

根据参考材料,Mercari网站上的最低价格为3美元。因此,我们保留价格高于3美元的商品。

处理空值/缺失值

我们用适当值填充缺失值。例如,商品描述为空时,我们用“无描述”替代;品牌名称和类别名称为空时,用“缺失”替代。

训练测试集拆分

价格是目标变量。训练数据分为训练集和测试集,测试集占总数据的10%至20%。

缩放目标变量

我们使用sklearn的StandardScaler函数对目标变量进行标准化。

8. 模型构建

8.1 机器学习管道

机器学习管道使用自然语言处理技术,如BoW和TF-IDF,对文本数据进行向量化。我们添加了四个新特征:类别名称拆分、描述文字字数、商品名称长度等。

8.2 深度学习管道

深度学习管道使用递归神经网络(RNN)处理序列数据。我们从商品名称和描述文字中获取文本特征向量,并对其他类别字段进行嵌入。所有这些共同构成了80维特征向量。

9. 结果

通过训练多个模型并进行模型集成,我们获得了较好的结果。模型平均集成技术降低了高方差,提升了模型性能。最终模型在Kaggle竞赛中取得了前10%的成绩。

10. 改善RMSLE的尝试

我们尝试了几种方法来改善RMSLE,包括保留停用词、使用bigram和trigram、过滤价格数据、小批量训练和模型集成。

11. 将来工作

未来的工作可能包括使用多层感知器、结合CNN和RNN处理文本数据,增加更多GRU层或进一步微调模型。

12. GitHub存储库

完整代码可在GitHub上查看:GitHub链接

13. 参考文献

    本文来源:图灵汇
责任编辑: : jinanlanjiu1
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
学习视角深度机器Mercari数据amp
    下一篇