机器学习之逻辑回归

本文深入探讨了逻辑回归的理论,包括Logistic分布、逻辑回归模型、代价函数及其求解方法,如随机梯度下降和牛顿法。接着通过实例展示了如何使用逻辑回归进行二分类和三分类任务,包括数据预处理、模型训练、参数查看、可视化及预测。最后,文章以鸢尾花数据集为例,进行了逻辑回归的分类实践。
摘要由CSDN通过智能技术生成


Logistic 回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。

1 理论

1.1 Logistic 分布

Logistic 分布是一种连续型的概率分布,其分布函数和密度函数分别为:
在这里插入图片描述

Logistic 分布是由其位置和尺度参数定义的连续分布。Logistic 分布的形状与正态分布的形状相似,但是 Logistic 分布的尾部更长,所以我们可以使用 Logistic 分布来建模比正态分布具有更长尾部和更高波峰的数据分布。在深度学习中常用到的Sigmoid函数就是Logistic的分布函数在μ=0,γ=1的特殊形式。

1.2 Logistic 回归

考虑二分类问题,给定数据集
在这里插入图片描述
也就是说,输出Y=1 的对数几率是由输入 x 的线性函数表示的模型,这就是逻辑回归模型。当wTx+b的值越接近正无穷,P(Y=1|x)概率值也就越接近 1。因此逻辑回归的思路是,先拟合决策边界(不局限于线性,还可以是多项式),再建立这个边界与分类的概率联系,从而得到了二分类情况下的概率。
Logistic 回归实际上是使用线性回归模型的预测值逼近分类任务真实标记的对数几率,其优点有:
(1)直接对分类的概率建模,无需实现假设数据分布,从而避免了假设分布不准确带来的问题;
(2)不仅可预测出类别,还能得到该预测的概率,这对一些利用概率辅助决策的任务很有用;
(3)对数几率函数是任意阶可导的凸函数,有许多数值优化算法都可以求出最优解。

1.3 代价函数

逻辑回归模型的数学形式确定后,剩下就是如何去求解模型中的参数。在统计学中,常常使用极大似然估计法来求解,即找到一组参数,使得在这组参数下,我们的数据的似然度(概率)最大。
在这里插入图片描述

1.4 求解

优化的主要目标是找到一个方向,参数朝这个方向移动之后使得损失函数的值能够减小,这个方向往往由一阶偏导或者二阶偏导各种组合求得。逻辑回归的损失函数是:
在这里插入图片描述

1.4.1 随机梯度下降

梯度下降是通过 J(w) 对 w 的一阶导数来找下降方向,并且以迭代的方式来更新参数,更新方式为 :
在这里插入图片描述

1.4.2 牛顿法

牛顿法的基本思路是,在现有极小点估计值的附近对 f(x) 做二阶泰勒展开,进而找到极小点的下一个估计值。假设 wk为当前的极小值估计值,那么有:

2.Demo实践

Step1:库函数导入
Step2:模型训练
Step3:模型参数查看
Step4:数据和模型可视化
Step5:模型预测

2.1 库函数导入

##  基础函数库
import numpy as np 

## 导入画图库
import matplotlib.pyplot as plt
import seaborn as sns

## 导入逻辑回归模型函数
from sklearn.linear_model import LogisticRegression

2.2 模型训练

##Demo演示LogisticRegression分类

## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 0, 0, 1, 1, 1])

## 调用逻辑回归模型
lr_clf = LogisticRegression()

## 用逻辑回归模型拟合构造的数据集
lr_clf = lr_clf.fit(x_fearures, y_label) #其拟合方程为 y=w0+w1*x1+w2*x2

2.3 模型参数查看

##查看其对应模型的w
print('the weight of Logistic Regression:',lr_clf.coef_)
##查看其对应模型的w0
print('the intercept(w0) of Logistic Regression:',lr_clf.intercept_)
##the weight of Logistic Regression:[[0.73462087 0.6947908]]
##the intercept(w0) of Logistic Regression:[-0.03643213]
## 
the weight of Logistic Regression: [[ 0.73462087  0.6947908 ]]
the intercept(w0) of Logistic Regression: [-0.03643213]

2.4 数据和模型可视化

## 可视化构造的数据样本点
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')
plt.show(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值