逻辑回归模型-逻辑回归算法原理-逻辑回归代码与实现-笔记整合

通过一段时间的学习,总算把逻辑回归模型弄清楚了

《老饼讲解-机器学习》www.bbbdata.com中是讲得最清晰的,结合其它资料,整理一个完整的笔记如下,希望能帮助像我这样入门的新人,快速理解逻辑回归算法原理和逻辑回归实现代码。


目录

一、什么是逻辑回归模型

[1.1 什么是逻辑回归模型](#1.1 什么是逻辑回归模型)

[1.2 线性回归与逻辑回归的区别与关系](#1.2 线性回归与逻辑回归的区别与关系)

[1.3 逻辑回归公式](#1.3 逻辑回归公式)

二、逻辑回归模型原理

逻辑回归模型算法原理

三、逻辑回归损失函数与逻辑回归训练

[3.1 逻辑回归损失函数](#3.1 逻辑回归损失函数)

[3.2 逻辑回归模型训练](#3.2 逻辑回归模型训练)

[3.3 逻辑回归梯度公式](#3.3 逻辑回归梯度公式)

四、逻辑回归实现python代码

[4.1 python实现逻辑回归(调用sklearn)](#4.1 python实现逻辑回归(调用sklearn))

[4.2 python实现逻辑回归(自己实现)](#4.2 python实现逻辑回归(自己实现))

[4.3 逻辑回归模型评估](#4.3 逻辑回归模型评估)


一、什么是逻辑回归模型

1.1 什么是逻辑回归模型

逻辑回归模型(Logistic Regression)包含了二元逻辑回归和多元逻辑回归,二元逻辑回归用来解决二分类问题,多元逻辑回归用来解决多分类问题。多元逻辑回归属于二元逻辑回归的拓展,但二元逻辑回归用得最多,学习应先从二元逻辑回归开始。多元逻辑回归在需要时可以选择性学习。一般所说的逻辑回归都是指二元逻辑回归,本文的逻辑回归也是指二元逻辑回归。

1.2 线性回归与逻辑回归的区别与关系

线性回归是用做数值预测的,属于回归模型。而逻辑回归是用来做类别预测的,属于模式识别模型。它们的共同之处是,X和y都是线性关系。可以说,逻辑回归是"用于做类别预测"的线性回归。

1.3 逻辑回归公式

逻辑回归的公式包括三部分:

**(1) 逻辑回归模型公式:**逻辑回归模型公式是模型用来计算模型预测结果的公式

**(2) 逻辑回归损失函数公式:**逻辑回归损失函数公式是用来训练模型的评估指标

**(3) 逻辑回归梯度公式:**逻辑回归梯度公式是训练模型时用来调整模型参数的公式

下面详细梳理逻辑回归模型原理,并理解上面三条公式,也就基本弄清楚逻辑回归算法了。

二、逻辑回归模型原理

2.1 逻辑回归模型算法原理

线性回归拟合的是数值,并不符合二分类问题预测类别的需求,但数值与类别也是有关联的,例如,天色越黑,下雨概率就越大,即值越大,属于某类别的概率也越大,值与概率之间可以互转。在数学里通常用函数Sigmoid函数将数值转化为概率:

,sigmoid函数的输出区间为(0,1),它与概率的范围是一致的,

2.2 逻辑回归模型公式

根据逻辑回归模型原理,所以,很自然地,逻辑回归模型公式为:

三、逻辑回归损失函数与逻辑回归训练

3.1 逻辑回归损失函数

逻辑回归的损失函数为交叉熵损失函数:

逻辑回归模型中的w,b参数需要通过数据训练来得到,训练的标准就是使以上的交叉熵损失函数值最小,它的意义是模型预测正确概率最大化,可以通过最大似然法推导出来

具体可参考文章《逻辑回归损失函数推导过程

3.2 逻辑回归模型训练

训练逻辑回归模型可以使用梯度下降法,梯度下降法通过将损失函数每次往负梯度方向调整来找到局部最优解。梯度下降法训练逻辑回归算法流程图如下:

3.3 逻辑回归梯度公式

逻辑回归模型训练过程需要使用到逻辑回归损失函数的梯度公式,逻辑回归梯度公式如下:

可以结合下面的代码来理解公式

四、逻辑回归实现python代码

4.1 python实现逻辑回归(调用sklearn)

python实现逻辑回归一般通过sklearn包来完成,具体示例代码如下:

python 复制代码
"""
本代码展示在python中调用sklearn来训练逻辑回归模型
本代码来自《老饼讲解-机器学习》www.bbbdata.com
"""
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
import numpy as np
#----数据加载------
data = load_breast_cancer()                  # 加载breast_cancer数据
X    = data.data[:,4:8]                      # 作为示例,只使用4个变量来建模
y    = data.target                           # 类别标签

#-----训练模型--------------------
clf = LogisticRegression(random_state=0)     # 初始化逻辑回归模型         
clf.fit(X,y)                                 # 训练逻辑回归模型
#------打印结果------------------------
print("模型参数:"+str(clf.coef_))           # 打印模型系数
print("模型阈值:"+str(clf.intercept_))      # 打印模型阈值

运行后输出结果如下:
模型参数:[[-0.53024026 -3.48636783 -6.89132654 -4.37965412]]

模型阈值:[1.80112869]

4.2 python实现逻辑回归(自己实现)

也可以自己通过算法原理来实现逻辑回归的训练,结合梯度下降算法与逻辑回归梯度公式就可以,具体示例代码如下:

python 复制代码
"""
本代码展示梯度下降求解逻辑回归的python代码实现
本代码来自《老饼讲解-机器学习》www.bbbdata.com
"""
from sklearn.datasets import load_breast_cancer
import numpy as np
#----数据加载------
data = load_breast_cancer()                 # 加载breast_cancer数据
X    = data.data[:,4:8]                     # 作为示例,只使用4个变量来建模
y    = data.target                          # 类别标签
xt = np.insert(X, X.shape[1], 1, axis=1)    # 给X增加一列,作为阈值

#-----梯度下降求解w---------------
np.random.seed(888)                         # 设定随机种子,以确保每次程序结果一次
w = np.random.rand(xt.shape[1])             # 初始化权重
for i in range(10000):                      # 逐步训练权重
    p = 1/(1+np.exp(-xt@w))                 # 计算p
    w = w - 0.01*(xt.T@(p-y))               # 往负梯度方向更新w
p = 1/(1+np.exp(-xt@w))                     # 最终的预测结果
print("参数w:"+str(w))                     # 打印参数

运行后输出结果如下:
参数w:[ 7.16215375 14.98708501 -16.84689114 -73.92486786 3.38331608]

4.3 逻辑回归模型评估

训练完成后,将参数代回到逻辑回归模型,就是最用终来预测所使用的公式:


整理不易,点赞收藏!

相关链接:《sklearn逻辑回归参数详解》

相关推荐
Power20246662 小时前
NLP论文速读|LongReward:基于AI反馈来提升长上下文大语言模型
人工智能·深度学习·机器学习·自然语言处理·nlp
数据猎手小k2 小时前
AndroidLab:一个系统化的Android代理框架,包含操作环境和可复现的基准测试,支持大型语言模型和多模态模型。
android·人工智能·机器学习·语言模型
sp_fyf_20242 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
知来者逆3 小时前
研究大语言模型在心理保健智能顾问的有效性和挑战
人工智能·神经网络·机器学习·语言模型·自然语言处理
老艾的AI世界4 小时前
新一代AI换脸更自然,DeepLiveCam下载介绍(可直播)
图像处理·人工智能·深度学习·神经网络·目标检测·机器学习·ai换脸·视频换脸·直播换脸·图片换脸
Chef_Chen5 小时前
从0开始学习机器学习--Day14--如何优化神经网络的代价函数
神经网络·学习·机器学习
AI街潜水的八角6 小时前
基于C++的决策树C4.5机器学习算法(不调包)
c++·算法·决策树·机器学习
喵~来学编程啦6 小时前
【论文精读】LPT: Long-tailed prompt tuning for image classification
人工智能·深度学习·机器学习·计算机视觉·论文笔记
Chef_Chen8 小时前
从0开始学习机器学习--Day13--神经网络如何处理复杂非线性函数
神经网络·学习·机器学习
Troc_wangpeng8 小时前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习