郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(一)推荐系统概述...

  4.1 推荐系统概述

  4.1.1 从亚马逊网站认识推荐系统

  4.1.2 推荐系统架构

  

  第一部分 推荐系统至少三个推荐方:

  物品信息、用户信息、用户对物品或者信息的偏好

  第二部分 算法区域:推荐模型

  基于人口统计学的推荐机制、基于内容的推荐、基于协同过滤的推荐(基于项目、基于用户)、基于隐语义的推荐模型

  4.2 协同过滤及其算法

  4.2.1 协同过滤(略)

  4.2.2 数据预处理

  4.2.3 使用Scikit-Learn的KMeans聚类

  4.2.4 User CF 原理

  基于用户的协同过滤算法

  4.2.5 Item CF原理

  基于物体的协同过滤算法

  4.2.6 SVD原理与计算

  使用余弦定理求用户之间的相似度,即选中与新用户之间夹角最小的那个。

  

#coding:utf-8

from numpy import *

eps = 1.0e-6                    #避免除0
def cosSim(inA,inB):           #夹角余弦定理
    denom = linalg.norm(inA)*linalg.norm(inB)
    return float(inA*inB.T)/(denom+eps)

#加载数据
A = mat([[5,5,3,0,5,5],
        [5,0,4,0,4,4],
        [0,3,0,5,4,5],
        [5,4,3,3,5,5]])
new    = mat([[5,5,0,0,0,5]])    #新加入的User E
U,S,VT = linalg.svd(A.T)
V      = VT.T
Sigma  = diag(S)
r      = 2                      #取前两个奇异值
#得到近似后的U、S、V值
Ur     = U[:,:r]
Sr     = Sigma[:r,:r]
Vr     = V[:,:r]
newresult = new*Ur*linalg.inv(Sr)  #计算User E的坐标值
print newresult

maxv   = 0                      #最大的余弦值
maxi   = 0                      #最大值下标
indx   = 0
for vi in Vr:                  #计算最近似的结果
    temp = cosSim(newresult,vi)
    if temp >maxv:
        maxv = temp
        maxi = indx
    indx += 1
print maxv,maxi

 

转载于:https://www.cnblogs.com/wuchuanying/p/6249709.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值