机器学习初级算法入门(二)

参考资料:逻辑回归和线性回归的区别和联系逻辑回归原理正则化样本不均衡解决办法

Table of Contents

1、逻辑回归与线性回归的联系与区别

2、 逻辑回归的原理

2.1 定义

2.2 阶跃函数

2.3 代价函数

2.4 逻辑回归的运算步骤

3、 正则化与模型评估指标

3.1 正则化

 3.2 模型评估

4、逻辑回归的优缺点

5、样本不均衡问题解决办法

6. sklearn参数(见最后一节)


1、逻辑回归与线性回归的联系与区别

  • 分类与回归:

回归模型就是预测一个连续变量(如降水量,价格等)。在分类问题中,预测属于某类的概率,可以看成回归问题。这可以说是使用回归算法的分类方法。

  • 输出

直接使用线性回归的输出作为概率是有问题的,因为其值有可能小于0或者大于1,这是不符合实际情况的,逻辑回归的输出正是[0,1]区间。见下图


机器学习初级算法入门(二)

 参数评估方法  

  1. 线性回归中使用的是最小化平方误差损失函数,对偏离真实值越远的数据惩罚越严重。这样做会有什么问题呢?假如使用线性回归对{0,1}二分类问题做预测,则一个真值为1的样本,其预测值为50,那么将会对其产生很大的惩罚,这也和实际情况不符合,更大的预测值说明为1的可能性越大,而不应该惩罚的越严重。
  2. 逻辑回归使用对数似然函数进行参数估计,使用交叉熵作为损失函数,对预测错误的惩罚是随着输出的增大,逐渐逼近一个常数,这就不存在上述问题了1
  3. 也正是因为使用的参数估计的方法不同,线性回归模型更容易受到异常值(outlier)的影响,有可能需要不断变换阈值(threshold),线性回归分类的情况见下面两图:
  • 参数解释
  1. 线性回归中,独立变量的系数解释十分明了,就是保持其他变量不变时,改变单个变量因变量的改变量。
  2. 逻辑回归中,自变量系数的解释就要视情况而定了,要看选用的概率分布是什么,如二项式分布,泊松分布

2、 逻辑回归的原理

2.1 定义

logistic回归是一种广义线性回归(generalized linear model),因此与多重线性回归分析有很多相同之处。它们的模型形式基本上相同,都具有 w‘x+b,其中w和b是待求参数,其区别在于他们的因变量不同,多重线性回归直接将w‘x+b作为因变量,即y =w‘x+b,而logistic回归则通过函数L将w‘x+b对应一个隐状态p,p =L(w‘x+b),然后根据p 与1-p的大小决定因变量的值。如果L是logistic函数,就是logistic回归,如果L是多项式函数就是多项式回归。

逻辑回归是用与回归类似的思路解决了分类问题

2.2 阶跃函数

现在有nn个数据元组机器学习初级算法入门(二),每个数据元组对应了一个类标号机器学习初级算法入门(二),同时每个数据元组机器学习初级算法入门(二)有m个属性机器学习初级算法入门(二)。假设现在面临的是一个简单的二分类问题,类标号有0,1两种。如果用简单的回归方法对已知数据进行曲线拟合的话,我们会得到如下的曲线方程(曲线拟合的方法后面会说到):

机器学习初级算法入门(二)

注:并不是说逻辑回归只能解决二分类问题,但是用到多分类时,算法并没有发生变化,只是用的次数更多了而已。

 实际上,逻辑回归分类的办法与SVM是一致的,都是在空间中找到曲线,将数据点按相对曲线的位置,分成上下两类。也就是说,对于任意测试元组机器学习初级算法入门(二)机器学习初级算法入门(二)可以根据其正负性而得到类标号。那换句话说,直接依靠拟合曲线的函数值是不能得到类标号的,还需要一种理想的“阶跃函数”,将函数值按照正负性分别映射为0,1类标号。这样的阶跃函数机器学习初级算法入门(二)如下表示:

机器学习初级算法入门(二)

然而,直接这样设计阶跃函数不方便后面的优化计算,因为函数值不连续,无法进行一些相关求导。所以,逻辑回归中,大家选了一个统一的函数,也就是Sigmoid函数,如下公式所示:

机器学习初级算法入门(二)

