Machine learning 使用机器学习算法完全基于内容而非用户历史查找类似产品的正确方法

Machine learning 使用机器学习算法完全基于内容而非用户历史查找类似产品的正确方法,machine-learning,similarity,tf-idf,svd,predictionio,Machine Learning,Similarity,Tf Idf,Svd,Predictionio,我有大约200-300万种产品。每个产品都遵循这种结构 { "sku": "Unique ID of Product ( String of 20 chars )" "title":"Title of product eg Oneplus 5 - 6GB + 64GB ", "brand":"Brand of product eg OnePlus", "cat1":"First Category of Product Phone", "cat2":"Sec

我有大约200-300万种产品。每个产品都遵循这种结构

{
    "sku": "Unique ID of Product ( String of 20 chars )"
    "title":"Title of product eg Oneplus 5 - 6GB + 64GB ",
    "brand":"Brand of product eg OnePlus",
    "cat1":"First Category of Product Phone",
    "cat2":"Second Category of Product Mobile Phones",
    "cat3":"Third Category of Product Smart Phones",
    "price":500.00,
    "shortDescription":"Short description about the product ( Around 8 - 10 Lines )",
    "longDescription":"Long description about the product ( Aroung 50 - 60 Lines )"
}
问题陈述是

仅根据内容或产品数据查找类似产品。因此,当电子商务用户单击某个产品(SKU)时,我会在推荐中显示与该SKU或产品类似的产品

例如,如果用户点击苹果iphone 6s silver,我将在“类似产品推荐”中展示这些产品

1) 苹果iphone 6s金色或其他颜色

2) 苹果iphone 6s plus选项

3) 苹果iphone6s选项与其他配置

4) 其他苹果iPhone

5) 该价格范围内的其他智能手机

到目前为止我所尝试的

A) 我曾尝试使用“”来推荐类似的产品,但我们没有那么好的数据。它的结果很好,但只有很少的产品。所以这个模板不适合我的用例

B)
一个热编码器
+
奇异值分解(SVD)
+
余弦相似性

我已经对我的模型进行了约25万种产品的培训,其中维度=500,并对其进行了修改。它正在产生良好的效果。我没有在培训中详细介绍产品

但我这里有一些问题

1) 使用
一个热编码器
SVD
在我的用例中是正确的方法吗

2) 是否有任何方法或技巧可以在培训中增加
标题
品牌
属性的权重

3) 你认为它是可伸缩的吗。我正在尝试将产品大小增加到100万,并且维度=800-1000,但它占用了大量时间,并且系统挂起/暂停或内存不足。(我正在使用ApachePrediction io)

4) 当我想培训200万种产品时,我的维度值应该是多少

5) 部署
SVD
训练模型需要多少内存才能在内存中找到200万个产品的
余弦相似性



我应该在我的用例中使用什么,这样我也可以给我的重要属性一些权重,并且我将使用合理的资源获得好的结果。在这种情况下,我应该使用什么样的最佳机器学习算法。

既然我已经声明了我对该帖子的反对意见,我将对以下问题提供一些指导:

  • “正确的方法”在ML中通常不存在。最高裁决者是结果是否具有您需要的特征。最重要的是,你需要的是准确度吗?你能找到更好的方法吗?如果没有您的数据集的重要子集,我们无法判断
  • 对。大多数训练方法都会调整任何改善误差(损失)函数的因素。如果您选择的方法(SVD或其他)没有自动执行此操作,请更改错误函数
  • 是的,它是可伸缩的。基本推理过程与数据集大小呈线性关系。结果很差,因为在放大数据集时没有放大硬件;这是“放大”的一部分。您也可以考虑扩展(更多的计算节点)。
  • 那么,维度应该如何与数据库大小进行缩放?我相信经验证据支持这是一个对数(n)关系。。。你需要600-700的尺寸。但是,您应该根据经验确定这一点
  • 这取决于你如何使用结果。根据您所描述的,您所需要的只是一个排序的N顶级匹配列表,它只需要引用和相似性(一个简单的浮点)。与模型大小相比,这是微不足道的内存,仅为N*8字节

  • 你能告诉我dimension exact的意思吗?我在部署[error][LocalFSModels]时遇到此错误,请求的数组大小超过VM限制[error][OneForOneStrategy]无。get我的训练数据集计数是400k,我的维度是500