余弦相似度原理_余弦相似度和欧式距离的组合

余弦相似度原理_余弦相似度和欧式距离的组合MySQL实现协同过滤推荐为用户推荐喜爱的商品1 协同过滤推荐算法1.1 什么是协同过滤协同过滤推荐(Collaborative Filtering Recommendation):分析用户兴趣,在用

MySQL实现协同过滤推荐为用户推荐喜爱的商品   1 协同过滤推荐算法1.1 什么是协同过滤   协同过滤推荐(Collaborative Filtering Recommendation):   分析用户兴趣,在用户群中找到指定用户的相似用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。   简单来说就是,物以类聚,人以群分。基于不同的偏好对用户进行群体划分,并对用户推荐品味相似的商品。   1.2 协同过滤推荐算法可以分为三类:基于用户的协同过滤基于商品的协同过滤基于模型的协同过滤
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   1.2.1 基于用户的协同过滤推荐
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   假设要从用户A没有购买的商品中,选一个商品推荐给用户A,可以分为以下两步:找到与用户A相似的用户群体:上图用户A与用户C都购买了商品1和商品2,所以用户C与用户A的相似度更高,可以划分为同一个用户群体;把群体中用户C购买的商品4推荐给用户A。   基于商品的协同过滤与基于用户的协同过滤内在逻辑基本一致,就不重复描述了。   1.2.2 相似度计算方法   
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   本文主要以 Jaccard 相似度及余弦相似度来计算   Jaccard 相似度公式
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   图表数据 1 代表产生购买行为,0代表没产生购买行为
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   用户 Jaccard 相似度计算结果如下
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   对于用户A的商品喜好程度进行如下计算:   用户A对商品3的喜好程度   = 用户A与B的相似度 * 用户B对商品3的喜好程度 + 用户A与C的相似度 * C对商品3的喜好程度   = 0 * 1 + 0.67 * 0 = 0   用户A对商品4的喜好程度   = 用户A与B的相似度 * 用户B对商品4的喜好程度 + 用户A与C的相似度 * C对商品4的喜好程度   = 0 * 1 + 0.67 * 1 = 0.67   根据用户A对商品3以及商品4的喜好程度高低,最终推荐商品4给用户A。   其他用户的商品喜好程度计算方法类似,就不赘述了。   余弦相似度公式
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   图表数字代表用户对商品的喜好程度,数值越高表示喜好程度越高。
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   用户余弦相似度计算结果如下   
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   用户A对商品3的喜好程度   = A与B的相似度 * B对商品3的喜好程度 + A与C的相似度 * C对商品3的喜好程度   = 0 * 0.45 + 0.307 * 0 = 0   用户A对商品4的喜好程度   = A与B的相似度 * B对商品4的喜好程度 + A与C的相似度 * C对商品4的喜好程度   = 0 * 3 + 0.307 * 4 = 1.228   根据用户A对商品3以及商品4的喜好程度高低,最终推荐商品4给用户A。   其他用户的商品喜好程度计算方法类似。   Jaccard 与 余弦相似度计算的区别:   Jaccard 的计算公式是交集与并集,表现为事件的发生或者没有发生,更符合二分的情况,在偏好程度方面有一定欠缺;   而余弦公式能够很好的反映出用户的偏好程度,所以本文之后都采用余弦相似度进行计算。   2 MySQL 代码实现   2.1 基于用户的协同过滤【测试数据】   为了便于理解协同过滤推荐算法的代码逻辑,在代码实现阶段,先以上述的用户与商品数据作为测试样例,测试代码结果与上述人工计算的结果是否一致,如果结果一致,再将代码平移运用到实际数据当中。   建立测试数据表   导入数据
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   2.2 用户相似度代码实现   2.2.1 实现同一商品用户间的对应关系,余弦相似度 Ai*Ai, Ai*Bi, Bi*Bi   
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   2.2.2 实现商品评价的合计 sum(Ai*Ai)、sum(Ai*Bi)、sum(Bi*Bi)   
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   2.2.3 用户相关矩阵,实现sum(Ai*Bi) / sqrt(sum(Ai*Ai)sum(Bi*Bi))   
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   构建用户相关矩阵视图,方便后续调用   
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   2.3 计算用户对每个商品的喜好程度   
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   上文人工计算的用户A对商品4的喜好程度为1.228,代码计算的为1.229,考虑到计算过程当中因为小数位数的影响,差异可忽略不计。   所以,测试代码可运用于真实数据中。   2.4 为用户推荐一个商品   
余弦相似度原理_余弦相似度和欧式距离的组合
余弦相似度原理_余弦相似度和欧式距离的组合   最终,商品推荐结果如下:   用户A,推荐商品4   用户B,推荐商品2   用户C,推荐商品3   至此,在测试数据上利用MySQL实现协同过滤算法已完成。   计划在下一篇文章,写如何利用协同过滤算法实现如何为用户推荐感兴趣的视频。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/42880.html

(0)
上一篇 2024年 9月 6日 下午5:36
下一篇 2024年 9月 6日 下午5:42

相关推荐

关注微信