文章目录
一、Tf-idf
二、隐含语义分析
三、PageRank
四、协同过滤
五、Model-BasedCF
推荐算法的应用无所不在。当我们在浏览器上对某个关键词进行搜索后,搜索引擎会返回一系列与该关键词相匹配的网页。匹配结果数以千计,搜索引擎并没有把所有搜索结果都一股脑抛给用户。实际上搜索引擎使用了一种ranking的机制,相关性高的网页的ranking值就会比较高,搜索引擎就会把相关性较高的网页安排到前面。
同样,在市场营销当中,传统营销都是一种较为粗犷的营销。其实我们也可以采用一种较为精准的营销(Targeted Advertisement),根据用户信息和购买历史,构造用户画像,张三是张三,李四是李四,根据其喜好进行针对性推销。
现在处于信息爆炸的时代,有研究表明我们现在一两天所接触的数据量,可能相当于中世纪一个人一生所接触的数据量。如果没有很好的信息过滤机制(推荐算法),我们可能会被互联网海量信息网络淹没。
推荐算法就是帮助我们去寻找我们真正想要商品的一种算法,预测我们会不会喜欢,会给它打几分。
在逛购物软件时,平台给我们的推荐列表都是根据我们历史消费记录或搜索记录产生的,但如果能根据我的喜好来推荐一些我根本不知道的商品,这样的推荐才是我们可能真正想要的。
内容过滤:根据商品属性信息推荐,如书的作者、类型等。
协同过滤:我的同类都买了哪些商品。如果大家都说好,那么就判定我也喜欢。
一、Tf-idf
TF(Term Frequency):特定单词在某文档中出现的概率。
例如,某篇文章中NBA的出现频率特别高,就表明这篇文章可能和篮球、体育等内容有关。
IDF(Inverse Document Frequency):特定单词在所有文档中出现的情况。
例如,the这个单词在所有文章中都出现过,那它的idf 值为0。
Tf-idf:
搜索词在某文档中出现频率高,且在其他文档中不怎么出现,则说明该文档与搜索词匹配度高。
文档的相似度怎么判断呢?
在解决实际问题时,我们会使用一种单词-文档矩阵:
电脑是不会处理文字类型数据的,我们可以把文档转换为向量矩阵。
假如规定10000个关键词,文档p就是一个1行10000列的矩阵,关键词1如果出现5次,就把设置为5。
规定两个文档向量夹角较小时(不管长度),两文档较接近:
向量空间模型存在的问题:
1、近义词:car/vehicle/automobile
2、多义词:applecomputer/apple juice
二、隐含语义分析
基于上述问题,我们提出一种新技术,隐含语义分析(Latent SemanticAnalysis)。将单词和文档向量向新维度投影,以便于类别区分。
其中X是单词-文章矩阵,每一行代表单词,每一列代表文档。把X进行分解,都是正交阵,S是对角阵。
其中T 是的特征向量。用TS的第i行代表第i个单词。
其中D是的特征向量。用DS的第j行代表第j个文档。
例如:
单词-文档矩阵:
我们在进行特征向量计算时,只选取前两维特征向量,因为前两维对应的特征向量较大。
单词在2维空间坐标:
文档在2维空间坐标:
可以看到,C类文章向量之间夹角较小,M类文章向量之间夹角较小。
我们通过LSA分析,再对文档之间的相似度比较。得到前5个文档相似度较高,后4个文档相似度较高,如下图。
如果没用LSA对矩阵维度投影,我们很难从原始数据中看出怎么进行类别划分,如下图。
现在又来了一个新的文档:
文档向量:
根据刚才算的和(k=2)将其降到2维。
再和原文档进行比对:
就可以得到结论:新文档属于C类。
三、PageRank
一个网页的PageRank值越高,说明网页的地位越高,或者说更加可信。
所有网页的PageRank值加起来等于1。
PageRank值取决于其他网页指向该网页的情况,包括指向该网页的网页的PageRank值、指向该网页的网页指向了多少网页。把所有指向该网页的PageRank值加起来就表示为该网页的PageRank值。
PageRank值计算肯定是一个随时间迭代的过程
d为参数,通常取0.85。
例如:
某时刻网页A的PageRank值计算:
可以通过以下的方法来“刷”PageRank值。
四、协同过滤
协同过滤(CollaborativeFiltering),找到一群“品味相同”的人,看看大家的意见。
如下图,协同过滤是基于打分矩阵来推测出空缺值的技术。如下图中的第一个数字4表示User1给I1商品打了分。空白的地方没有打分。
方式一:
用户u 和用户v 的相似度:
预测用户a 对商品i 的打分为:
其中表示用户a 平时打分的平均值。
如
方式二:
我们既可以用人当评判标准,也可以用商品当评判标准。