【机器学习】【SVD-4】SVD在推荐(策略:TopOne)系统中的应用简介 + 示例展示 + Python代码实现

1.SVD奇异值分解的基本原理介绍

参见前面博客:SVD奇异值分解的基本原理介绍

2.降维后的数据矩阵的数据相关性

有了SVD降维后的用户对商品评分的矩阵后,现在有一个新的用户,怎么利用降维后的评分矩阵为此新用户给出个性化推荐商品呢?这时候就需要利用数据矩阵的数据相关性了。

单刀直入,直接给出数据相关性的求解思路。

Step1:求出原评分矩阵的降维矩阵

 [[ 5.28849359  5.16272812  0.21491237  4.45908018]
 [ 3.27680994  1.90208543  3.74001972  3.80580978]
 [ 3.53241827  3.54790444 -0.13316888  2.89840405]
 [ 1.14752376 -0.64171368  4.94723586  2.3845504 ]
 [ 5.07268706  3.66399535  3.78868965  5.31300375]
 [ 5.10856595  3.40187905  4.6166049   5.58222363]]

Step2:新用户的评分数据

newUser = np.array([5,5,0,0,0,5])

Step3:确定计算相似度的距离函数

关于机器学习中距离表示的方法有多中,详见以前博客:【机器学习】5种距离度量方法详解+Python实现([]+lambda+np.frompyfunc+向量法等多种方法实现)

为了方便讲解,我这里用了简单的欧氏距离,其实效果更好的可能是夹角余弦,都可以,在实际项目中要按照不同性质的评分矩阵,选取最合适的距离方法,上面博客提供了5中方法供挑选。

    def _EM(self, userA, userB):
        '''计算A和B用户的相似度,使用欧氏距离
        :param userA,用户A给所有商品的评分序列
        :param userB,用户B给所有商品的评分序列
        :return userA和userB的相似度
        Note: userA和userB的评分行为的相似度,距离越小,相似度越高
        '''
        C = userA - userB
        em = np.sqrt(sum(np.multiply(C,C)))
        return em

Step4:求出新用户和所有旧用户的相似度,找出最高相似度的旧用户

最后求得新用户评分数据和上面4个旧用户评分数据的欧氏距离为:

[5.8309518948453007, 7.6157731058639087, 8.3666002653407556, 6.6332495807107996]

可知欧氏距离越小,新用户和此旧用户的相似度越高,可知新用户和第一个旧用户的评分行为相似度最高,即:

新的用户评分数据: [5 5 0 0 0 5] 和第一个旧用户的评分数据[5,5,3,0,5,5]的评分行为相似度最高,即他们俩的相关性最高~

这里求得和新用户评分行为相关性最高的用户,就是第一个老客户,其评分数据为:[5,5,3,0,5,5]

到这里你应该了解了数据的相关性以及求解方法了。

3.SVD推荐系统的基本过程

Step1:准备用户对商品评分的评分矩阵

Step2:确定并实现定义相似度的函数,我这里了用例欧氏距离,也可以使用夹角余弦等距离算法

Step3:根据给定的奇异值平方和占比阈值percentage,计算降维的k值,然后通过SVD分解公式得到降维后的评分矩阵

Step4:在降维矩阵中,使用相似度函数找到最高相似度的旧用户数据,找到旧用户评分而新用户未评分的商品

Step5:返回step4中商品的评分表和商品表,作为推荐商品给新用户

4.SVD推荐系统的Python代码(Release版本)

4.1代码


                
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值