数据科学个人笔记:推荐系统之推荐算法(基于内容+标签+半监督学习模型)

一、基于内容的模型

(一)推荐系统冷启动问题

用户冷启动:给新用户推荐

物品冷启动:新物品被推荐

系统冷启动:为新开发的网站(还没有用户和用户行为,只有一些物品信息)设计推荐系统

冷启动问题的一些解决方案:1.推荐热门;2.用注册信息进行粗粒度的个性化;3.利用社交网络账号信息做社会化推荐;4.在用户登陆时对一些物品进行反馈;5.引入专家知识建立物品相关表;6.利用物品内容信息解决物品冷启动。

(二)基于物品内容信息的推荐系统(TF-IDF)

1.向量空间模型VSM:

向量空间模型是一个文本文档空间表示方法。给定文档词汇表是一个词典,通过一些自然语言处理方法从所有文档中获取,词典中词的数为n。每个文档被表示成一个n维空间中的向量,每一维对应给定文档词汇表中的一个词在该文档中的权重,文档dj和词tk权重w(k,j)的计算方法如下:

TF-IDF(tk,dj)=(词在文档中频率/最常出现词在文档中频率)*log(文档数/出现过词汇tk的文档数)

W(k,j)=TF-IDF(tk,dj)/sqrt(j文档中各词TF-IDF平方的和)

2.度量两个文档的接近程度

常使用余弦相似度:

Sim(di,dj)=两向量点积/两向量模的积

(三)LDA模型(待完善)

1.话题模型:

隐含狄利克雷分布简称LDA(latent dirichlet allocation),是主题模型(topic model)的一种。LDA的话题模型假设每篇文档的每个词是生成方式是从由话题分布中按照概率分布随机抽取话题并按照话题中的词典分布随机选取话题中的词。

LDA算法通过观察生成的文档判断最可能的话题分布是怎样的。

主题模型属于聚类方法,是一种无监督的学习方法。

2.频率学派与贝叶斯学派

PLSA与LDA模型分属此两派。频率学派认为分布的参数是固定的,样本是随机生成的。贝叶斯学派认为样本是固定的,参数是随机变量,固定的操作模式是通过样本观测求后验。

3.LDA中相当于求解P(主题|文档)和P(词|文档)的两个参数,用EM算法求解。

 

二、基于标签的模型

(一)UGC(用户生成的内容)标签系统

1.用户会给物品打标签,内容包括物品是什么、物品种类、谁拥有物品、用户观点(例:有趣)、用户相关的标签(我最喜欢的)、用户的任务(即将阅读)。

2.标签的流行度的log和标签的数量的log几乎是一条斜率为负的直线。

(二)简单的基于标签推荐

p(u,i)=sum[n(u,b)*n(b,i)],其中n(u,b)为用户u打过标签b的次数,n(b,i)为物品i被打过b标签的次数。

1.算法的改进

2..P(u,i)=sum[n(u,b)*n(b,i)/(log(1+nb(u)))],增加了分母项(为了惩罚热门标签),其中nb(u)记录了标签b被多少各不同用户使用过,借鉴了TF-IDF的思想。

3..P(u,i)=sum[n(u,b)*n(b,i)/(log(1+nb(u)*log(1+ni(u))))],进一步扩展了分母项(为了惩罚热门物品),其中ni(u)记录了物品i被多少各不同用户打过标签。

(三)解决数据稀疏性(相似标签的聚合)

现实中用户和物品的交集标签会很少,所以应将相似标签聚合,计算标签的余弦相似度:

Sim(b,b’)=[sum(nbi*nb’i)/sqrt[sum(nbi^2)*sum(nb’i^2)]],nbi为给各物品打标签b的用户数,nb’i为给各物品打标签b’的用户数。

(四)标签清理

1.去除词频很高的停止词和表情绪的词;2.去除因词根、分隔符不同造成的同义词。

3.也可采用让用户进行反馈的方式。

(五)如何给用户推荐标签

1.给用户推荐标签的目的:(1)方便用户输入标签;(2)提高标签质量。

2.方法:将用户u最常使用的标签和物品i最常被打的标签线性加权。

 

三、半监督学习与推荐系统结合

(一)基于半监督混合聚类的推荐方法

1.高斯混合模型(EM算法求解)

