algorithm - 内容相关搜索:对购物产品进行分类

标签 algorithm machine-learning classification

我有一个新的任务(不是传统的)从我的客户,它是关于机器学习。
因为我从来没有去过“机器学习”,除了一些数据挖掘的小东西,所以我需要你的帮助。
我的任务是根据性别(产品所属的人)、年龄组等对任何购物网站上的产品进行分类,我们可以得到的培训数据是产品的标题、关键字(在产品页面的html中提供)和产品描述。
我做了很多研究和开发,我发现了图像记录api(cloudsight,vufind),它返回了产品图像的细节,但没有完全满足需要,使用google suggestquerys,搜索了许多机器学习算法,最后。。。
我开始了解“决策树学习算法”,但不知道它如何适用于我的问题。
我试过“PlayingTennis”数据集,但不知道该怎么做。
你能告诉我从哪里开始这段旅程的方向吗?我应该专注于决策树学习算法,还是有其他算法你会建议我应该专注于根据上下文对产品进行分类?
如果你说的话,我会详细地分享我寻找的东西来解决我的问题。

最佳答案

我建议如下:
查看数据集中的项目并手动对其进行分类(确定每个项目的性别)存储每个决策,以便能够以某种方式将原始数据集中的每个项与目标类链接起来。
开发一种算法,将数据集中的每个项转换为特征向量。此算法应该能够将原始数据集中的每个项转换为一个数字向量(稍后将详细介绍如何进行转换)。
将包含适当类的所有数据集转换为如下所示的数据集:
特征1,特征2,特征3,…,性别
值1,值2,值3男性的
将它存储在csv文件中是一个不错的决定,因为您可以在不同的机器学习工具中加载和处理它(稍后将详细介绍这些工具)。
加载您在选择的机器学习工具的步骤3中创建的数据集,并尝试提出可以按性别对数据集中的项进行分类的最佳模型。
在步骤4中创建的存储模型它将成为你生产系统的一部分。
开发一个产品代码,可以转换一个未分类的产品,从中创建特征向量,并将此特征向量传递到您在步骤5中保存的模型手术的结果应该是一个预期的性别。
细节
如果原始数据集中有太多的项目(比如上万个),那么自己对它们进行分类可能是不切实际的。你能做的就是用Amazon Mechanical Turk来简化你的任务。如果你不能使用它(上次我检查你必须有一个美国地址才能使用它),你只需对几百个项目进行分类,就可以开始处理你的模型,并对其余项目进行分类,以提高分类的准确性(你使用的训练数据越多,准确性越好,但在一定程度上)
如何从数据集中提取特征
如果关键字的形式类似于tag=true/false,则它是一个布尔特性。
如果关键字的形式类似于tag=42,则它是一个数字或ordinal。例如,它可以是价格值或价格范围(0-10、10-50、50-100等)
如果关键字的形式类似于tag=string\u值,则可以将其转换为into a categorical value
类(gender)只是布尔值0/1
您可以尝试一下如何提取特征,因为它可能会影响结果的准确性。
如何从产品描述中提取特征
有不同的方法可以将文本转换为特征向量。寻找TF-IDF算法或类似的东西。
机器学习工具
您可以使用现有的机器学习库中的一个,并破解加载CSV数据集的一些代码,训练模型并检查其准确性,但首先我建议使用诸如“AA>”之类的东西。它有或多或少的直观用户界面,你可以很快开始尝试不同的机器学习算法,将数据集中的不同特性从字符串转换为类别,或者从实际值转换为序数值,等等。以编程方式训练模型等。
选择什么算法
我建议使用决策树算法,比如Weka。它速度快,在广泛的机器学习任务中显示出良好的效果。此外,您还可以使用C4.5有多种算法可以组合多种算法,例如(google用于boosting或random forest以查找更多信息),通常它们会给出更好的结果,但工作得更慢(因为需要通过多种算法运行单个特征向量)。
另一个使算法更精确的技巧是使用处理不同特征集的模型(例如,一个算法使用从标记中提取的特征,另一个算法使用从产品描述中提取的数据)然后,您可以使用ensemble of classifiers等算法将它们组合起来,得出最终结果。
对于基于从文本中提取的特征的分类,可以尝试使用stackingNaive Bayes algorithm。它们在文本分类中都显示出良好的效果。

关于algorithm - 内容相关搜索:对购物产品进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30935935/

相关文章:

python - BERT 微调后得到句子级别的嵌入

time - 多元时间序列分类

javascript - 调车场算法的问题

c++ - 如何使用 std::binary_search 或 std::sort 对结构数组进行排序

machine-learning - LSTM 训练模式

machine-learning - TensorFlow 中动态改变权重

python - 如何正确绘制训练集和验证集的损失曲线?

C# 机器学习和多标签分类

同步条目顺序的算法

javascript - 如何在不进行切换的情况下计算出正确的数字?