1 - 线性回归问题
1.1 - 问题的提出
在银行发放信用卡时,我们希望算法可以给出针对用户信用卡额度的预测,即当我们收集到用户的一些信息(如下),那么我们如何决定发放给该用户的信用额度呢?
key |
value |
age |
23 |
annual salary |
NTD 1,000,000 |
year in job |
0.5 year |
current debt |
200,000 |
1.2 - 线性回归
这个问题要求我们的模型可以给出实数范围内的预测结果。同样的从最简单的假设出发,对于每一个用户,x=(x0,x1,x2,⋯,xd),利用特征的加权和估计额度。我们希望在已经观测到的资料上用户特征的加权和可以很好的拟合用户的额度。
y=∑i=0dwixi
这样得到了
线性回归的假设函数为: h(x)=wTx
和之前用于分类的一点点不同在于加权和不需要再进行一个sign运算来决定是+1还是-1。加权的结果直接就是我们给出的预测值。
1.3 - 线性假设的直观认识
如果x是一维的,就是要找出一条直线来最好的拟合平面上的点;如果x是二维的,就是要找三维空间的一个平面来最好的拟合这些空间中的数据点。所谓最好的拟合, 就是要使得图中的所有的红线(误差residuals,拟合之后还时存在的差异)的总长最小。
linear regression: find lines/hyperplanes with small residuals.
1.4 - 损失函数
为了达到最好的拟合效果,我们就需要给定一个衡量residuals大小的方法,最常用的衡量错误的方法是平方误差:err(y^,y)=(y^−y)2
Ein(w)=1N∑n=1N(h(xn)−yn)2(1)
损失函数越小,就代表模型拟合的越好(暂时认为这么说是对的)。 现在我们的目标就是要最小化Ein(w)
2 - 线性回归算法
通过上一小节的分析,我们现在的目标就是要把Ein做的越小越好,也就是要求一个好的w来使得Ein变小。
为了计算和表示的方便,我们将Ein(w)的计算公式(1)表示为向量的形式。
Ein(w)=1N∑n=1N(wTxn−yn)2=1N∑n=1N(xTnw−yn)2=1N∥∥∥∥∥∥xT1w−y1xT2w−y2⋯xTNw−yN∥∥∥∥∥∥2=1N∥∥∥∥∥∥⎡⎣⎢⎢⎢⎢xT1xT2⋯xTN⎤⎦⎥⎥⎥⎥w−⎡⎣⎢⎢⎢y1y2⋯yN⎤⎦⎥⎥⎥∥∥∥∥∥∥2=1N||XN×(d+1)w(d+1)×1−yN×1||2
现在我们的目标变为求最优的w最小化Ein :
minwEin(w)=1N||Xw−y||2
关于这个Ein(w):
-
Ein(w): 连续,可微分,凸函数(函数的曲线像山谷一样)。
-
凸函数:在函数的最低点(谷底,函数取最小值的地方)的梯度(沿各个变量的方向的导数都)为0。
如果要求得Ein的最小值, 就要满足▽Ein(w)=0,这是一个我们能求得最小值的方法。
task:find wLIN such that ▽Ein(w)=0
也就是说能使得Ein(w)的梯度为0的w就是我们模型的最佳的参数wLIN(在这个点上Ein沿各个方向上的偏微分都是0)。
▽Ein(w)=⎡⎣⎢⎢⎢⎢⎢⎢αEinαw0(w)αEinαw1(w)⋯αEinαwd(w)⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢00⋯0⎤⎦⎥⎥⎥(1)
所以现在的目标是要求解一个wlin使得▽Ein(wlin)=0
2.1 - 求梯度
要找使得Ein梯度为0的wlin,那么第一步我们要考虑的是如何求梯度。
Ein(w)=1N||Xw−y||2=1N(wTXTXaw−2wTXTyb+yTyc)
如何求▽Ein(w):
- 当w是一维的时候:
Ein(w)=1N(aw2−2bw+c) ⟶ ▽Ein(w)=1N(2aw−2b)
- 当w是向量的时候:
Ein(w)=1N(wTAw−2wTb+c) ⟶ ▽Ein(w)=1N(2Aw−2b)
这样我们就得到了线性回归的损失函数Ein的梯度是:
▽Ein(w)=2N(XTXw−XTy)
2.2 - 得到最佳的权重
现在我们已经求出了梯度的表达式,接下来要做的就是求得使得梯度为0的wlin。
task: find wlin such that 2N(XTXw−XTy)=▽Ein(w)=0
▽Ein(w)=0⟶2N(XTXw−XTy)=0⟶wlin=(XTX)−1XTX† y⟶wlin=X†y
其中
X†为X的pseudo-
inverse
2.3 - 线性回归模型
- 从数据D中, 构造数据矩阵X和输出向量y
XN×(d+1)=⎡⎣⎢⎢⎢⎢xT1xT2⋯xTN⎤⎦⎥⎥⎥⎥y=⎡⎣⎢⎢⎢y1y2⋯yN⎤⎦⎥⎥⎥(32)
- 计算伪逆X†:(d+1)×N
- 返回权重wlin=X†y
-
h=XX†y
所以只要有一个很好的可以求解伪逆的算法包,我们就可以很容易的求得线性回归模型的最佳参数,从而得到一个线性回归模型y^=XX†y。, 我们把这样求得的线性模型的参数称为analytic solution或者是closed-form solution。
3 - 线性回归用于二分类
3.1 - 线性回归vs线性分类
我们了解了linear regression,现在来看看线性回归和之前我们介绍的线性分类有什么不同。
- 线性分类
yh(x)err(y,y^)={+1,−1}=sign(wTx)=|[y≠y^]|(57)(58)(59)
想要最小化err(y,y^)(划分错误的点最少)是一个NP难问题。
- 线性回归
yh(x)err(y,y^)∈R=wTx=(y−y^)2(60)(61)(62)
有解析解, 非常容易求解。
由于线性回归有这么容易求解的方法,而{+1,−1}∈R, 那么我们是不是可以使用线性回归来做分类呢?说不定线性回归算法通过一番计算,得到的线性回归模型可以在样本的label为1的时候,返回一个大于0的数; 在样本的label为-1的时候,返回一个小于0的数。
我们只需要在意识上将用于标识正例和负例的+1和−1当做是我们想要拟合的数值就好了。怎么从数学的角度证明这个想法的可行性呢?
3.2 - 两种损失函数的关系
linear regression和linear classification最大的差别就是他们的error function
-
0/1 error function
err0/1(y,y^)=|[sign(wTx)≠y]|
-
square error function
errsqr(y,y^)=(wTx−y)2
左图是y=1的情况下err作为wTx的函数;右图是y=−1的情况下err作为wTx的函数。从这个“图形化的证明”可以看到不管wTx的值是什么,errsqr都是大于err0/1的。也就是在同一个wTx下, 平方的错误是大于0/1的错误的。
err0/1≤errsqr
这能说明什么呢?
根据VC维的理论有:
classification Eout(w)≤classification Ein(w)+◯−−√≤regression Ein(w)+◯−−√(137)(138)
通过上面的这个不等式可以看出,如果我们可以将regression Ein(w)做的很小,那么在一定的程度上保证了classification Eout(w)也会很小。
所以这就从理论上解释了为什么线性回归可以用来做分类。虽然对于线性分类来说线性回归只是在不断的优化(最小化)它的上限。但是优化它的上限是很容易做到的。
这就是linear regression for classification,所以当使用linear regression计算出来的权重w不仅仅可以用于regression,也可以用于binary classification。在很多情况下表现还是不错的。
具体的使用方法是:
一般的做法当我们需要进行二分类的时候,我们可以使用linear regression的结果当做是PLA算法或者是\text{Pocket}算法的初始的w_0。这样可能会加速\text{PLA}算法或者Pocket算法的速度。这是一种常见的把linear regression使用在资料分类的方式。