机器学习之路(五)协同过滤及SVD算法

     基本概念:

     协同过滤(Collabortive Filtering),通过用户和产品以及用户的偏好信息产生推荐产品的策略。基本的有两种:一是找到相同喜好的人所钟爱的产品,即基于用户的推荐。另一种是根据一个人喜欢的产品推荐类似的产品,即基于产品的推荐。利用用户以及物品的信息来预测用户的喜好,并且发觉用户可能会喜欢的类似产品或者是喜欢产品的相关产品,这就是推荐系统的核心思想。

    模型及算法:

  •     数据预处理与UI矩阵  
  •     推荐模型:UserCF 和ItemCF
  •     KMeans计算相关性
  •     SVD计算相似性

1. 数据预处理

      在收集完数据,数据预处理是极其必要的,最常用的方法就是减噪和归一化,减噪是通过过滤算法去除数据中存在的噪声,一般是聚类过程中产生的离散点。归一化是平衡不同特征数据的差异,比如体重和年龄之间数值差异较大,为了统一量化,使不同的特征数据都集中在相同的取值范围内,使得模型训练更加准确。

      聚类时常用的算法是KMeans,这是一种典型的基于距离的排他的划分方法。对于给定的训练集,可以对数据集进行k维划分,每一个划分就是一簇,也就是一个类别。同时还要满足,每个组至少包含一个对象,每个对象必须且仅属于一个组。

      UI(User Item)用户偏好矩阵

      使用sklearn的KMeans聚类算法:

      

import numpy as np
from Recommond_Lib import *
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

k = 4
dataMat = loadSet("testData/trainSet.txt")
#dataMat要转换为矩阵形式
kmeans = KMeans(init='k-means++',n_clusters=4)
kmeans.fit(dataMat)
#绘制图形
drawScatter(dataMat,size=20,color='b',mrkr='.')
d
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮的开心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值