基于协同过滤算法的推荐系统设计

2019-04-25 05:51□邵
产业与科技论坛 2019年5期
关键词:共轭代价梯度

□邵 娜

随着互联网的迅速普及,大量的信息充斥着人们的生活,这种现象称为信息超载。面对这一现象,推荐系统应运而生。推荐系统结合推荐算法,通过分析数据库中记录的兴趣爱好,进行个性化计算,由系统分析得到推荐信息,引领用户发现自己真实需要的物品信息。

一、协同过滤的推荐算法

本系统设计假定用户与商品评价之间是最简单的线性关系,我们将基于这种最简单的线性关系来叙述数据挖掘是如何计算参数的。当要处理更复杂的关系时,需要做的就是替换这种关系,但模型及算法步骤是很相似的。

(一)线性回归。假定有一组数据记作xi,其中i=1,2,…n这是定义域,值域也就是输出yi,i=1,2,…n,yi=theta0+theta1*xi,这就是假定的线性关系。数据挖掘的一般过程如下。

1.观测数据。进行统计假设,可以假设数据近似服从线性关系y=theta0+theta1*x,同时这个数学表达也就是我们的目标函数。

2.建立代价函数。假设后要建立标准,看假设与实际情况相差如何,利用常用的代价函数最小二乘法以求出最优参数:J=sum(theta0-theta1*x-yi)2/n。将这个表达式记作J,要求的就是使J达到最小的theta=[theta0;theta1]。

3.求解代价函数的梯度。这是一个具有凸性的函数。利用凸优化的方法求出全局最优解。其核心部分就是求解代价函数的梯度,这里我们对theta进行求偏导,以得出梯度,

J'=X*(X*theta-y)/m。

4.梯度下降法。给定theta的初值,我们计算代价函数在每个点的梯度,让参数沿梯度反方向移动一个很小的值,然后再重新计算梯度,直到算法收敛,这就是梯度下降法。用该方法得到的线性回归结果。其中核心代码在MATLAB中如下:

for r=1:num_iters

theta=theta-alpha*X'*(X*theta-y)/m;

Theta(:,r)=theta;

end

(二)协同过滤。协同过滤算法架构较为复杂,但具体到每一步其实很简单,几乎和线性回归一样。本文将使用的算法是共轭梯度下降法。核心步骤就是计算代价函数的梯度,这一步独立于算法,是算法的输出部分。

X=x-alphasumTj-y*Tj+lambda*x

Tj=Tj-alpha(sumTj-y*x+lambda*Tj)

步骤如下:第一,初始化x和theta,这个初始化是随机的,一般用高斯函数来产生。注意随机不代表随意,如果胡乱取值,是不会得到好的结果的,事实上收敛速度和你取的初值是有关联的。第二,用梯度下降法来计算X和theta,方法是固定X用公式f求theta,固定theta,用公式求X。核心代码如下:J=(X*Theta'-Y).*R;X_grad=J*Theta+lambda*X;Theta_grad=J'*X+lambda*Theta;J=J(:)'*J(:)/2+(Theta(:)'*Theta(:)+X(:)'*X(:))*lambda/2。第三,用共轭梯度下降法反复迭代直到收敛,得到想要的数据关系。

图1 正则化后的数据

(三)共轭梯度下降算法。首先是数据需要进行中心化和单位化。比如Y=[5 5 3; 3 2 1; 0 1 3],中心化后为[2. 33 2.33 0.667 ; 0.333 -0.667 -1.333; -2.667 -1.667 0.667],然后进行单位化,这个在计算过程中特别重要,特别是对参数lambda的影响。关于共轭梯度下降法需要注意两个关键点,一是收敛条件,选取的是Wolfe-Powell条件。这个条件讲的是,当找到梯度之后,沿着这个梯度方向移动最适合。二是共轭梯度的计算。采用的是Polack-Ribiere共轭梯度法。共轭梯度法并没有计算函数的二次导数,即Hessian矩阵,而是将Hessian矩阵与数据矩阵的乘积看成一个整体进行估计。

图2 填充后的结果

二、系统设计

以某个电影数据库为例,通过系统如下的设计原理:第一,将己有数据载入,并进行预处理;第二,协同过滤算法,构造代价函数和梯度函数;第三,梯度下降法求解参数;第四,参数对用户的爱好进行预测。设计电影为代价函数中的X的前缀,对应的评分就是数据矩阵,上千部电影,900+用户评分。正则化之后的数据矩阵如图1所示。那么推荐系统需要做的工作就是求出theta,然后对数字为0的地方进行填充,得到结果如图2所示。

对数据再进行一些后续加工处理就可以得到输出结果,比如对某电影的平均评分,还可以得到某用户对某些电影的喜好预测等。上述就是协同过滤的全过程。

三、结语

本文提出一种新的电影推荐方法,详细描述了协同过滤的过程及系统的设计。但是由于时间的限制,电影系统的功能只实现了简单的电影推荐以及电影信息查看。在以后的研究中需进一步完善系统的功能,使推荐系统在实际生活中,为用户提供更多的功能选择。

猜你喜欢
共轭代价梯度
一个带重启步的改进PRP型谱共轭梯度法
一个改进的WYL型三项共轭梯度法
巧用共轭妙解题
一种自适应Dai-Liao共轭梯度法
一个具梯度项的p-Laplace 方程弱解的存在性
爱的代价
代价
成熟的代价
代价