2017-07-26 102 views
0

我有大约2-3百万个产品。每个产品遵循这种结构正确使用机器学习算法根据内容而不是用户历史找到类似产品的方法

{ 
    "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银,我将展示这些产品的“同类产品推荐”

1)苹果iPhone 6S黄金或其他颜色

2)苹果iPhone 6S加选项

3)苹果iphone 6S与其它构造

4)其他苹果的iPhone

选项10

5)其他智能手机在这个价格范围内

我已经试过到目前为止

A)我曾尝试使用“user view event”推荐同类产品,但我们做的并不好数据。它的结果很好,但只有很少的产品。所以这个模板不适合我的用例。

B)One hot encoder + Singular Value Decomposition (SVD) + Cosine Similarity

我已经训练我的模型周边25万的产品尺寸= 500prediction io template的修改。它给出了很好的结果。我没有在培训中包含产品的长篇描述。

但我在这里

1)有一些问题是使用One Hot EncoderSVD是在我的使用情况下,正确的做法?

2)是否有任何方法或技巧在训练中给予额外的权重titlebrand属性。

3)你认为它是可扩展的吗?我试图将产品尺寸增加到1百万,尺寸= 800-1000,但是它谈论了很多时间,系统挂起/停顿或内存不足。 (我使用的是Apache预测io)

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

5)需要多少内存才能部署SVD受过训练的模型,以便为200万个产品查找内存中的cosine similarity


我应该我在用例使用,这样我也可以给一些体重对我重要的属性,我会得到合理的资源良好的效果。在这种情况下,我应该使用什么样的最佳机器学习算法。现在

+0

你能告诉我什么维度的确切含义吗? – Abhimanyu

+0

我在部署时遇到此错误 [错误] [LocalFSModels]请求的数组大小超过VM限制 [错误] [OneForOneStrategy]无.get 我的训练数据集数为400k,我的维数为500 – Abhimanyu

回答

1

,我已经说了自己的反对张贴,我给出的问题的一些指导:

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