推荐系统

学习地址

问题规划

推荐系统recommend system

  • 机器学习的一个应用

特征

  • 机器学习中很重要的一个内容,比起手动设计特征更需要能够自动学习得到的特征
  • 通过特征学习能体会到一点点特征学习的思想

例子:预测电影评分

如果想设计一个推荐系统,我们得先通过学习算法预测这些空缺的值,然后根据数据推荐合适的电影给用户

基于内容的推荐算法

还是以前面预测电影评分问题为例
每个电影 i 都有一个特征向量X(i),分别表示归为爱情片或者动作片的程度,那么对于某个用户 j 来说,需要学习得出一组参数向量θ(j),那么预测的评分就是(θ(j))TX(i),看起来像个线性回归问题

公式化表述:

4S8CX4_R_~3_7X_KQHQ_A`E.png
3`YY954RYFXEMO4OE_C8MKK.png

以上和线性归回极为相似,本质就是线性回归,但为什么这个算法被称为基于内容的推荐算法?
这是因为我们在这里所使用到的特征量是已知的,但很多时候我们是不知道这些特征量的

协同过滤

协同过滤就是在前面所讲的特征学习算法用来构建推荐系统的,帮助我们得到想要的特征量,简化工作
现在,我们不知道特征向量中每一维的含义,但我们可以通过调查用户得知用户对某类的电影的喜好程度即θ(j),并且我们已经有了y(i,j),而(θ(j))TX(i)=y(i,j),从而可反推出特征向量的含义

Q_O1N_S0Z4I_C_SMUR_`E3O.png

公式化:

0@__BL5GKQ_J4`@X__H_V76.png

协同过滤算法:
通过已知数据推出未知数据,再推出已知数据,不断重读迭代,最终可以得到想要的模型
但这些都是建立在有足够的数据的基础上,即每个用户都给电影进行过评分
理解协同过滤率,用户进行评分行为,根据评分数据帮助学习更合适的特征,又可以更好地预测其他用户评分,给用户推荐合适的信息,依次交替得到准确完美的模型,每个用户都在帮助算法学习更合适的特征

SQND`69AQXV___A_D6B_0M8.png

协同过滤算法

将由X求得参数θ和由参数θ求得特征X的代价函数结合起来,同时得到特征和参数
这里,特征就不用添加偏置值了

F9NJ7M5_9FBBDBPZW_X_O_A.png
DUFA558_KR6OS37VY__BT`P.png

矢量化:低秩矩阵分解

实际上就是将参数和特征分别用矩阵表示,用矩阵相乘的形式,在前面的线性回归中就有这种用法了
QQOKJ_9HAW_Z03O_Q__8M`Q.png
XU_WDSVW4_AE8U5Y_04BBOC.png

实施细节:均值规范化

假设存在一个用户没有哦给任何电影评分,那么为了最小化误差所学习出来的参数很可能就是0向量,这样实际上市不符合的
还有一种情况就是存在一个电影任何用户都没有对它进行评分,那么实际上不应该把它推荐给别人,关注其他的电影来的更重要些

方法是,采用对评分矩阵进行均值化,即以行或列为单位减去平均值,这样使得行或列均值为0得到新的评分矩阵,并学习出特征和参数。那么实际的评分是XTθ再加上均值,这样就会使得预测更有一些意义
M5KM6P2Z__VIWO`51Z7@YX4.png