逻辑回归——一文带你搞懂逻辑回归原理

简介: 逻辑回归——一文带你搞懂逻辑回归原理

1、逻辑回归的由来

 本人是统计学专业,这里将自己学习中所理解的逻辑回归,给你们做一个详细的说明,希望能帮助到你们。如果觉得本文对您有帮助,可以关注一下这个博客,精彩抢先看。

 先来回顾一下“线性回归模型”,它有如下两个特点:


因变量是连续性的变量,或者说因变量近似是连续性数据;

它研究的是x,y之间的线性相关关系;

 这里,再回到逻辑回归,它区别于线性回归,最主要的特点就是:


逻辑回归的因变量是0-1型数据;

 对于0-1型数据,就表示这个数据有两个可能的取值。数学上为了方便,把其中一个记为0,另外一个记为1。即:用0和1代表数据的两个结果。

 eg:购买决定:我是买呢?还是不买?

 eg:离职决定:离职?还是不离职?

 我们可以定义:1 = 购买;0 = 不购买; 1 = 离职; 0 = 不离职;

 简单地说:只要有抉择的地方,就会有0-1型数据。0-1型数据反映的不是阿拉伯数字0和1,它反映的是两个不能兼得的结果中的一个。

 如果0-1数据关乎业务的核心诉求,那它就是我们的因变量z(z只是一个标记,你也可以写为y)。于是,同线性回归的定义一样,我们就会有一堆的自变量x(x也是一个标记,你也可以换成任何其他字母),尝试去解释那个因变量。

 于是,我们也需要一个回归模型来解决此类问题。基于这种诉求,便产生了“逻辑回归”。

 


2、逻辑回归模型建立过程中存在的两个问题

 根据上述叙述,我的目标现在很明确。基于一个0-1变量z,建立一个回归模型使得:

image.png


1)问题一

 问题一:x为任意实数,β也为任意实数。因此上述等号右边的值,也为任意实数。但是等号左边的z却是一个0-1变量,显然有问题。

 根本原因在于:0-1型变量z不是连续的,但是等号右边的值却是连续的。因此只有把0-1型变量变得连续了,上述等式才有可能成立。

 于是科学家就想出了一种可能性度量表示这个0-1变量z。这种可能性度量一般用“概率”表示。回到之前的eg,我们定义了:1 = 购买;0 = 不购买;而介于高低之间的存在着很想购买,一般想购买,一点想购买等这样不同的概率程度。

 于是,上式左侧已经变成了一个(0,1)之间的连续型变量了,不再是一个0-1的二值变量。


2)问题二

 问题二:虽然上述“等号两边”都是连续性数据了,但是“等号右边”的取值范围是(-∞,+∞),而“等号左边”的取值范围却是(0,1)之间,很显然又存在问题。

 鉴于上述问题,科学家又想出了一个方法,对于任意一个给定的输入,通过一个函数后,将这个(-∞,+∞)的值,映射到(0,1)之间。于是,引入了“sigmoid函数”。


3)使用matplotlib绘制sigmoid函数

def sigmoid(x):
    return 1. / (1. + np.exp(-x))
x = np.arange(-8,8,0.2)
y = sigmoid(x)
plt.plot(x,y)


结果如下:

image.png


4)逻辑回归函数的推导

image.png

注意:y表示取0或者1的概率。

 


3、逻辑回归——鸢尾花数据集的简单预测

1)相关代码的说明

iris数据集是一个类字典格式的数据。以键-值对形式存在。其中数据存放在 “data”键中,目标变量存放在“target”键中,并且都是以数组形式存放数据的。

pprint叫做“漂亮的打印”,对于有字典格式的数据,都能给你很工整的打印出来,尤其是做爬虫的时候很有用,一定要下去尝试一下。

train_test_split()函数,用于切分数据集,参数test_size=0.2表示我们把整个数据的20%切分出来,作为测试集,那么剩下的80%就是用作训练集。参数random_state=12是一个随机种子,任意整数即可,这个为了保证每次运行代码时,任然是同一个切分。

