三种线性模型
cd
错误衡量
现在如果用这三个方法都用于二值分类的话,那么它们各自的错误衡量就变为:
s表示用这个模型得出的分数,取值范围应该跟原来是一样的,线性回归的s=wx取值范围为实数R,logistic回归的取值范围为0-1(一个概率)
ys:合起来表示正确的分数
把三个模型的错误衡量表示在同一个坐标轴上面。
cross entropy error :CE, logistic regression的error measure. 交叉熵错误
我们发现 如果平方错误小的时候=>0/1错误小 (但0/1错误小的时候不一定哦)
而 logistic错误小的时候《=》0/1错误小 (同时发生)
对交叉熵错误的尺度缩放
为了推导的方法,我们常常会把logistic回归的错误衡量cross entropy error 进行一个换底的操作。因为 log_2(1+exp(0))=1, 和0/1错误和sqr错误的值是一样的。
scaled的交叉熵一定在0/1错误上面,这是0/1错误的一个稍微紧致的上界,使得我们的推导方便。
Ein与Eout的上界
从上面的坐标轴我们可以看出,SQR的错误和CE的错误都是0/1错误的上限
用回归的方法做分类
从上面可以看出 用回归做分类是可行的,比如CE的error小的时候 0/1的Ein和Eout也会很小,这样就可以进行分类了。
线性回归可以给PLA POCKET或者逻辑斯特回归做初始值,逻辑斯特回归经常会比pocket方法在优化的时候更方便一些。
随机梯度下降 stochastic gradient descent(SGD)
在PLA算法中,权值矩阵W每次更新的时候考虑一个样本,所以每次迭代iteration的时间复杂度是0(1),而在逻辑斯特回归里面每次更新都要计算所有样本用模型计算的Ein的梯度,计算的时间复杂度是o(N),这样逻辑斯特回归的速度就比较慢,我们想办法让每次迭代的时间复杂度改为o(1)。
错误衡量
我们这里随机的找一个点算的,它的error代替整体的Ein的平均值,然后计算梯度,这样得到的梯度是随机梯度。
我们可以认为在多次迭代后真实的梯度达到的效果和随机梯度的效果很好
随机梯度的的有点是比较简单并且适合大量的数据或者在线学习方式
缺点是在性质上会不稳定
模型更新方式
每次随机选择一个编号为n的样本做参数更新 。
我们发现这个SGD的逻辑斯特回归和PLA的更新方式很接近,PLA是如果某个样本的真实值和算出来的值不一样就更新。 SGD表示的是如果错的多一点就更新得多一点
需要注意的两个点:
- 停止条件(以为逻辑斯提回归停止条件是梯度为0) SGD做法是迭代次数要尽量大
- 更新步长怎么算,通常方法去η为0.1
用逻辑斯特回归做多类别分类
one-versus-all Decomposition
二分类的分类器组合 combine binary classifiers 但是对于分类器交叉的地方会有问题
所以我们用软化的回归合并方式 根据判断的类别可能性来分类 (最大后验概率)
用二分类算法来做多酚类问题
对于逻辑斯特回归出现的数据不平衡的问题,这里我们用二分类的问题,但是针对的不是全部的数据。然后对某个样本让这几个分类器进行投票来决定它是哪一类。
对于k个类 需要创建的分类器的个数为 k*(k-1)/2
从下面的例子可以看出在某些情况下 OVO比OVA省力气
其他资料
linear regression for classification +随机梯度下降+多分类之logistic回归+多分类之线性分类投票法