1 基本形式

给定由d个属性描述的示例,x=(x1;x2;...;xd)x = (x_1;x_2;...;x_d),其中xix_i是x在第i个属性上的取值。线性模型试图学习一个通过属性的线性组合来进行预测的函数:
f(x)=w0+w1x1+w2x2++wdxd f(x) = w_0+w_1x_1+w_2x_2 + \dots + w_dx_d 一般写成向量形式,f(x)=wTxf(x) = w^Tx
许多功能强大的非线性模型,可在线性模型的基础上,通过引入层级结果或者高维映射而得。

2 线性回归

当需要预测的目标变量为连续型变量时,是一个回归任务。

2.1 一元线性回归

对于采样的数据,给定自变量x和因变量y,可以用下式拟合,x和y的关系:
y=w0+w1x y = w_0 + w_1x 当给定w0w_0w1w_1时,画在坐标图内是一条直线。
线性回归就是要找到一条直线,并且让这条直线尽可能地拟合数据集中的数据点。

2.2 多元线性回归

若影响y有多个因素,则需要使用多元线性回归,需要注意x,y不具有线性关系时,需要考虑其他方法。
y=w0+w1x1+w2x2++wnxn y = w_0 + w_1x_1+w_2x_2 + \dots + w_nx_n 可以使用矩阵来表示f(x)=XWf(x) = XW,X是要求的一系列参数,X是输入的数据矩阵。

2.2.1 损失函数

使用均方误差作为损失函数,最小化目标函数的方法称为最小二乘法。

使用均方误差的原因,有十分好的几何意义,对应了常用的欧式距离,在线性回归中,就是要找到一条直线,使得所有样本到直线的欧氏距离最小。
代价函数定义为:
J(w)=1mi=1m(f(x(i))y(i))2=1m(XWy)T(XWy)=1m(WTXTXWWTXTyyTXW+yTy) J(w) = \frac{1}{m}\sum^m_{i=1}(f(x^{(i)})-y^{(i)})^2 \\ = \frac{1}{m}(XW-y)^T(XW-y) \\ = \frac{1}{m}(W^TX^TXW-W^TX^Ty - y^TXW + y^Ty)

2.2.1 损失函数求解

  • XTXX^TX为满秩矩阵或者正定矩阵时,可以用正规方程法,直接求得闭式解。
    需要用到的推导有:
    X(XTX)=2XW(XW)=XTW(WTX)=XW(WTXW)=2XW \frac{\partial }{\partial X}(X^TX)=2X \\ \frac{\partial }{\partial W}(XW)=X^T \\ \frac{\partial }{\partial W}(W^TX)=X \\ \frac{\partial }{\partial W}(W^TXW)=2XW \\ 下面我们计算对于W的偏导。
    J(w)w=2XTXWXTyXTym=2XTXW2XTym=2XT(XWy)m \frac{\partial J(w)}{\partial w} = \frac{2X^TXW-X^Ty - X^Ty}{m} \\ = \frac{2X^TXW-2X^Ty}{m} = \frac{2X^T(XW-y)}{m} 2XT(XWy)m=0\frac{2X^T(XW-y)}{m} = 0,可得W=(XTX)1XTyW = (X^TX)^{-1}X^Ty

  • 但是当X^TX不能满足满秩矩阵,可以使用梯度下降法。

2.3 如何缓解线性回归的过拟合和欠拟合?

2.3.1 解决过拟合的方法:

  • 分析数据,重新做数据清洗,特征工程;
  • 扩充数据集;
  • 减少特征数量,降维
  • 正则化,L1 lasso回归 稀疏化模型参数,L2 岭回归 缩小模型参数

2.3.2 解决欠拟合方法:

  • 分析数据,特征工程
  • 增加多项式特征阶数
  • 局部加权回归(不过分依赖特征选择)

3 逻辑回归

逻辑回归用来解决分类问题,它的本质是:假设数据服从某个分布,然后使用极大似然估计做参数的估计。
考虑二分类问题,给定数据集D=(x1,y1),(x2,y2),,(xN,yN),xiRnD = (x_1,y_1),(x_2,y_2),\dots,(x_N,y_N),x_i\in R^n
由于WX+b的取值是连续的,为了拟合离散变量,可以考虑拟合条件概率p(Y=1x)p(Y=1|x)。并利用对数几率函数将预测值映射到0-1之间。
p=11+e(wTx+b) p = \frac{1}{1+e^{-(w^Tx+b)}} 于是有:
lnp1p=wTx+b ln\frac{p}{1-p} = w^Tx+b 其中p=P(y=1x)p = P(y=1|x)。如果把一个事件的几率(odds)定义为改事件发生的概率与该事件不发生的概率比值,那么逻辑回归可以看做是对于“y=1|x”这一事件的对数几率的线性回归。

3.1 损失函数

