zoukankan      html  css  js  c++  java
  • 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(一)推荐系统概述

      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
  • 相关阅读:
    奔溃瞬间1
    面试知识点blog汇总
    贪心
    树 和 图
    DFS 和 BFS
    STL
    哈希表
    手写堆
    并查集
    二项式反演学习笔记
  • 原文地址:https://www.cnblogs.com/wuchuanying/p/6249709.html
Copyright © 2011-2022 走看看