美文网首页
【基于模型的协同过滤4】朴素贝叶斯

【基于模型的协同过滤4】朴素贝叶斯

作者: 虾图米粒 | 来源:发表于2020-06-21 08:59 被阅读0次

    朴素贝叶斯经常用于分类的问题中。朴素贝叶斯模型是生成模型,通常用于分类。可以将每个项目视为特征,将用户视为实例,以便使用分类模型来推断缺失的项目评分。使用这种方法进行协同过滤的主要挑战是,任何要项目都可以成为协同过滤的预测目标,而且还必须使用不完整的特征。这些差异可以通过对朴素贝叶斯模型的基本方法进行少量修改来处理。

    假设对于第u个用户,该用户已为一个集合的项目指定了评分I_{u}。 换句话说,如果第u个用户第一,第三和第五列指定了项目评分,则I_{i}= {1,3,5}。贝叶斯分类器需要预测用户u对项目j的未观察到的评分r_{uj}的。其中r_{uj}可以能以{v_1...v_l}任何离散的概率出现。因此,我们要确定r_{uj}以在观测到I_{i}为条件下,取任何这些值的概率。对于s \in{1 ... l}中的每个值,我们想确定概率P(r_{uj}= v_s \mid 观测到的评分集合I_{u})。该表达式以P(A \mid B)的形式出现,其中A和B分别对应于评分r_{uj}和观察到的评分集合I_{u}。这个表达式可以用贝叶斯规则简化表达如下:
    P(A \mid B)= \frac{P(A)\cdot P(B \mid A)}{P(B)}

    带入s \in{1 ... l}
    得到如下表达式:
    P(r_uj= v_s \mid 观测到的评分集合I_{u})= \frac{P(r_{uj}= v_s)\cdot P(观测到的评分集合I_{u} \mid r_{uj}= v_s)}{P(观测到的评分集合I_{u})}

    我们需要表达式左边P(r_{uj}= v_s \mid 观测到的评分集合I_{u})尽可能大。我们知道P(观测到的评分集合I_{u}) 相对于s是独立的。因此,为了确定右侧取最大值时s的值,可以忽略分母,根据比例常数的方程得到以下:
    P(r_{uj}= v_s \mid 观测到的评分集合I_{u}) \propto P(r_{uj}= v_s)\cdot P(观测到的评分集合I_{u} \mid r_{uj}= v_s) 【1】

    P(r_{uj}= v_s)r_{uj}的先验概率,这个先验概率可以通过指定v_s评分用户的比例进行估计。这个比例仅在对项目j进行打分的用户中计算,其他的用户将被忽略。

    P(观测到的评分集合I_{u} \mid r_{uj}= v_s)可以使用原始假设进行估计。原始假设是基于评分之间的条件独立性。这个条件独立性假说认为在观察到r_{uj}的评分为v_s的条件下,用户u对I_{u}中各个项目的评分是相互独立的。该条件可以用以下数学方式表示:
    P(观测到的评分集合I_{u} \mid r_{uj}= v_s) =\prod _{k \in I_{u}}P(r_{uk}\mid r_{uj}= v_s) 【2】

    P(r_{uk}\mid r_{uj}= v_s) 是在用户为第j各项目打分v_s中同时为对项目k评分为r_{uk}的用户比例。把这个带入到之前的比例方程【1】中得到

    P(r_{uj}= v_s \mid 观测到的评分集合I_{u}) \propto P(r_{uj}= v_s)\cdot \prod _{k \in I_{u}}P(r_{uk}\mid r_{uj}= v_s) 【3】

    我们可以通过以下两种方式计算评分r_{uj}的后验概率:

    • 我们可以为每个s \in{1 ... l}计算出以上公式【3】的的概率,找到使得概率最大的s的值 即\hat{r}_{uj} = argmax_{v_{s}} \prod _{k \in I_{u}}P(r_{uk}\mid r_{uj}= v_s) 这一方法将评分当成一个分类问题,并不考虑评分之下可能的排序。当评分可能取值比较低,这种方法不失为一种可行的方法
    • 除了找到最大可能概率的评分,我们也可与对所有评分进行概率加权。这种方式对于评分取值较多的情况下比较实用。

    值得注意的是,此方法计算某一评分基于旗下项目评分的条件概率。因此,此方法是基于项目的贝叶斯方法。这种方法直接在传统朴素贝叶斯方法上的套用,不同之处在于预测的维度项目在传统分类中是固定的,而预测维度协同过滤中有所不同。在协同过滤的特定情况下,还可以基于同一项目的其他用户的评分来计算评分的概率。可以将这种方法视为基于用户的贝叶斯方法。甚至有可能将基于用户的贝叶斯方法和基于项目的贝叶斯方法相结合。在几乎所有形式的协同过滤中,例如基于邻域和基于规则的方法,都有可能从基于用户的角度、基于项目的角度或这两种方法的组合提供解决方案。

    过拟合问题

    当评分矩阵稀疏并且观察到的评分数量很少时,这种数据驱动的估算并不稳健。
    具体尔雅,如果少数用户为第j个项目指定了评分,则对先验概率P(r_{uj}= v_s)的估计不太可能是可靠的。如果没有用户为第j个项目指定评分,那么最后估计的格式为0/0,我们无法为其估算值。

    此外,公式【2】右侧的每个值P(r_{uj}= v_s)的估计可能比先验概率的估计更不可靠。这是因为评分矩阵的一小部分将以r_{uj}= v_s为条件。在这种情况下,需要分析的评分矩阵部分仅是那些为项目j指定了v_s的用户。如果此类用户的数量很少,则估算将不准确,公式【2】中的乘法项将产生较大的误差。例如,对于k \in I_u的任何值,如果在第j项的评分设置为v_s的情况下没有用户指定等级r_{uk},公式【2】的整个表达式由于其乘法性质而直接置为0。当然,从这样少量数据估计模型参数,会产生错误的和过度拟合的结果。

    为了解决这个问题,通常使用拉普拉斯平滑法。我们用q_1...1_l来指代为第j项评分为v_1...v_l的用户数量。我们不再用直接的方式\frac{q_s}{\sum_{t-1}^{l}q_t}来估算P(r_{uj}= v_s), 而是加入了一个拉普拉斯平滑参数\alpha
    \frac{q_s+\alpha}{\sum_{t-1}^{l}q_t+l \cdot \alpha}来估算P(r_{uj}= v_s)。 如果没有已知的对于项目j的评分,那么我们直接使用先验概率\frac{1}{l}。参数\alpha决定了平滑的程度, \alpha越大,平滑程度预告,最终的结果对于基础数据越不敏感。

    喜欢请点赞,转载请注明出处!

    参考文献
    [1] Aggarwal, Charu C.Recommender systems. Vol. 1. Cham: Springer International Publishing, 2016.

    相关文章

      网友评论

          本文标题:【基于模型的协同过滤4】朴素贝叶斯

          本文链接:https://www.haomeiwen.com/subject/dxgnxktx.html