在统计学中,使用极大似然估计法来求解,即找到一组参数,使得在这组参数下,我们的数据的似然度最大。
设:
P(y=1x)=p(x)P(y=0x)=1p(x) P(y=1|x) = p(x) \\ P(y=0|x) = 1 - p(x) 似然函数,因为我们期望预测当样本为1时预测概率越大越好,样本为0时预测概率越小越好:
L(w)=[p(xi)]yi[1p(xi)]1yi L(w) = \prod [p(x_i)]^{y_i}[1-p(x_i)]^{1-y_i} 为了方便求解,对两边取对数,写成对数似然:
lnL(w)=i=1n[yilnp(xi)+(1yi)ln(1p(xi))] lnL(w) = \sum_{i=1}^n[y_ilnp(x_i) + (1-y_i)ln(1-p(x_i))] 再取负数,将最大化似然转为最小化下面的损失函数:
J(w)=1nlnL(w) J(w) = -\frac{1}{n}lnL(w) 这里的损失函数恰好是交叉熵损失。
因此,逻辑回归中最大化似然函数和最小化损失函数是等价的。

3.2 损失函数的求解

我们先做一些准备,求
pw=(11+ewTx)=1(1+ewTx)2(1+ewTx)=1(1+ewTx)2ewTxwTx=1(1+ewTx)2ewTx(x)=11+ewTxewTx1+ewTxx=p(1p)x \frac{\partial p}{\partial w} = (\frac{1}{1 + e^{-w^Tx}})' \\ = -\frac{1}{(1 + e^{-w^Tx})^2}\cdot (1 + e^{-w^Tx})' \\ = -\frac{1}{(1 + e^{-w^Tx})^2}\cdot e^{-w^Tx} \cdot {-w^Tx}' \\ = -\frac{1}{(1 + e^{-w^Tx})^2}\cdot e^{-w^Tx} \cdot (-x) \\ = \frac{1}{1 + e^{-w^Tx}}\cdot \frac{e^{-w^Tx}}{1 + e^{-w^Tx}} \cdot x = p(1-p)x

进一步我们可以求解J(w)w\frac{\partial J(w)}{\partial w}
J(w)w=(yiln(p)+(1yi)ln(1p))=(yi1pp+(1yi)11p(1p))=(yi(1p)xi+(1yi)pxi)=(yip)xi \frac{\partial J(w)}{\partial w} = \sum(y_i ln'(p) + (1-y_i)ln'(1-p)) \\ = \sum(y_i\frac{1}{p}p' + (1-y_i)\frac{1}{1-p}(1-p)') \\ = \sum(y_i(1-p)x_i + (1-y_i)px_i) \\ = \sum(y_i-p)x_i 可以看到,梯度的表达式十分简洁,后面就可以利用梯度下降法来求解w。

3.3 逻辑回归如何求解非线性问题?

将特征离散成高维的01特征可以解决分类模型的非线性问题。

3.4 为什么逻辑回归要使用极大似然函数呢?

  • 因为我们想要让 每一个样本的预测都要得到最大的概率,即将所有的样本预测后的概率进行相乘都最大,也就是极大似然函数。
  • 对极大似然函数取对数以后相当于对数损失函数,由上面梯度更新的公式可以看出,对数损失函数的训练求解参数的速度是比较快的,而且更新速度只和x,y有关,比较的稳定。
  • 为什么不用平方损失函数呢,如果使用平方损失函数,梯度更新的速度会和 sigmod 函数的梯度相关,sigmod 函数在定义域内的梯度都不大于0.25,导致训练速度会非常慢。而且平方损失会导致损失函数是θ\theta的非凸函数,不利于求解,因为非凸函数存在很多局部最优解。

4 正则化

4.1 l1和l2正则

  • l1正则 λi=1kwi\lambda\sum_{i=1}^k|w_i|
  • l2正则 λi=1kwi2\lambda\sum_{i=1}^kw_i^2
    l1正则化使得模型参数具有稀疏性,l2正则化可以使得模型参数变小。

4.2 为什么l1正则化会使得模型参数具有稀疏性

  • 解空间形状
    l1和l2的解空间l1和l2的解空间

    从解空间角度解释,l1正则与等高线的更容易在坐标轴上,因此参数解为0,更加稀疏。
  • 贝叶斯先验
    l1正则化引入了拉普拉斯先验,l2正则化相当于引入了高斯先验。从分布上,拉普拉斯先验的曲线类似两个对数曲线,极值点处是一个尖峰,所以拉普拉斯先验分布中参数w取值为0的可能性要更高。
    拉普拉斯曲线拉普拉斯曲线

4.3 为什么正则化可以防止过拟合?

过拟合表现为在训练数据上误差非常小,而在测试数据上误差大。一般原因是模型过分拟合训练数据的噪声,正则化则是对模型参数添加先验,使得模型复杂度变小,对于噪声的扰动变小。
举个例子说明:
在抛硬币问题中,推断正面朝上的概率。如果只能抛5次,很可能5次全正面朝上,这样你就得出错误的结论:正面朝上的概率是1--------过拟合!如果你在模型里加正面朝上概率是0.5的先验,结果就不会那么离谱。这其实就是正则。