设有k个高斯分布,每个分布都有一组参数(mu,sigma^2),则在高斯混合模型中,一组观测值出现的概率为P(y|theta)=sum(alfa(k)*f(y|mu,sigma^2)),即每个高斯分布计算出的出现概率的加权,sum(alfa)=1,为权重。

该模型可用于聚类,一组观测值是来自第k个模型的概率为【第k个模型计算的概率/总概率】。

2.求解高斯混合模型

使用EM算法,先出初始化模型的各个参数alfa、mu、sigma,E步计算各数据属于第k类的概率,M步迭代新一轮参数:

Mu(k)=各样本累加(属于k类的概率*样本坐标值)/各样本累加(属于k类的概率)

Sigma^2(k)=各样本累加(属于k类的概率*(样本点-mu(k))^2)/各样本累加(属于k类的概率)

Alfa(k)=各样本累加(属于k类的概率)/样本数

重复E步和M步直到收敛。

3.基于有标签数据和马氏距离度量的权重矩阵构建

(1)马氏距离:dis(x,y)=sqrt((x-y)*S^(-1)*(x-y)),S^(-1)为所有样本的协方差矩阵。

即:马氏距离=sqrt【各维度累加(维度值的差的平方/维度上的标准差的平方)】。

4.权重矩阵:

若i,j都有标签,Wij=1(同一类)或0(非)

若i有标签j没有,则设k类的中心为k类有标签数据的均值,Wij=1(j到i所属类的中心的距离小于到中心的k类有标签数据的最远距离)或0(非)

若i,j都没有标签,Wij=1(有一个类能让i和j同时在其有标签数据半径内的)或0(非)

5..加了Kullback-Leibler散度的cost-function

设置控制任意两个类对应的高斯分布差异较小的正则项,将散度函数对称化,即

Dij=1/2*(sum(Pi(c)*log(Pi(c)/Pj(c))+sum(Pj(c)*log(Pj(c)/Pi(c)))

R=sum(Dij*Wij)

Costfunction=原高斯混合模型costfunction-lamda*R

6.求解新的cost-function

使用EM算法,先出初始化模型的各个参数alfa、mu、sigma,E步计算各数据属于第k类的概率,M步迭代新一轮参数:

Mu(k)=样本点

Sigma^2(k)=各样本累加(属于k类的概率*(样本点-mu(k))^2)/各样本累加(属于k类的概率)

Alfa(k)=各样本累加(属于k类的概率)/样本数

重复E步和M步直到收敛。

(二)基于主动学习与协同训练的半监督推荐方法

1.协同训练算法:

标准的协同训练需满足3个基本条件:

(1)属性集可以被自然地划分为两个集合;(2)每个属性集的子集合都足以训练一个分类器;(3)在给定标签的情况下,这两个属性集是相互独立的。

满足上述条件的两个属性集被称为充分冗余视图。

分别在两个属性集上训练两个分类器,将这两个分类器运用到无标签数据上,在选择每个分类器分类结果置信度高的无标签数据以及该数据的预测标签加入另一个分类器的有标签数据集中进行下一轮训练。

2.主动学习算法:

主动学习算法利用训练号的分类器对无标签数据进行选择,选择出信息量最大的(当前分类器认为不确定性最高的)无标签数据交由领域专家进行标注。选择样本方式分以下三种:(1)样本资格查询:选择的样本由自己生成,可能在样本集中并不存在;(2)基于流:每次获得一组样本时,在其中选择一个;(3)基于池:将获得的数据放在一个池中,进行选择。

3.基于熵的视图(属性集)划分方式:

在划分视图时,计算每个特征对于关注标签的熵值(计算方式见决策树ID3),然后根据

Info=sum(按特征划分数据比例*-sum(pilog(pi))),按照各特征的info值,尽量让两个视图的info值对等。

4.样本信息量估计方法

基于的假设:若样本置信度高,近邻置信度低,样本贡献度低;若样本置信度低,近邻置信度高,样本贡献度高。由此公式如下:

样本贡献度=1/(类别数*置信度)+alfa*|sum(样本置信度-近邻置信度)|

5.算法流程:

(1)利用熵的视图划分方法,并用分类算法分别训练模型。

(2)用两模型分别对无标签数据(也分两个视图)进行标注,其中高置信度的样本标注后放入对方的训练数据中,高贡献度的样本放入主动学习池中。

 

猜你喜欢

转载自blog.csdn.net/humothetrader/article/details/81631039