别弄错了,Logistic回归是分类模型。
什么是分类问题?
在学习线性回归的时候,我们已经理解了什么是回归,回归就是确定变量之间相互依赖的定量关系的统计学方法。那么同样,在开始学习Logistic回归模型前,我们先来看看什么是分类问题。
分类相比于回归要好理解得多了,我们按照所选取的样本的属性、特征对数据集的样本进行类别的划分,这就是分类。
这里使用二分类举个例子。
上图对四个样本点,按照分类规则为若X > 0.6,则 Y = 0;否则 Y = 1,进行分类。很显然,对于二分类问题我们很直观的就能理解。使用分段函数就可以很清晰直观地表述出分类规则。如下:
为什么不使用线性回归解决分类问题?
确实,在一些特别地情况下,线性回归的确可以找到分类的阈值。如果样本分布较为集中,我们的确可以使用线性回归构造一个线性方程从而找到两个类别间的区分点(阈值),如图所示。
但是,一旦样本点分布不均匀就会出现偏差了。不均匀的样本分布会导致线性方程的参数产生偏移,导致阈值x1会向分布较分散的类别倾斜,造成比较严重的误差,如图:
在y = 1 的类别中出现了一个 x 值过大的点,导致分类的阈值从原本的 x1 移动到了 x2。在这情况下已经有两个样本点已经分类错误了。
另一方面:我们希望分类模型的输出仅仅由 0 和 1 组成即可,而线性回归在趋向正无穷和负无穷的时候并没有极限,会使对应的输出有可能存在远大于 1 或者 远小于 0 的情况,这也是我们不采用线性回归的原因。
因此,我们希望在线性回归的基础上进行改进,使得样本点对应的输出限制在 0 到 1 的范围内。
Logistic回归模型
线性回归模型能够反映出变量之间的关系,而类别的划分是根据样本的属性字段相关,也就是说,样本的类别与样本的属性字段之间存在着定量的关联。因此我们需要线性回归找到类别与属性字段的关联,同时也希望函数的输出在 0 到 1 的范围内部。因此我们只需要在线性回归的基础上进行一些处理即可。首先列出线性回归的方程如下:
这假设方程当然不满足我们的需要,我们对其进行变形:
而这里的 g(x) 函数就是计算机视觉中的神器之一:Sigmoid函数
为什么选择Sigmoid函数呢?
我们来看看它的图形就知道原因了。
这里我使用了 matplotlib 完成对 Sigmoid 函数的绘制,代码如下: