ItemCF与UserCF协同过滤算法简单入门和一般过程

这是一篇简单的协同过滤算法简介

协同过滤算法,对这个名词稍有了解就知道其应用范围之广,常见的淘宝、京东上的商品推荐,再比如网易云音乐的每日新歌推荐,都采用了基于协同过滤的思想。这个算法神奇之处和缺点本篇文章不过多讨论,这里仅介绍协同过滤的一般实现方法,想必也是应用派最为关注的问题。
主要步骤,为以下几点:

  • 获取特征
  • 降噪
  • 归一化
  • 计算相似性
  • 筛选邻居
  • 构建相似矩阵
  • 实现推荐

在详细介绍各个步骤之前,读者需要建立一个认知,那就是协同过滤的用处。比如,将场景落实到音乐推荐上,那么就是为了当某用户打开音乐APP或者网页的时候,推荐ta听更多ta还没听过的歌。总共分7步,接下来一一详细介绍。

获取特征

简单来说,特征是用户与物品之间连接的属性。
举些例子:
用户小A收听了音乐《甜蜜蜜》。
用户小A给电影《甜蜜蜜》打了5分。
用户小A将编号89757的商品放入了购物车。
……
以上例子中收听、打分、加入购物等就是特征。根据情况的不同,特征的值会有不同,可以设定为收听时值是1,没有收听是0(二分法);还可以设定为打分为5则是五分,打分为1则是一分(具体值法),这些可以根据实际情况来设定。
通过上述方式,我们最后会得到一组数据,就是用户与物品之间的全量关系。
ItemCF与UserCF协同过滤算法简单入门和一般过程_第1张图片

降噪

降噪的意思就是处理掉噪音数据。
由于获取特征值往往是用计算机自动实现,可能会出现错误值或缺失值的情况,那么这种情况下需要将异常值剔除掉,简称降噪。

归一化

归一化的意思是将特征值用统一的标杆对齐。
假如特征值里既有用年为单位计数的,也有用秒来计数的,那么数据计算出来就奇怪了。
这个步骤跟降噪一样都是必不可少的,没有什么技巧性的。

计算相似性

计算相似性,根据协同过滤维度不同,UserCF那么就是用户之间的相似性,ItemCF那么计算计算物品之间的相似性。
那么究竟什么是相似性呢,这个扩展开来方式有很多种,这里不过多介绍,仅用欧氏距离的方式来作为案例介绍,以后专门用一篇文章来对比不同的相似性算法。
欧式距离=特征值差平方的开根号值。
用上文图片中的数据为例,user1和user2的欧式距离为:
Distance(user1-user2)= √(0-1)^2+(1-1)^2+(1-1)^2+…+(1-0)^2
item1和item2之间的欧式距离为:
Distance(item1-item2)= √(0-1)^2+(1-1)^2+(1-1)^2+…+(0-0)^2

注意差别哦,一个是横向的一个是纵向的,如果读者了解一些矩阵相关的知识,就更容易理解这里距离的算法啦。

得到欧式距离之后,相似性就很简单了:
Similarity = 1/(1+Distance)
如上,则当Distance=0相似性为1,Distance无穷大时,相似性接近0。由一及广,则可以两两计算物品与物品之间,或用户与用户之间的相似性,最终可以获得一个对称矩阵。

ItemCF与UserCF协同过滤算法简单入门和一般过程_第2张图片

图片仅展示物品之间的关系,用到用户上也是如此。

筛选邻居

有了物品或用户两两之间的相似值,则可以选择每个物品或用户的邻居物品或用户。
如果设定好了邻居个数为X,那么在N-1个item中相似性topX的item为其邻居;如果设定了邻居的最小相似性simy,那么N-1个item中相似性大于simy的为邻居。筛选邻居可以降低矩阵的负责程度和噪音,也可以在最后实现推荐的时候确定推荐物品的个数。

构建相似矩阵

在步骤计算相似性的最终结果,就是本部分需要的相似矩阵。在某些情况下经过筛选邻居,会将原始的相似性矩阵进行降维,如将矩阵中0只过多的item去掉。
比如在计算时尚女装的推荐时,发现跟钢材工具类物品相似性极低,则在全量的相似矩阵剔除掉钢材工具物品的部分。相当于去掉矩阵中0向量。
这里写图片描述
—>
这里写图片描述

至此所有准备工作就已经完成了。

实现推荐

实现推荐就是根据相似矩阵和用户已经有的物品特征关系来计算的,读者需要知道一点矩阵相乘的知识啦。

ItemCF与UserCF协同过滤算法简单入门和一般过程_第3张图片

如上图相乘的结果,每一行代表用户对item1-N的倾向性,然后根据数据值的大小,选择相应的item进行推荐。在本案例中,如Item1的值为1.3是最大的,则加入到推荐列表。

好啦,协同过滤的主要过程大抵如此,是不是很简单,赶快用手头的数据和工具用起来吧~~

你可能感兴趣的:(机器学习,数据挖掘)