1.线性回归
对包含$d$个属性描述的数据${f{x}} = { {x_1},{x_2},...,{x_d}}$,建立一个加权线性模型,$f({f{x}}) = {omega _1}{x_1} + {omega _2}{x_2} + ... + {omega _d}{x_d} + b$,尽可能预测地准确对应的标签值$y$,各权重$omega$直观表达了各属性在预测中的重要性,因此线性模型有很好的可解释性。
我们先考虑最简单的情况,$d=1$。线性回归试图学得$f(x_i) = {omega } {x_i}+ b$,使得$f(x_i) simeq {y_i}$。如何衡量这两个之间的差别呢?均方误差是回归任务中最常用的性能度量,因此我们可以试图让均方误差最小化,
[egin{array}{*{c}}
{({omega ^*},{b^*}) = mathop {arg min }limits_{omega ,b} sumlimits_{i = 1}^m {{{left( {f({x_i}) - {y_i}}
ight)}^2}} }\
{ = mathop {arg min }limits_{omega ,b} sumlimits_{i = 1}^m {{{left( {{omega ^T}{x_i} + b - {y_i}}
ight)}^2}} }
end{array}]
均方误差有非常好的几何意义,对应了欧氏距离。基于均方误差最小化来进行求解的方法成为“最小二乘法”。在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。
求解$omega$和$b$使$E(omega ,b) = sumlimits_{i = 1}^m {{{left( {{omega }{x_i} + b - {y_i}} ight)}^2}} $最小化的过程,称之为线性回归模型的最小二乘“参数估计”。由于$E(omega ,b) $是凸函数,令$omega$和$b$的偏导为零,可以求其最优解的闭式解。
[egin{array}{l}
frac{{partial E(omega ,b)}}{{partial omega }} = 2sumlimits_{i = 1}^m {left( {omega {x_i} + b - {y_i}}
ight){x_i} = 0} \
frac{{partial E(omega ,b)}}{{partial b}} = 2sumlimits_{i = 1}^m {left( {omega {x_i} + b - {y_i}}
ight)} = 0
end{array}]
[egin{array}{l}
omega sumlimits_i^m {x_i^2} + bsumlimits_i^m {{x_i}} - sumlimits_i^m {{y_i}{x_i}} = 0\
omega sumlimits_i^m {{x_i}} + mb - sumlimits_i^m {{y_i}} = 0
end{array}]
[egin{array}{l}
omega = frac{{sumlimits_i^m {{y_i}} ({x_i} - frac{1}{m}sumlimits_i^m {{x_i}} )}}{{sumlimits_i^m {x_i^2} - frac{1}{m}{{(sumlimits_i^m {{x_i}} )}^2}}}\
b = frac{1}{m}sumlimits_i^m {({y_i} - omega {x_i})}
end{array}]
更一般的情况,针对数据集$D = { ({{f{x}}_1},{y_1}),({{f{x}}_2},{y_2}),...,({{f{x}}_m},{y_m})} $,其中${{f{x}}_i} = { {x_{i1}},{x_{i2}},...,{x_{id}}} $,包含d维特征。试图学得$f({{f{x}}_i}) = {{f{omega }}^T}{{f{x}}_i} + b$,使得$f({f{x}_i}) simeq {y_i}$,这称之为“多元线性回归”。
类似用最小二乘法求得${f{hat omega }} = ({f{omega }};b)$最优解的闭式解,相应的数据集表示为,
[{f{X}} = left( {egin{array}{*{20}{c}}
{{f{x}}_{f{1}}^{f{T}}}&1\
{{f{x}}_{f{2}}^{f{T}}}&1\
{...}&1\
{{f{x}}_{f{m}}^{f{T}}}&1
end{array}}
ight)]
[{f{y}} = ({y_1};{y_2};...{y_m})]
令优化目标值${E_{{f{hat omega }}}} = {({f{y}} - {f{Xhat omega }})^T}({f{y}} - {f{Xhat omega }})$,求偏导为0,得$f{hat omega }$最优解的闭式解,
[{{{f{hat omega }}}^*} = mathop {arg min }limits_{{f{hat omega }}} {({f{y}} - {f{Xhat omega }})^T}({f{y}} - {f{Xhat omega }})]
[frac{{partial {E_{{f{hat omega }}}}}}{{{f{hat omega }}}} = frac{{partial {{({f{y}} - {f{Xhat omega }})}^T}}}{{{f{hat omega }}}}({f{y}} - {f{Xhat omega }}) + {({f{y}} - {f{Xhat omega }})^T}frac{{partial ({f{y}} - {f{Xhat omega }})}}{{{f{hat omega }}}}]
[ = - {{f{X}}^{f{T}}}({f{y}} - {f{Xhat omega }}) - {({f{y}} - {f{Xhat omega }})^T}{f{X}}]
(标量的转置等于其本身)
[ = 2{{f{X}}^{f{T}}}({f{Xhat omega }} - {f{y}})]
但涉及矩阵逆计算,要复杂很多,下面做一个简单的讨论。当${{f{X}}^{f{T}}}{f{X}}$为满秩矩阵或正定矩阵时,可求其逆矩阵,
[{f{hat omega }} = {({{f{X}}^{f{T}}}{f{X}})^{ - 1}}{{f{X}}^{f{T}}}{f{y}}]
多元线性回归模型为,
[f({{{f{hat x}}}_i}) = {f{hat x}}_i^T{({{f{X}}^{f{T}}}{f{X}})^{ - 1}}{{f{X}}^{f{T}}}{f{y}}]
然而,现实任务中然而,现实任务中 xTx 往往不是满秩矩阵.例如在许多任务中我们会遇到大量的变量,其数目甚至超过样例数,导致 X 的列数多于行数 , xTx 显然不满秩。此时可解出多个解, 它们都能使均方误差最小化。选择哪一个解作为输出 ,将由学习算法的归纳偏好决定, 常见的做法是引入正则化 (regularization)项.
线性回归模型的一般形式为:
[y = {{f{omega }}^T}{f{x}} + b]
如果我们的数据是成指数变化的,那么可以把线性回归模型扩展为:
[ln y = {{f{omega }}^T}{f{x}} + b]
更一般的,考虑单调可微函数$g(ullet)$,将线性回归模型的预测值与真实标记联系起来,那么线性回归模型扩展为:
[y = {g^{ - 1}}({{f{omega }}^T}{f{x}} + b)]
2. logistic回归
那怎么把线性回归模型扩展到分类模型中呢,找一个单调可微函数,将线性回归模型的预测值与真实类别联系起来。
考虑二分类问题,单位阶跃函数是理想的分类函数,若预测值大于0则为{1}正类,小于0则为{0}负类,等于0则可任意判别。但是这样的阶跃函数不连续,不是可微的。因此我们利用对数几率函数(logistic function)来近似单位阶跃函数。
[y = frac{1}{{1 + {e^{ - z}}}}]
将z值转化成一个接近于0或1的y值。
[ln frac{y}{{1 - y}} = {{f{omega }}^T}{f{x}} + b]
[ln frac{{p(y = 1|x)}}{{p(y = 0|x)}} = {{f{omega }}^T}{f{x}} + b]
该模型是在用线性回归模型的预测值去逼近真实标记的对数($ln$)几率($frac{y}{1 - y}$),其对应的模型成为“logistic回归”。
视y为类后验概率估计$p(y=1|x)$,有:
[y = p(y = 1|x) = frac{1}{{1 + {e^{ - {{f{omega }}^T}{f{x}} - b}}}}]
[y = p(y = 1|x) = frac{1}{{1 + {e^{ {{f{omega }}^T}{f{x}} + b}}}}]
极大似然估计的思想为:对于所有的抽样样本,使它们联合概率${p({y_i}|{{f{x}}_i};{f{w}},b)}$达到最大的系数便是统计模型最优的系数。
给定数据集D,因为对数函数ln(x)是单调增函数,且可以把乘除转换成加减,利于数学计算,所以logistic回归模型最大化“对数似然”,
[l({f{w}},b) = sumlimits_{i = 1}^m {ln p({y_i}|{{f{x}}_i};{f{w}},b)} ]
为了便于讨论,令$f{eta}= ({f{w}};b)$,$widehat{f{x}}= (f{x};1)$,对数似然等价为最小化
[l({f{eta }}) = sumlimits_{i = 1}^m {( - {y_i}{{f{eta }}^T}{{widehat {f{x}}}_i} + ln (1 + {e^{{{f{eta }}^T}{{widehat {f{x}}}_i}}}))} ]
可根据经典数值优化算法如梯度下降法等求得其$f{eta }$的最优解,
[{{f{eta }}^*} = mathop {arg min }limits_{f{eta }} l({f{eta }})]
logistic回归算法
输入:训练集$D = { ({{f{x}}_1},{y_1}),({{f{x}}_2},{y_2}),...,({{f{x}}_m},{y_m})} $;
学习率$alpha$;
终止条件$varepsilon$.
过程:
1:令$f{eta}= ({f{w}};b)$,$widehat{f{x}}= (f{x};1)$
2:针对$l({f{eta }}) = sumlimits_{i = 1}^m {( - {y_i}{{f{eta }}^T}{{widehat {f{x}}}_i} + ln (1 + {e^{{{f{eta }}^T}{{widehat {f{x}}}_i}}}))} $
利用随机梯度下降法求最优解${{f{eta }}^*} = mathop {arg min }limits_{f{eta }} l({f{eta }})$
3:初始化$f{eta}_0$
4:repeat
5:从训练集D中随机挑选一个数据${f{x}_i}, y_i$
6:以学习率$alpha$的速度朝梯度下降的方向更新参数$f{eta}$
7:end for
8:until $Delta {f{eta }} le varepsilon $
输出:logistic回归模型参数$f{w},b$
参考:
机器学习西瓜书 周志华