Sigmoid函数的图像如下图所示,当机器学习初级算法入门(二)时,Sigmoid函数大于0.5;当机器学习初级算法入门(二)时,Sigmoid函数小于0.5。所以,我们可以将拟合曲线的函数值带入Sigmoid函数,观察机器学习初级算法入门(二)与0.5的大小确定其类标号。

机器学习初级算法入门(二)

Sigmoid函数还有一个好处,那就是因为其取值在0,1之间。所以可以看做是测试元组属于类1的后验概率,即机器学习初级算法入门(二)。其实这一点从图像也可以看出来:z的值越大,表明元组的空间位置距离分类面越远,他就越可能属于类1,所以图中z越大,函数值也就越接近1;同理,z越小,表明元组越不可能属于类1.

2.3 代价函数

阶跃函数告诉我们,当得到拟合曲线的函数值时,如何计算最终的类标号。但是核心问题仍然是这个曲线如何拟合。既然是回归函数,我们就模仿线性回归,用误差的平方和当做代价函数。代价函数如下公式所示:

机器学习初级算法入门(二)

其中,机器学习初级算法入门(二)机器学习初级算法入门(二)机器学习初级算法入门(二)真实的类标号。按说此时可以对代价函数求解最小值了,但是如果你将机器学习初级算法入门(二)带入上面的公式的话,那么当前代价函数的图像是一个非凸函数,非凸函数有不止一个极值点,导致不容易做最优化计算。也就是说,上面公式的这个代价函数不能用。

那自然要想办法设计新的代价函数。我们在上面说了,机器学习初级算法入门(二)的取值可以看做是测试元组属于类1的后验概率,所以可以得到下面的结论:

机器学习初级算法入门(二)

更进一步,上式也可以这样表达:

机器学习初级算法入门(二)

上面这个公式表达的含义是在参数机器学习初级算法入门(二)下,元组类标号为机器学习初级算法入门(二)的后验概率。假设现在已经得到了一个抽样样本,那么联合概率机器学习初级算法入门(二)的大小就可以反映模型的代价:联合概率越大,说明模型的学习结果与真实情况越接近;联合概率越小,说明模型的学习结果与真实情况越背离。而对于这个联合概率,我们可以通过计算参数的最大似然估计的那一套方法来确定使得联合概率最大的参数机器学习初级算法入门(二),此时的机器学习初级算法入门(二)就是我们要选的最佳参数,它使得联合概率最大(即代价函数最小)。

2.4 逻辑回归的运算步骤

2.4.1 写出最大似然函数,并进行对数化处理

机器学习初级算法入门(二)

通过上面的分析,显然机器学习初级算法入门(二)机器学习初级算法入门(二)就是代价函数机器学习初级算法入门(二)。为方便后面的推导,我把机器学习初级算法入门(二)也写出来:

机器学习初级算法入门(二)

机器学习初级算法入门(二)

可以看出,如果类标号为1,那么机器学习初级算法入门(二)的取值在[0,1]范围内增大时,代价函数减小,说明越接近真实情况,代价就越小;如果类标号为0,也是一样的道理。

2.4.2用梯度下降法求代价函数的最小值

如果能求出代价函数的最小值,也就是最大似然函数的最大值。那么得到的权重向量W就是逻辑回归的最终解。但是通过上面的图像,你也能发现,机器学习初级算法入门(二)是一种非线性的S型函数,不能直接利用偏导数为0求解。于是我们采用梯度下降法。

首先,根据梯度的相关理论,我们知道梯度的负方向就是代价函数下降最快的方向。因此,我们应该沿着梯度负方向逐渐调整权重分量机器学习初级算法入门(二),直到得到最小值,所以每个权重分量的变化应该是这样的:
机器学习初级算法入门(二)

其中机器学习初级算法入门(二)为学习率,控制步长。而机器学习初级算法入门(二)可以如下计算:

机器学习初级算法入门(二)

上式的推导中用到了Sigmoid函数机器学习初级算法入门(二)的一个特殊的性质:

机器学习初级算法入门(二)

这样,我们就得到了梯度下降法更新权重的变量:

机器学习初级算法入门(二)

最后,说一下权重向量的初始化问题。一般用接近于0的随机值初始化机器学习初级算法入门(二),比如在区间[−0.01,0.01][−0.01,0.01]内均匀选取。这样做的理由是如果机器学习初级算法入门(二)很大,则加权和可能也很大,根据Sigmoid函数的图像(即本文的第一个图像)可知,大的加权和会使得机器学习初级算法入门(二)的导数接近0,则变化速率变缓使得权重的更新变缓。

