【笔记6-1】数据挖掘:推荐算法
清华大学【数据挖掘:推荐算法】
https://www.bilibili.com/video/av38554878
(一)推荐算法概述
- 为什么需要推荐算法
当前人们生活的社会信息含量巨大,称为信息过载(information overload)在这样的背景下,人们需要从海量的数据中高效的获取与自己最相关的部分,就需要借助推荐算法。
- 什么是推荐系统
用来预测用户对商品的排序和偏好的系统,是数据挖掘技术中最常见的应用实例。一个好的推荐算法甚至能为用户推荐他从来没有见过或者想过要搜索的商品,且该商品是用户感兴趣的或者是能为用户提供帮助的。
- 推荐系统的种类
基于内容的过滤:关注商品本身的特点,根据用户以往喜欢的商品,推荐类似的商品。
协同过滤:基于用户之间的相似性进行推荐
- 实例
精准广告投放(target advertisement,根据用户信息进行精准推荐)
精准音乐推荐(根据用户行为习惯分析用户喜好)
(二)推荐相关算法介绍
1. TF-IDF
- 应用场景:给定一个搜索关键词以及一系列内容,计算两者之间的相关度
- TF:term frequency,词频,表示词汇在文档中出现的频率
t f ( t , d ) = n t , d ∑ k n k , d tf(t,d)=\frac{n_{t,d}}{\sum_k n_{k,d}} tf(t,d)=∑knk,dnt,d - IDF:inverse document frequency,逆文档频率,利用词汇在不同文档中出现的次数计算词汇重要性。分母表示词汇在不同文档中出现过的文档数,分子为文档总数,分母越大说明词汇在多个文档中都有出现,对应的词汇重要性越低,逆文档频率也就越低。
i d f ( t , D ) = l o g ∣ D ∣ ∣ { d ∈ D : t ∈ d } ∣ idf(t,D)=log \frac{|D|}{|\{d\in D:t\in d\}|} idf(t,D)=log∣{ d∈D:t∈d}∣∣D∣ - TF-IDF:同时取决于TF和IDF,说明词汇在文档中出现频率高的同时,要在其他文档中出现地少,才属于重要词汇。一般会构建 term-document matrix 来进行计算。 t f − i d f ( t , d , D ) = t f ( t , d ) ∗ i d f ( t , D ) tf-idf(t,d,D)=tf(t,d)*idf(t,D) tf−idf(t,d,D)=tf(t,d)∗idf(t,D)
2. 向量空间模型(Vector Space Model)
计算机无法直接对文本进行处理,往往需要将文本进行向量形式的表示: p = ( w 1 , p , w 2 , p , . . . , w t , p ) p=(w_{1,p},w_{2,p},...,w_{t,p}) p=(w1,p,w2,p,...,wt,p)向量中的每一维代表一个关键词,可以用0,1代表该关键词在文中是否出现,也可以用关键词出现的次数,或者直接用词汇的tf-idf。
在得到每个文档的向量表示之后,就可以利用向量的一些运算方法来计算文本之间的余弦相似度: s i m ( p , q ) = c o s ( θ ) = p ⋅ q ∣ p ∣ ⋅ ∣ q ∣ sim(p,q)=cos(\theta)=\frac{p\cdot q}{|p|\cdot|q|} sim(p,q)=cos(θ)=∣p∣⋅∣q∣p⋅q两个文本越相似,其向量表示之间的夹角越小,对应的余弦相似度就越大。
但是,直接利用tf-idf来计算文本相似性存在一定的缺陷,对于同义词或者多义词的情况,就会对计算的结果产生影响。(同义词可能导致召回率低,多义词则可能导致准确率低)为了解决这一问题,提出了新的解决方法如SVD,矩阵分解对文本进行降维表示。
3. 隐含语义分析(LSA, Latent Semantic Analysis)
X = T S D T X : m ∗ n ; T : m ∗ r ; S : r ∗ r ; D : n ∗ r ; r = r a n k ( X ) X=TSD^T \\ X: m*n; \ T: m*r; \ S: r*r; \ D:n*r; \ r=rank(X) X=TSDTX:m∗n; T:m∗r; S:r∗r; D:n∗r; r=rank(X)上式意味着文本的矩阵表示可以进行矩阵分解,得到正交矩阵 T , D T,D T,D 和对角矩阵 S S S,其中 T T T 可以理解为Term, D D D 则可以理解为Document。对矩阵分解得到的结果进行运算,可以得到词汇 term 和文档 document 的一些相关性质: X X T = ( T S D T ) ( T S D T ) T = T S D T D S T T T = T ( S S T ) T T XX^T=(TSD^T)(TSD^T)^T=TSD^TDS^TT^T=T(SS^T)T^T XXT=(TSDT)(TSDT)T=TSDTDSTTT=T(SST)TT首先将 X X X 与 X T X^T XT 求点积,即词汇 term 的点积,得到的结果可以解释为对 X X T XX^T XXT 进行特征分解的结果,对应的 T T T 为 X X T XX^T XXT 的特征向量, T S TS TS 的每一行则为每个 term 的坐标。
X T X = ( T S D T ) T ( T S D T ) = D S T T T T S D T = D ( S T S ) D T X^TX=(TSD^T)^T(TSD^T)=DS^TT^TTSD^T=D(S^TS)D^T XTX=(TSDT)T(TSDT)=DSTTTTSDT=D(STS)DT类似的,将 X T X^T XT 与 X X X 求点积,即文档 document 的点积,得到的结果可以解释为对 X T X X^TX XTX 进行特征分解的结果,对应的 D D D 为 X T X X^TX