【问题标题】:Contextual Search: Classifying shopping products上下文搜索:对购物产品进行分类
【发布时间】:2015-09-05 07:21:16
【问题描述】:

我从我的客户那里得到了一个新任务(不是传统的),它是关于机器学习的。 因为除了一些数据挖掘的小东西,我从来没有接触过“机器学习”,所以我需要你的帮助。

我的任务是根据性别(产品所属的人)、年龄组等对任何购物网站上出现的产品进行分类,我们可以拥有的训练数据是产品的标题、关键字(在 html 中可用产品页面)和产品描述。

我做了很多研发,我找到了返回产品图像详细信息但没有完全满足需求的 Image Recog APIs(cloudsight,vufind),使用了谷歌建议查询,搜索了许多机器学习算法,最后。 ..

我开始了解“决策树学习算法”,但不知道它如何适用于我的问题。 我尝试了“PlayingTennis”数据集,但不知道该怎么做。

你能给我一些方向,从哪里开始这个旅程?我应该专注于决策树学习算法还是您建议我应该专注于根据上下文对产品进行分类的其他算法?

如果你说,我会详细分享我搜索的内容以解决我的问题。

【问题讨论】:

  • 您希望将产品分类到哪些类别?产品页面有哪些关键词?
  • 我想根据性别对它们进行分类,即分析产品标题/描述,我想评估该产品是男性还是女性。
  • 你有训练数据集吗?如果是,该集合中的训练实例是否标有预期性别?例如。如果你的数据集中有一个产品,你知道这个产品是男性还是女性?
  • 根据人类的感觉,我知道这个产品是男女用的,比如bloomingdales的“John Varvatos USA Peace Polo - Slim Fit”衬衫,是男装的,我不知道计算机。以下是该产品的链接,www1.bloomingdales.com/shop/product/… 现在,我想要计算机使用链接上的描述和其他数据来确定该产品所属的性别。我正在寻找方法,但没有成功。

标签: algorithm machine-learning classification


【解决方案1】:

我建议执行以下操作:

  1. 检查数据集中的项目并手动对它们进行分类(确定每个项目的性别)。存储每个决策,以便您能够以某种方式将原始数据集中的每个项目与目标类相关联。
  2. 开发一种算法,将数据集中的每个项目转换为特征向量。此算法应该能够将原始数据集中的每个项目转换为数字向量(稍后将详细介绍如何执行此操作)。
  3. 将所有具有适当类的数据集转换为如下所示的数据集:

Feature_1、Feature_2、Feature_3、...、性别

value_1, value_2, value_3, ... 男性

将它存储在 CSV 文件中是一个不错的决定,因为您可以加载它并在不同的机器学习工具中进行处理(稍后会详细介绍)。

  1. 在您选择的机器学习工具中加载您在第 3 步创建的数据集,并尝试提出可以按性别对数据集中的项目进行分类的最佳模型。

  2. 在第 4 步创建的商店模型。它将成为您生产系统的一部分。

  3. 开发一个可以转换未分类产品的生产代码,从中创建特征向量并将此特征向量传递给您在步骤 5 中保存的模型。此操作的结果应该是预测的性别。

详情

如果您的原始数据集中的项目太多(比如数万个),那么您自己对它们进行分类可能是不切实际的。您可以做的是使用Amazon Mechanical Turk 来简化您的任务。如果您无法使用它(上次我检查您必须有一个美国地址才能使用它),您可以对数百个项目进行分类以开始处理您的模型,并对其余项目进行分类以提高分类的准确性(你使用的训练数据越多,准确率就越高,但在一定程度上)

如何从数据集中提取特征

如果关键字的形式类似于 tag=true/false,则它是一个布尔特征。 如果关键字的形式类似于 tag=42,则它是一个数字或 ordinal。例如,它可以是价格值或价格范围(0-10、10-50、50-100 等) 如果关键字的格式类似于 tag=string_value,您可以将其转换为 into a categorical value 一个类(性别)只是布尔值 0/1 您可以尝试一下如何提取特征,因为它可能会影响结果的准确性。

如何从产品描述中提取特征

有多种方法可以将文本转换为特征向量。寻找TF-IDF算法或类似的东西。

机器学习工具

您可以使用现有的机器学习库之一并编写一些代码来加载您的 CSV 数据集、训练模型并检查准确性,但首先我建议使用类似 Weka 的东西。它具有或多或少的直观 UI,您可以快速开始尝试不同的机器学习算法,将数据集中的不同特征从字符串转换为类别,或从实际值转换为序数值等。Weka 的好处在于它具有 Java API,因此您可以自动化所有数据转换过程,以编程方式训练模型等。

选择什么算法

我建议使用像C4.5 这样的决策树算法。它速度很快,并且在广泛的机器学习任务上显示出良好的结果。此外,您可以使用ensemble of classifiers。有多种算法可以组合多种算法,例如(google for boosting 或 random forest 以了解更多信息),通常它们会提供更好的结果,但工作速度较慢(因为您需要通过多种算法运行单个特征向量。

您可以用来使您的算法更准确的另一个技巧是使用适用于不同特征集的模型(例如,一种算法使用从标签中提取的特征,而另一种算法使用从产品描述中提取的数据)。然后,您可以使用 stacking 等算法将它们组合起来,得出最终结果。

对于基于从文本中提取的特征进行分类,可以尝试使用Naive Bayes algorithmSVM。它们在文本分类中都表现出很好的效果。

【讨论】:

    【解决方案2】:

    请考虑支持向量分类器 (SVC),或者为了 Google 的缘故考虑支持向量机 (SVM)。如果您有一个大型训练集(我怀疑),请搜索“快速”或“可扩展”的实现。

    【讨论】:

    • 谢谢您的回答,让我检查一下并回复您。
    • 回来,您能否详细解释一下我的问题,即将任何购物产品(如“Polo T 恤”)分类为男性/女性类别的一些描述。实际上,您的答案非常笼统,我想要一些特定的答案。什么算法应该帮助我?这样做的方式应该是什么?
    • @SarimJavaidKhan 这个项目进展如何?有你作品的链接吗?
    猜你喜欢
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 2013-03-12
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多