上文通过小规模试验,可以顺序在推荐中是有作用的,为什么现行系统中没听说过顺序的存在呢?
首先是数据量,上文的算法,数据量稍大就时间巨长,因为,skip-k其实是大量的增加了数据量(每次*k),而Apriori是每次消去一部分,数量不定。最终结果很可能会出现爆棚的情况。
其次是数据稀疏,使用skip-k,其实只是把很少的组合可能合并到了一起(k个),有如此相似的行为的人其实放到再大的基数里也不会很多,不能通过数据量增加推荐的可信度。
再有就是很难使用现有经典算法,协同过滤,神经网络。
其实阿里的系统是用到了时序的,只不过很隐晦。是将行为以一段时间(周)为周期,合并为一个行为向量。把数个向量连接到一起,进行线性回归,得到最终的推荐。这是一个屌爆的想法:一段时间的向量类组合,可以很好的规避了skip k这种过于精确的组合导致的数据爆炸和数据稀疏的问题。而顺序组合不同大时间段的行为向量,又成功的把时间作为衡量推荐的维度,这样的check and balance的算法真心跪拜!同时,由于时间段取的不同,很容易把稀疏的数据通过多次截取(5-7月,6-8月),重复利用。
对,使用的是线性回归,这个最最简陋的机器学习方法。为什么呢?首先,协同过滤是用不了的,因为时间在,对应的位置的距离并无实际含义。相反,A 7-9月的行为和B 10-12月的行为是相似的更有价值。这样又是子串问题,又会有数据爆炸的危险。像聚类啊这些,其实跟协同过滤是相同的思路和算法的。其次,使用神经网络,神经网络具有很神奇的理解能力,能够把这种数据很好的组合在一起,形成最终结果。但是总物品数的n倍的输入,即使是深度学习也可能有点大吧。