逻辑斯蒂回归
【关键词】Logistics函数,最大似然估计,梯度下降法
1、Logistics回归的原理
利用Logistics回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。这里的“回归” 一词源于最佳拟合,表示要找到最佳拟合参数集。
训练分类器时的做法就是寻找最佳拟合参数,使用的是最优化算法。接下来介绍这个二值型输出分类器的数学原理
Logistic Regression和Linear Regression的原理是相似的,可以简单的描述为这样的过程:
(1)找一个合适的预测函数,一般表示为h函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果。这个过程是非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的“大概”形式,比如是线性函数还是非线性函数。
(2)构造一个Cost函数(损失函数),该函数表示预测的输出(h)与训练数据类别(y)之间的偏差,可以是二者之间的差(h-y)或者是其他的形式。综合考虑所有训练数据的“损失”,将Cost求和或者求平均,记为J(θ)函数,表示所有训练数据预测值与实际类别的偏差。
(3)显然,J(θ)函数的值越小表示预测函数越准确(即h函数越准确),所以这一步需要做的是找到J(θ)函数的最小值。找函数的最小值有不同的方法,Logistic Regression实现时有梯度下降法(Gradient Descent)。
1) 构造预测函数
Logistic Regression虽然名字里带“回归”,但是它实际上是一种分类方法,用于两分类问题(即输出只有两种)。首先需要先找到一个预测函数(h),显然,该函数的输出必须是两类值(分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:
该函数形状为:
预测函数可以写为:
2)构造损失函数
Cost函数和J(θ)函数是基于最大似然估计推导得到的。
每个样本属于其真实标记的概率,即似然函数,可以写成:
所有样本都属于其真实标记的概率为
对数似然函数为
最大似然估计就是要求得使l(θ)取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数
3) 梯度下降法求J(θ)的最小值
求J(θ)的最小值可以使用梯度下降法,根据梯度下降法可得θ的更新过程:
式中为α学习步长,下面来求偏导:
上式求解过程中用到如下的公式:
因此,θ的更新过程可以写成:
因为式中α本来为一常量,所以1/m一般将省略,所以最终的θ更新过程为:
2、实战
solver参数的选择:
- “liblinear”:小数量级的数据集
- “lbfgs”, “sag” or “newton-cg”:大数量级的数据集以及多分类问题
- “sag”:极大的数据集
实战一. 手写数字数据集的分类
使用KNN与Logistic回归两种方法
1. 导入数据
- 导入模块
- 导入手写体数据集
分离特征和标签
该数据集中有data标签数据
图片images数据,
target特征数据
- 可以查看一下手写体数据集中的图片
- 分割训练集和测试集
取出20%的数据作为训练集和测试集
2. 逻辑斯蒂算法模型
- 创建逻辑斯蒂算法模型
参数说明:
C:代表惩罚系数(即正则化系数),默认为1,可以用于调节过拟合问题
penalty:惩罚方式默认是l2正则化,可取值l1和l2
max_iter:最大收敛次数,默认是100次,仅限于优化算法为"sag",“newton-cg"和"lbfgs”
solver:代表优化算法,默认是warn,可取值有sag,newton-cg,lbfgs,liblinear,saga,warn等
tol: 默认值为0.0001,表示数据精确度
- 训练,预测,查看性能
3. 算法性能调优
-
创建网格搜索模型
网格搜索模型调优的参数有:
C:代表惩罚系数(即正则化系数),默认为1,可以用于调节过拟合问题
solver:代表优化算法,默认是warn,可取值有sag,newton-cg,lbfgs,liblinear,saga,warn等 -
查看调优后的性能
查看查正率,查全率,f1值
4. 与knn做对比
- 创建knn算法模型,训练
- 查看性能
查看查正率,查全率,f1值
由于当期数据集是多分类并且特征和标签之间并没有特别服从线性回归,所以knn的性能会稍微优于逻辑斯蒂
但是逻辑斯是勤奋的学习算法,而knn是懒惰的学习算法,从效率上knn不如逻辑斯蒂