(注:线性回归简单的理解已经在线性回归算法中简单介绍了,本文会部分引用。)
简单来说线性模型就是基于线性函数进行的一种预测,其函数形式为:
f ( x ) = ω T x + b f_(x)=\omega^Tx+b f(x)=ωTx+b
其中的 ω \omega ω和 b b b是学习后得到,确定了两个参数就形成了模型。
在线性回归中,分为两种:①输入的属性数目只有一个,我们称它为“单元线性回归”。②输入的属性数目有多个,我们称它为“多元线性回归”。接下来我们将从这两个方面以及他们的性能度量进行讨论:
单元线性回归,故名思意就是他的属性值为一元。例如:一个人的升高分为“高”、“矮”,我们可以转为为{1.0,0.0}。那么机器试图学习的函数是:
f ( x ) = ω T x + b f_(x)=\omega^Tx+b f(x)=ωTx+b
其中的 ω \omega ω和 b b b就是我们需要确定的参数。那么我们如何确定 ω \omega ω和 b b b,这就要用到之前所说的性能度量。
单元线性回归的性能度量是指 f ( x ) f(x) f(x)与 y y y之间的差别,在回归任务中我们常用均方误差来计算性能度量。其均方误差为:
( ω ∗ , b ∗ ) = ∑ i = 1 m ( f ( x i ) − y i ) 2 (\omega^*,b^*)=\sum_{i=1}^m( f_{(x_i)} - y_{i})^2 (ω∗,b∗)=∑i=1m(f(xi)−yi)2
那么求其最小化均方误差为:
( ω ∗ , b ∗ ) = a r g m i n ( ω , b ) ∑ i = 1 m ( f ( x i ) − y i ) 2 (\omega^*,b^*)=arg \;min_{(\omega,b)}\;\sum_{i=1}^m( f_{(x_i)} - y_{i})^2 (ω∗,b∗)=argmin(ω,b)∑i=1m(f(xi)−yi)2
根据性能度量中所学习的知识,接下来我们来谈论如何实现最小 a r g m i n ( ω , b ) arg \;min_{(\omega,b)} argmin(ω,b):
①首先我们先求解关于 ω \omega ω和 b b b的偏导数:
α E ( ω , b ) α ω = 2 ( ω ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) \frac{\alpha E_(\omega,b)}{\alpha \omega}=2(\omega \sum_{i=1}^m x^2_i-\sum_{i=1}^m(y_i-b)x_i) αωαE(ω,b)=2(ω∑i=1mxi2−∑i=1m(yi−b)xi)
α E ( ω , b ) α b = 2 ( m b − ∑ i = 1 m ( y i − ω x i ) ) \frac{\alpha E_(\omega,b)}{\alpha b}=2(mb- \sum_{i=1}^m (y_i- \omega x_i)) αbαE(ω,b)=2(mb−∑i=1m(yi−ωxi))
②令上述两式都等于零,求出 ω \omega ω和 b b b的解:
ω = ∑ i = 1 m y i ( x i − x ~ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 \omega=\frac{\sum_{i=1}^my_i (x_i -\tilde{x})}{\sum_{i=1}^m x^2_i-\frac{1}{m}(\sum_{i=1}^m x_i)^2} ω=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−x~)
b = 1 m ∑ i = 1 m ( y i − ω x i ) b=\frac{1}{m}\sum_{i=1}^m(y_i-\omega x_i) b=m1∑i=1m(yi−ωxi)
多元线性回归就是引入了多个属性,为了方便,我们将之前的 x x x变为矩阵(大小为 m × ( d + 1 ) m×(d+1) m×(d+1)矩阵), ω \omega ω和 b b b统一归纳为 ω ^ \hat{\omega} ω^。
和1.2一样,可以写出它的最小均方误差:
ω ∗ ^ = a r g m i n ω ^ ( y − X ω ^ ) T ( y − X ω ^ ) \hat{\omega^*}=arg \;min_{\hat{\omega}} \; ( y-X\hat{\omega})^T(y-X \hat{\omega}) ω∗^=argminω^(y−Xω^)T(y−Xω^)
对 ω ^ \hat{\omega} ω^求导可得:
α E ( ω ^ ) α ω ^ = 2 X T ( X ω ^ − y ) \frac{\alpha E_(\hat{\omega})}{\alpha \hat{\omega}}=2X^T(X \hat{\omega}-y) αω^αE(ω^)=2XT(Xω^−y)
令上式等于0,可得:
ω ∗ ^ = ( X T X ) − 1 X T y \hat{\omega^*}=(X^T X)^{-1} X^T y ω∗^=(XTX)−1XTy
最终回归模型为:
f ( x ^ i ) = x ^ T ( X T X ) − 1 X T y f(\hat{x}_i)=\hat{x}^T (X^TX)^{-1}X^Ty f(x^i)=x^T(XTX)−1XTy
为了满足“单位跃阶函数”(1或0),于是我们寻找了一个“替代函数”,对数几率函数正是这样一个常用的替代函数:
y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y=1+e−z1
根据替代函数: z = ω T + b z=\omega^T+b z=ωT+b,带入上式:
y = 1 1 + e − ( ω T + b ) y=\frac{1}{1+e^{-(\omega^T+b)}} y=1+e−(ωT+b)1
上式等价于:
ln y 1 − y = ω T + b \ln\frac{y}{1-y}=\omega^T+b ln1−yy=ωT+b
线性判别分析(LDA)的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。如下图所示:
为了让同类的投影点尽可能的在一起,我们可以让同类样例投影点的协方差尽可能小;想让异类样例的投影点尽可能远离,可以让类中心之间的举例尽可能大。
在前面的学习中我们已经知道了二分类问题,而多分类问题就是用二分类问题进行推广。多分类问题的基本思路是“拆解法”。经典的拆分策略有三种:“一对一”(OvO),“一对其余”(OvR),“多对多”(MvM)。
OvO模式就是将每一个数据进行两两组合,将前面的数据默认为正例,后面的数据默认为反例,这样每次组合将形成一个分类器。最终结果通过投票产生:即吧预测的最多的类别作为最终分类结果。
与OvO不同,OvR是将一个类的样例作为正例,其他的所有样例作为反例来训练。
下图为OvO模式和OvR模式的示意图:
多对多模式是OvO与OvR的特殊情况。MvM是将若干个类作为正例,若干个类作为反例进行训练。但是这个多个类并不是随便划分的,需要有特殊的设计,这个设计为“纠错码输出”(ECOC):ECOC分为两个部分:
①编码:对N个类进行M此划分,每次划分出一部分为正例,一部分为反例;这样进行M次划分,可以形成M个分类器。
②解码:和各自的编码进行比较,计算出距离,选择最小的距离为预测结果。
类别不平衡就是指分类任务中不同类别的迅雷样例数目差别很大的情况。
在实际工作中,再用预测出的y和一个阈值进行比较,若y>0.5,则判断为正例,否则为反例。y值表达了正例的可能性,几率 y 1 − y \frac{y}{1-y} 1−yy反应了正例与反例可能性之比值,阙值为0.5表明正例反例比例相同。
则: y 1 − y > 1 \frac{y}{1-y}>1 1−yy>1预测为正例。
当训练集正反比例不同时, m + m^+ m+表示正例数目, m − m^- m−表示反例数目,那么观测几率为 m + m − \frac{m^+}{m^-} m−m+。
那么当 y 1 − y > m + m − \frac{y}{1-y}>\frac{m^+}{m^-} 1−yy>m−m+时,预测为正例。
从上面的情况看,如果出现分类不平衡的话我们应该怎么处理呢?这里就引出了不平衡学习的一个基本策略——“再缩放”。“再缩放”有三种做法:
①欠采样:简单理解就是去除一些反例,让正例和反例相等。
②过采样:相反,再增加一些正例,使正例和反例相同。
③阈值移动:在训练时再 y 1 − y \frac{y}{1-y} 1−yy后加入比值: m − m + \frac{m^-}{m^+} m+m−