无论是基于内容的推荐算法,还是协同过滤算法,它们都只用到了用户和物品之间的行为信息,所以能不能加入更多的信息,比如用户/物品本身的信息以及上下文信息来更好地指导推荐呢?

事实上,这正在把推荐问题转化为我们所熟悉的机器学习问题。具体来讲,给定训练集,利用训练集的特征和标签训练一个模型,然后用该模型指导推荐。

在之前讲解的协同过滤算法中,我们通常是预测某用户对于某些物品的打分,然后按照打分值从高到低排列物品,选择前几个推荐给用户。

而这里,训练好的模型会直接预测某用户是否会对物品产生正反馈(比如购买一件商品,观看一部电影等),若会,则将物品推荐给该用户。没错,这就是一个二分类问题。

接下来介绍几个经典的相关模型,有一些可能已经听说过,比如逻辑回归,嗯,就从它开始吧~

逻辑回归

逻辑回归(Logistic Regression, LR)用于分类任务,它使用sigmoid函数,将取值范围为全体实数的线性回归表达式$w_1x_1+w_2x_2+…+w_kx_k+b$映射到0和1之间:

1
2
3
z=np.array(range(-10,10))
sigm=1/(1+pow(2.73,-z))
plt.plot(z,sigm)

Alt text

具体的分类规则是:设定一个0到1之间的阈值,当纵轴取值大于此阈值时为一类,否则为另一类。

注意:这里所讲的逻辑回归默认用于二分类问题,你也可以通过改造将其用于多分类问题,这是后话了。

逻辑回归的模型如下:

$$\hat{y}=\frac1{1+e^{-(X^TW+b)}}$$

其中,$X$是训练数据中的特征部分,$W$和$b$是模型要学习(优化)的参数。

假设训练集共$n$个特征,那么待优化的参数共$n+1$个。

于是,对于0和1两种类别,有如下结果:
$$p(y=1)=\hat{y}$$

$$p(y=0)=1-\hat{y}$$

综合两式,得:

$$p(y|\hat{y})=\hat{y}^(1-\hat{y})^{1-{y}}$$

上式表明,在预测概率为$\hat{y}$的前提下,样本的类别为$y$的概率为$p(y|\hat{y})$.

每一个样本都有自身得类别标签$y^i$,而且都可以通过模型预测得到1个对应的$\hat{y}^i$.

接下来求解$W$和$b$.

由极大似然估计,将每个样本对应的$p(y_i|\hat{y}_i)$连乘,得到似然函数:

$$L=\prod_{i=1}^{m}p(y^i|\hat{y}^i)=\prod_{i=1}^{m}{\hat{y}^i}^{y^i}{(1-{\hat{y}}^{i})}^{1-y^i}$$

其中$m$为训练样本总数。

对上式取对数,得:

$$lnL=\sum_{i=1}^{m}(y^{i}log{\hat{y}}^i+(1-y^i)log(1-{\hat{y}}^i))$$

我们要求解使得上式最大化时得参数$W$和$b$,那么对上式加个负号就把最大化目标变成了最小化目标,在加一个系数$\frac1m$不影响最终的优化结果,于是目标函数可以写成下面这个样子:

后续内容请移步下方微信链接阅读(不想再调一遍数学公式的格式了orz~~)

https://mp.weixin.qq.com/s?__biz=MzU0NzQwMzU1Mw==&mid=2247487705&idx=1&sn=3c8ccc3ac21d5964cdab3f2169c169d7&chksm=fb4fb297cc383b81ac7dab6f09110a32d9a9186abfa4af55a5d6f798ae4c259df102a0f8abf5&token=1733209559&lang=zh_CN#rd