主题模型为非监督模型,且都需要构造一个矩阵,推测的是隐含的主题或者模式(如偏好)。都会变换出对矩阵中纵横两个维度的,向量的表达,相当于是两个矩阵(低维)。而这个表达可以作为特征进行召回、排序,可以做特征去分类,可以去计算相似度(距离),可以聚类。
输入矩阵往往很大,很稀疏。
1. ALS
ALS 指使用交替最小二乘求解的一个协同推荐算法。其输入是用户的偏好矩阵,来推断每个用户的喜好并向用户推荐适合的产品。ALS是直接去迭代的计算这两个矩阵,使其乘积与偏好矩阵最接近。这个矩阵往往是很稀疏的,在拟合郭冲中,可以降低,矩阵中稀疏值的损失的权值。在训练过程中,两个矩阵交替成为固定的矩阵和更新的矩阵,梯度下降进行矩阵中参数的更新。问题是非凸的,ALS 并不保证会收敛到全局最优解。但在实际应用中,ALS 对初始点不是很敏感,是不是全局最优解造成的影响并不大。
ALS输入为R ,训练 U*V。
ALS的应用中,分为显式反馈和隐式反馈。显式反馈的矩阵取值较多,在应用中即使没有显式反馈,也可以尝试是连续值,或者进行一定的离散化。
显示反馈代价函数中,我理解后面项为正则化项。且实际打分矩阵有很多缺失值,所以仅计算已知打分的重构误差,
隐式反馈中,会把偏好矩阵转换为0/1进行处理,Pij 。虽然目标矩阵是0/1 ,但是隐式反馈值为0并不能说明用户就完全不喜欢,例如用户可能不知道该物品的存在。另外,用户购买一个物品也并不一定是用户喜欢它,所以需要一个信任等级来显示用户偏爱某个物品(0、1太稀疏)。一般情况下,Rij 越大,越能暗示用户喜欢某个物品,因此,引入变量 Cij,来衡量 Pij的信任度。
可以看出,如果Rij =0 ,也就是对于原来的输入矩阵中缺失的0和本身就是0的样本,其损失的系数是Cij,为1,也就是样本的权值为1。而对于原来输入矩阵中有值的样本,相当于样本的权重大于1,且随着原来rij越大,Rij 本身与Pij=1 更接近,损失的那部分值更应该接近于0,这个样本的权值Cij 也应该更高。也就是说,rij越大,如果拟合的结果并不好。那么惩罚很重,重在样本的信任度和本身其差应该更小。
ALS还是比较强大的,关键在于构造好偏好矩阵,使其准确。
2. LDA
对于LDA,其输入是由文本构造的分布矩阵,其实也可以是由行为构造的一系列特征(各个维度)。
前提:每个主题会对应一个词汇分布,而每个文档会对应一个主题分布。
文档生成过程:
1. 确定主题和词汇的分布 2. 确定文章和主题的分布
3. 随机确定该文章的词汇个数NN。4. 如果当前生成的词汇个数小于NN执行第5步,否则执行第6步
5. 由文档和主题分布随机生成一个主题,通过该主题由主题和词汇分布随机生成一个词,继续执行第4步 6. 文章生成结束
参数估计:
1. 文章-主题分布和主题-词汇分布都服从多项式分布;参数为φk ,𝛩m 。
2. φk ,𝛩m 都是随机变量,其先验概率分布服从为以α,β为参数的狄利克雷分布,要得到的是两者的后验概率分布。why?
多项式分布和Dirichlet分布是一对共轭分布,计算后验概率有极大的便利!说到底是LDA看中它计算方便。增加了先验概率分布,那么在确定文章与主题分布还有主题与词汇分布的时候,就由先验概率分布先随机生成确定多项式分布的参数。用一个联合概率分布来描述第m篇文章生成过程:
由此可以得到第m篇文章其生成的边缘概率,用极大似然求解即可。然后边缘概率的表达过于复杂。
给定α,β,GIbbs采样得到φk ,𝛩m :已知先验概率分布和一组document,要得到后验概率分布。
GIbbs采样
LDA里到底采啥:一轮迭代中,为每篇文档里的每一个词重新选择主题,选择的依据是gibbs采样公式。一般在收敛之前,需要跑一定数量的采样次数让采样程序大致收敛,这个次数一般称为:burnin period。我们希望从采样程序中获得独立的样本,但是显然以上的采样过程明显依赖上一个采样结果,那么我们可以在上一次采样后,先抛弃一定数量的采样结果,再获得一个采样结果,这样可以大致做到样本独立,这样真正采样的时候,总有一定的滞后次数,这样的样本与样本的间隔称为:SampleLag。
推断一个新文本的主题分布:
http://blog.csdn.net/aws3217150/article/details/53840029