一、逻辑回归
1.逻辑回归
什么是逻辑回归问题,通俗地讲就是监督下的分类问题。通过前面的学习,我们已经掌握如何解决线性(非线性)回归的问题。那面对分类问题我们是否也可以用线性回归呢?简单起见,我们先讨论二元分类,首先让我们来看一个例子,肿瘤的大小与是否是恶性的关系,其中红色的
×
表示肿瘤大小,对应的
y
轴表示是否为恶性。
我们对数据进行线性回归,得到了一条很完美的直线。我们可以规定,当拟合出来的
y
值大于0.5时,为恶性1;当
y
值小于0.5时,为良性0。这一切看起来似乎很合理,当我们增加一个数据,即有一个肿瘤非常大,显然它是恶性的,但是再用线性回归时,我们可以发现为了去更好地拟合,直线的斜率变低,0.5不再是恶性与良性的分界线。除了这个问题之外,我们知道
y
的可取值应该是
[0,1]
,而采用线性回归我们发现y的可取值是
[−∞,+∞]
。这一系列的问题就促使我们希望寻求一个新的方法来解决分类问题。
2.假设表示
在线性回归问题中,我们定义了
那么把式(3)代入式(2),得
下面我们对 hθ(x) 输出的结果做一个解释。由于它的取值范围,我们可以把它理解为概率。若 hθ(x)=0.7 ,在二元分类(本例)中即表示肿瘤在输入变量 x 下为恶性( y=1 )的概率为 70% 。由于是二元分类, y 取值不是0就是1,因此肿瘤为良性( y=0 )的概率为 1−70%=30% 。
由于sigmoid函数的性质,且 hθ(x)∈(0,1) ,我们认为当 hθ(x)≥0.5 时,我们把数据 x 预测为类1即 y=1 ;当 hθ(x)<0.5 时,我们把数据 x 预测为类0即 y=0 。因此当 θTx≥0 时,预测为类1;当 θTx<0 时,预测为类0。
3.决策边界
既然是分类问题,那么对于二分类,
hθ(x)
一定可以做出一个决策边界,当数据集在某一侧时预测为类1,在另一侧时预测为类0。为了更直观地理解,我们来看一个这样一个例子,训练集分为两类,其中红叉表示一类,蓝圈表示另一类。
对于
注:这里有人可能会有疑问,假如我们规定红叉为类0,蓝圈为类1,如果我们还是认为 θTx≥0 即取得直线上方的点为为类1, θTx<0 即取得直线下方的点为类0,那岂不是会分错?学完本系列,我将给出答案,这也是我曾经学习ML时的困惑。
4.代价函数
在线性回归问题中,我们是这样定义代价函数的
为了方便说明我们令
我们可以看到,当预测的为 hθ(x)=1 且实际的类别也是 y=1 时,代价函数取值为0;而当预测的为 hθ(x)=0 且实际的类别是0,意味着分类完全错误时,代价函数是无穷大,这个错误无法容忍。由于sigmoid函数的作用, hθ(x)∈(0,1) ,因此不会出现代价函数无意义的情况。这是 y=1 的情况,当 y=0 时,正好相反,我们可以自行画出图像,在这里就不进行解释了。
为了能用梯度下降法或其他方法寻找最优 θ ,我们需要改变一下 Cost(hθ(x),y) 的形式,使之更方便计算,并代入到代价函数中即
5.其他优化方法
除了梯度下降法,还有共轭梯度法、BFGS、L-BFGS等等,这几种方法收敛速度快,不用选择步长 α ,但是非常复杂,很难理解。不过在matlab的库中存在这几种方法,我们可以通过函数fminunc自行调用,不过前提是计算好代价函数和梯度。在这里就不详细介绍了。
6.多元分类
让我们举一个例子更直观地进行描述。假如我们有数据集 x ,并且分为三类:1,2,3。训练时我们可以这样做,先把注意力集中在类1,于是当前的任务是把类别1与类别2、3进行分类;然后再把注意力集中在类2,于是当前的任务是把类别2与类别1、3进行分类;最后把注意力集中在类3,于是当前的任务是把类别3与类别1、2进行分类。这样就把多元分类问题转化为二元分类问题,各个击破。现在我们得到了三个分类器,三组 θ 。若给定一个未知类别的数据,通过计算 hθj(x) ,对于第一个分类器( j=1 ),我们得到的是未知类别是类1的概率;对于第二个分类器( j=2 ),我们得到的是未知类别是类2的概率;对于第三个分类器( j=3 ),我们得到的是未知类别是类3的概率。比较这三个概率,哪个概率最大,当然位置数据就属于这个类别。
注:回到前文所示的那个问题。假如我们规定红叉为类0,蓝圈为类1,如果我们还是认为 θTx≥0 即取得直线上方的点为类1, θTx<0 即取得直线下方的点为类0,那岂不是会分错?其实不然,当我们规定的类别相反时,分类器给出的 θ 也正好相反,因为是最小化代价函数,如果分类彻底分反,代价函数则取得极大值。而且最关键一点,对于二维来说, θTx≥0 不代表一定是取得直线上方的点。因此当 θ 取反时, θTx 亦取反,于是当 θTx≥0 时,取得的是类别1,而且是黑色的决策边界下方,符合。所以训练集类别的设定丝毫不会对结果产生影响,无论怎样对训练集设定类1还是类0,当 θTx 时,一定选择的是类1,一定符合训练集即是训练集标注的类别1。
二、正则化
首先我们来了解一下什么是欠拟合和过拟合。欠拟合,顾名思义,拟合的所用的参数过少,导致无法准确拟合训练数据,准确度比较低。而过拟合意味着所用的参数太多导致虽然可以非常准确地拟合训练集,但是无法进行泛化(generalization),即无法掌握训练集的规律。下图左1为欠拟合,右1为过拟合,中间的拟合是我们所需要的。
线性回归和逻辑回归等问题中,如果问题比较复杂,并且特征(参数)较多,我们很难去选择一个很好的参数数量去防止欠拟合和过拟合,这时就需要对我们的代价函数进行正则化(regularization),即在后面增加一个才”惩罚项”,当参数的值较大时代价函数较大,这样训练出来的模型会尽可能地使参数变小,即模型较为简单,避免出现过拟合。增加的一项为:
对于线性回归,我们修改它的代价函数如下:
因此对于权值 θ 的更新也要进行相应的改变,同样对于 θ0 我们不进行正则化。
对于逻辑回归,我们修改它的代价函数如下: