机器学习基石第十一课笔记
Lecture 11:linear Models for classification
本节课的主题如下:
- Linear Models for Binary classification
- Stochastic Gradient Descent
- Multiclass via Logistic regression
- Multiclass via Binary classification
首先对学过的线性模型进行回顾。线性分类是将
score
代入
sign
函数求出分类的结果(叉叉或是圈圈),线性分类求解最有的
w
时是一个NP hard 问题。线性回归是直接将
下面分别对线性分类模型、线性回归模型、逻辑回归模型的运算公式进行化简变换,我们进而可以看出这三个模型之间的关系。
上面公式(1)中的三个式子是关于线性分类、线性回归、逻辑回归关于 err 的计算公式。在上式中 s=wTx , y 则是属于(+1,-1)。乘积
下面可以画出三个模型的 err 关于 ys 函数图像,如下所示:
从上图中可以看出, errSQR 的图像是完全压在 err0/1 上面的。当 errSQR 低的时候 err0/1 的值也很低。 errCE 的函数当 ys 大于0时,函数图像也是高于err_{0/1},也可以说当 errCE 的值小的时候那么err_{0/1}也会很小。我们可以对 errCE 的图像多一个变换,将 errCE 除以 ln2 。变换后的图像如下所示。
可以变换后的
errCE
的图像我们定义为
errSCE
的图像。
errSCE
的图像是完全压在
err0/1
上面的。
从上面的图像我们可以得到:
我们也可通过vc维的只是来证明:
从以上理论证明我们可以通过将
ECEin
做小,那么在一定程度上
E0/1in
也会很小。这就是我们想要做的,通过线性回归或逻辑回归模型来帮组求解线性分类问题。
因此我们一般的操作流程是:首先通过线性回归或逻辑回归求出一个还不错的
wreg
,然后将其作为线性分类模型的
w0
。
线性回归、逻辑回归、PLA的对比如下:
逻辑回归和pocket算法所付出的努力才不多,但是逻辑回归更为常用。
PLA算法是在迭代过程中随机找出一个错误的样本然后在其基础上对
w
做更新。逻辑回归检查所有的样本然后计算合适的梯度做更新。可以看出逻辑回归每次更新所付出的代价要高于PLA。
逻辑回归的公式如下:
我们希望梯度下降能够更简便点。能不能只用单个样本来计算每次更新的梯度?在理论上是可以的,因为每个样本我们是随机取得,所以它的期望值与上面图中公式中计算出的梯度的期望值是一样的(平均N个计算出的梯度值得期望和单独随机抽取一个样本的期望是一样的)。
我们用求出来的随机梯度的值会因为随机抽取到的样本不同而有所差异(波动)。
Stochastic gradient = true gradient +zero-mean ‘noise’ directions
运用随机梯度下降法来接逻辑回归,每次迭代的成本会小很多。一般应用过程中我们会迭代足够多的次数,以保证其收敛(当然这里的保证并非真正意义上的,我们只是觉得它算法应该收敛了)。使用随机梯度下降,稳定性稍差一些。
上上图中的公式可以看出SGD逻辑回归和PLA算法在很大程度上神似。首先SGD中的更新是根据样本犯错的大小来进行更新的,相对于PLA比较“软”。当
当我们在做二元分类的时候相当于在做判断题答案为是否,当我们做多类别分类的时候相当于做选择题。
我们做多类别分类的时候,分类策略可以为选择一个待分的类,把它指定为圈圈,其他剩下的类别的数据为叉叉。这样我们的问题变成了一个二元分类问题。同样其他类别,也可以同上进行操作。这样就会有多个分类模型,每个模型分辨不同的类别。具体如下图所示:
但是这样也会看到一个问题就是在有些区域,有两个分类器都说是属于自己类别的。还有中间的区域,这些分类器都说不是自己类别的。这俨然存在问题。
鉴于以上存在的问题,我们将原来的二元分类用逻辑回归来做,这样的到的分类模型是一个关于概率的预测。在不同地方用不同颜色深浅来表示属于该类别的可能性大小。如下图所示:
这样对于多个分类器,我们只需要取概率最大的那个类别即可。
这样的用一个类别vs其他所有类别,我们称之为OVA(one vs all)。算法流程如下:
这样做的好处是比较有效率,且逻辑回归可以被替代为任何输出实数或概率以比较大小的类逻辑回归算法。坏处是如果类别较多的话,容易出现不平衡现象。(假设有100个类别,我们每次都猜叉叉,这样错误率也只有1%。这就导致多个模型都是猜预测结果为叉叉。我们挑选概率最高的类别也就没有什么意义了)
对于数据不平衡问题,我们可以在多个类别中每次都只是选择两个类别的数据来做分类模型,假设我们有k类数据,那么我们就需要建立 C2k 个小的模型。
每个分类器拥有一张选票,它们可以通过投票决定预测的类别。这样的方式我们称之为OVO(one vs one),算法的具体流程如下:
这样做的有点为有效且稳定,虽然需要训练更多的模型,但每个模型相对于OVA来说需要更少的数据即可。缺点就是需要更多的空间存储 w <script type="math/tex" id="MathJax-Element-20097">w</script>。且预测速度相对要慢一些。