3、 正则化与模型评估指标

3.1 正则化

查看以下泛化曲线,该曲线显示的是训练集和验证集相对于训练迭代次数的损失。

机器学习初级算法入门(二)

机器学习初级算法入门(二)上图显示的是某个模型的训练损失逐渐减少,但验证损失最终增加。换言之,该泛化曲线显示该模型与训练集中的数据过拟合。根据奥卡姆剃刀定律,或许我们可以通过降低复杂模型的复杂度来防止过拟合,这种原则称为正则化

机器学习初级算法入门(二)

 同样使用梯度下降:

机器学习初级算法入门(二)

 如果在高级优化算法中,使用正则化技术的话,那么对于这类算法我们需要自己定义costFunction。

机器学习初级算法入门(二)

 3.2 模型评估

对于回归模型而言,常见的评估方法包括R平方值(R-Squared)、Adjusted R-squared、平均绝对误差(Mean Absolute Error,MAE)、平均方差(Mean Square Error,MSE)和交叉验证(Cross-Validation)。

详细介绍见(模型评估指标

4、逻辑回归的优缺点

  • 优点
  1. 结果通俗易懂,自变量的系数直接与权重挂钩,可以解释为自变量对目标变量的预测价值大小
  2. 速度快,效率高,并且容易线上算法实现
  3. 预测结果是界于0和1之间的概率
  4. 可以适用于连续性和类别性自变量
  • 缺点
  1. 目标变量中每个类别对应的样本数量要充足,才支持建模。
  2. 要注意排除自变量中的共线性问题。
  3. 异常值会给模型带来很大干扰,应该删除。
  4. 模型本身不能处理缺失值,所以需要对缺失值进行预处理。
  5. 模型是线性分类器,容易欠拟合,分类精度不高
     

5、样本不均衡问题解决办法

  • 1. 产生新数据型:过采样小样本(SMOTE),欠采样大样本。

过采样是通过增加样本中小类样本的数据量来实现样本均衡。其中较为简单的方式是直接复制小类样本,形成数量上的均衡。这种方法实现简单,但会由于数据较为单一而容易造成过拟合。 SMOTE过采样算法: 针对少数类样本的xi,求出其k近邻。随机选取k紧邻中一个样本记为xn。生成一个0到1之间的随机数r,然后根据Xnew = xi + r * (xn - xi)生成新数据。也可通过经过改进的抽样的方法,在少数类中加入随机噪声等生成数据。

欠采样大样本是通过减少多数类样本的样本数量来实现样本均衡。其中比较简单直接的方法就是随机去掉一些数据来减少多数类样本的规模,但这种方法可能会丢失一些重要的信息。还有一种方法就是,假设少数类样本数量为N,那就将多数类样本分为N个簇,取每个簇的中心点作为多数类的新样本,再加上少数类的所有样本进行训练。这样就可以保证了多数类样本在特征空间的分布特性。

  • 2. 对原数据的权值进行改变

通过改变多数类样本和少数类样本数据在训练时的权重来解决样本不均衡的问题,是指在训练分类器时,为少数类样本赋予更大的权值,为多数类样本赋予较小的权值。例如scikit-learn中的SVM算法,也称作penalized-SVM,可以手动设置权重。若选择balanced,则算法会设定样本权重与其对应的样本数量成反比。

  • 3. 通过组合集成方法解决

通过训练多个模型的方式解决数据不均衡的问题,是指将多数类数据随机分成少数类数据的量N份,每一份与全部的少数类数据一起训练成为一个分类器,这样反复训练会生成很多的分类器。最后再用组合的方式(bagging或者boosting)对分类器进行组合,得到更好的预测效果。简单来说若是分类问题可采用投票法,预测问题可以采用平均值。这个解决方式需要很强的计算能力以及时间,但效果较好,相当于结合了组合分类器的优势。

  • 4. 通过特征选择

在样本数据较为不均衡,某一类别数据较少的情况下,通常会出现特征分布很不均衡的情况。例如文本分类中,有大量的特征可以选择。因此我们可以选择具有显著区分能力的特征进行训练,也能在一定程度上提高模型的泛化效果。

6. sklearn参数(见最后一节