机器学习 day03(二)

逻辑斯蒂回归

【关键词】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. 导入数据
  1. 导入模块
    在这里插入图片描述
  2. 导入手写体数据集
    分离特征和标签
    在这里插入图片描述
    该数据集中有data标签数据
    在这里插入图片描述
    图片images数据,
    在这里插入图片描述
    target特征数据
    在这里插入图片描述
  3. 可以查看一下手写体数据集中的图片
    在这里插入图片描述
  4. 分割训练集和测试集
    取出20%的数据作为训练集和测试集
    在这里插入图片描述
2. 逻辑斯蒂算法模型
  1. 创建逻辑斯蒂算法模型
    在这里插入图片描述

参数说明:
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,表示数据精确度

  1. 训练,预测,查看性能
    在这里插入图片描述
3. 算法性能调优
  1. 创建网格搜索模型
    在这里插入图片描述
    网格搜索模型调优的参数有:
    C:代表惩罚系数(即正则化系数),默认为1,可以用于调节过拟合问题
    solver:代表优化算法,默认是warn,可取值有sag,newton-cg,lbfgs,liblinear,saga,warn等

  2. 查看调优后的性能
    在这里插入图片描述
    查看查正率,查全率,f1值
    在这里插入图片描述

4. 与knn做对比
  1. 创建knn算法模型,训练
    在这里插入图片描述
  2. 查看性能
    在这里插入图片描述
    查看查正率,查全率,f1值
    在这里插入图片描述

由于当期数据集是多分类并且特征和标签之间并没有特别服从线性回归,所以knn的性能会稍微优于逻辑斯蒂
但是逻辑斯是勤奋的学习算法,而knn是懒惰的学习算法,从效率上knn不如逻辑斯蒂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值