2)代码如下

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from pprint import pprint
from sklearn.datasets import load_iris
iris = load_iris()
# pprint(iris)
x_tr,x_te,y_tr,y_te = train_test_split(iris["data"],iris["target"],
                                       test_size=0.2,random_state=12)
model = LogisticRegression().fit(x_tr,y_tr)
pre = model.predict(x_te)
print(pre)
print("预测精度如下:")
print(sum(y_te == pre) / len(pre))


结果如下:

image.png

相关文章
|
3月前
|
机器学习/深度学习 算法 数据可视化
探索线性回归算法:从原理到实践
探索线性回归算法:从原理到实践【2月更文挑战第19天】
59 0
探索线性回归算法:从原理到实践
|
1月前
|
算法 Python
决策树算法详细介绍原理和实现
决策树算法详细介绍原理和实现
|
2月前
|
算法
线性回归原理(二)
**线性回归与梯度下降简介:** 梯度下降是一种优化算法,常用于线性回归,模拟下山过程寻找函数最小值。在单变量线性回归中,以函数f(x)=x²为例,从初始点开始,每次迭代沿着负梯度(函数增快的方向相反)移动,通过学习率α控制步长。重复此过程,逐步逼近最小值x=0。在多变量情况下,梯度是一个向量,指向函数增长最快的方向。评估线性回归模型性能的指标有平均绝对误差(MAE)、均方误差(MSE)和均方根误差(RMSE),它们衡量预测值与实际值的差距,越小表示模型越准确。
|
2月前
|
机器学习/深度学习 API Python
线性回归原理(一)
线性回归用于预测,如房价、销售额和贷款额度。它通过回归方程连接自变量与因变量,例如房价可能依赖于距离和污染水平。在Python的`sklearn`库中,`LinearRegression`用于建模,`coef_`给出回归系数。损失函数衡量预测误差,用于模型优化。
|
8月前
|
机器学习/深度学习 算法 数据可视化
决策树算法的原理是什么样的?
决策树算法的原理是什么样的?
207 0
决策树算法的原理是什么样的?
|
机器学习/深度学习 数据采集 人工智能
【机器学习】集成学习(Bagging)——随机森林(RandomForest)(理论+图解+公式推导)
【机器学习】集成学习(Bagging)——随机森林(RandomForest)(理论+图解+公式推导)
564 0
【机器学习】集成学习(Bagging)——随机森林(RandomForest)(理论+图解+公式推导)
|
机器学习/深度学习 数据采集 算法
随机森林算法深入浅出
随机森林(Random Forest)是一种集成学习(Ensemble Learning)算法,由于其优秀的表现在数据挖掘、机器学习等领域得到广泛应用。随机森林通过同时使用多个决策树对数据集进行训练,并通过投票机制或平均化方式来得出最终的预测结果。本文将对随机森林算法的基本原理、优点和缺点以及实现过程进行详细介绍。
470 0
|
机器学习/深度学习 人工智能 算法
【机器学习】逻辑回归(Logistic Regression)(理论+图解+公式推导+代码实现)
【机器学习】逻辑回归(Logistic Regression)(理论+图解+公式推导+代码实现)
623 0
【机器学习】逻辑回归(Logistic Regression)(理论+图解+公式推导+代码实现)
|
机器学习/深度学习 算法
《统计学习方法》极简笔记P6:逻辑回归算法推导
《统计学习方法》极简笔记P6:逻辑回归算法推导
《统计学习方法》极简笔记P6:逻辑回归算法推导
|
机器学习/深度学习 算法 数据挖掘
线性回归算法推导与实战(一)
本文属于 线性回归算法【AIoT阶段三】(尚未更新),这里截取自其中一段内容,方便读者理解和根据需求快速阅读。本文通过公式推导+代码两个方面同时进行,因为涉及到代码的编译运行,如果你没有NumPy,Pandas,Matplotlib的基础,建议先修文章:数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)
150 0
线性回归算法推导与实战(一)