一、分类
如果某个问题的解可以分为几个离散的值,则称这种问题为分类问题。如果只有0或1两种解,则称为一个二元分类问题,其中0称为负类,1称为正类,由于二元分类问题比较简单,下面都以二元分类问题为例,最后会介绍多元分类问题。分类问题如果采取线性回归的方式去拟合,会得到很差的结果。如下图,假设我们按照
的值来分类,小于0.5的为负类,否则为正类。此时,如果训练样本中有一个很远的正类(最右边的×),那么可能的拟合结果为蓝色的线,这样会有很多样本被错误分类。且线性回归的假设函数
取值可能大于1或者小于0,与分类的离散型取值不符合。
二、假设函数
在线性回归中,我们的假设函数为
,为了使得假设函数的取值介于
之间,我们设假设函数为
,其中
,
称为Logistic函数,也称为Sigmoid函数,其函数图像如下,无穷大时分别趋近于1和0。于是,
,称这种假设函数对应的回归为Logistic回归。
现在来解释一下,Logistic回归中,假设函数的含义:
,即在模型参数
下,
成立的条件下,
取值为x 的概率。
三、决策边界
已经有了假设函数了,现在考虑什么时候将某个样本预测为正类,什么时候预测为负类。由于
表示在模型参数
下,
成立的条件下,
取值为x 的概率,所以,显而易见地,当
时,我们预测为正类,否则为负类,当然
时归为正类和负类都可以,这里归为正类,观察logistic函数图像,我们可以得知,当
时
。
如下图所示的训练集,假设我们用
进行拟合,我们可以发现如果预测
,则
,画出这条线(图中红色的直线),则这条线上方的都被预测为正类,下方的都被预测为负类,这条线就被称为决策边界,决策边界属于假设函数的一个属性,只由模型参数决定,与数据集无关。
类似于线性回归中,可以在特征中添加额外的高次多项式项达到拟合非线性数据的目的,在Logistic回归中,也有这样的操作:
四、代价函数
如果使用线性回归中的代价函数,由于假设函数的改变,会使得代价函数变成一个非凸函数(如下图左,有很多局部最优解),这样就不能用梯度下降法了,所以我们需要设法将函数转变为一个凸函数。
定义:
,其函数图形(y=1时)如下:
通过图像我们可以发现一下两个性质:
- 如果预测值为1的概率为100%,且实际值为1时,代价为0
- 如果预测值为1的概率小于100%,且实际值为1时,预测的概率越小,代价越大,如果概率为0则代价变成无穷大。
y = 0的图像类似,镜像翻转就是,不做分析。
五、简化代价函数和梯度下降
对于上面的代价函数,我们可以将其合并成一个式子:
,于是
,我们的目的就是找到一组解最小化
。
根据梯度下降法的思想,对于
,我们每一次将其更新为
,代入
,对于每个
求偏导数,得到:
,这个式子和线性回归中的梯度下降是一样的,区别在于,这里的
,同样这里的更新也是需要同时更新的,可以用向量化一步搞定。
六、高级优化
可以使用Matlab库中自带的优化版梯度下降进行计算,函数入下
七、多元分类问题
介绍完二元分类问题,现在来看多元分类问题。
假设我们的训练集中有三种物品,我们可以训练三个分类器如右图,分别将其中的一类当正类,其他都当负类,然后进行一次二元分类。计算完三个分类器后,在预测时,向三个分类器中输入一个数据,将会分别返回三个概率,选择概率最大的那个当做预测类别。
八、正则化
8.1 过拟合问题
还是以房价预测为例,如果用线性函数拟合,会出现如上图左的情况,发生欠拟合、高偏差;如果使用更高阶的函数,图像可以非常好的拟合数据(上图右),但是很明显这并不符合生活常识,称之为过拟合、高方差。即,当出现太多的属性时,训练出的假设可能非常好的训练集,但是不能很好的预测新样本数据,即不能很好的泛化新数据。
对于Logistic 回归 ,也会出现过拟合的现象:
解决方法:
- 减少属性的数量。
- 手动选择需要保留的属性
- 模型选择算法
- 正则化。
8.2 正则化的代价函数
如上图,如果采用高阶函数拟合数据会发生过拟合的问题,正则化的思路时将不重要的属性加入一定的惩罚,如下面的式子所示,如果属性3和属性4不重要,则在代价函数后面加上
这两项,那么在训练的时候,为了使得代价函数变小,那么
和
的值就会变得很小,这样最终的函数就会变得平滑,趋近于一个二次函数。
如果不知道如何选取属性,可以将所有属性都加上惩罚,则代价函数入下:
,其中
称为正则化参数。当然,如果
过大,会使得函数图形最后变成一条直线,出现欠拟合的问题。注意一般情况下,
是不加惩罚的,因为这是偏置参数。
8.3 线性回归的正则化
8.3.1 梯度下降法
就是将代价函数 :
分别求偏导,得到每次模型参数的更新值。
8.3.2 正规方程法
同时,当
时,保证矩阵可逆,一定程度上也解决了矩阵不可逆的情况。
8.4 Logistic回归的正则化
8.4.1 梯度下降
对
求导。