首页 > 其他分享 >【机器学习】线性回归和逻辑回归的关系以及LinearRegression、LogisticRegression两种类的基本概念

【机器学习】线性回归和逻辑回归的关系以及LinearRegression、LogisticRegression两种类的基本概念

时间:2024-08-04 22:23:52浏览次数:9  
标签:LogisticRegression 回归 线性 train LinearRegression test model 模型

引言

线性回归和逻辑回归是机器学习中两种常用的回归分析方法,它们在应用、性质和目的等方面存在显著差异

文章目录

一、线性回归

1.1 定义与目的

线性回归用于估计两个或多个变量之间的定量关系,目的是预测连续型变量,如房价、股票价格等

1.2 公式与计算

其公式通常为 y = w ′ x + b y = w'x + b y=w′x+b,其中 w w w 和 b b b 是待求参数,通过最小二乘法求解

1.3 应用场景

广泛应用于经济学、金融、市场营销、医学、社会科学、环境科学、工程、计算机科学等领域

1.4 特点与要求

要求变量服从正态分布,因变量是连续性数值变量,自变量和因变量呈线性关系

二、逻辑回归

2.1 定义与目的

逻辑回归是一种广义的线性回归分析模型,主要用于解决分类问题,特别是二元分类问题。它通过sigmoid函数将线性回归的输出映射到0和1之间,表示某个事件发生的概率

2.2 公式与计算

其公式可以表示为 p = 1 1 + e − ( w ′ x + b ) p = \frac{1}{1 + e^{-(w'x + b)}} p=1+e−(w′x+b)1​,其中 p p p 表示事件发生的概率,通过优化算法(如梯度下降)求解参数 w w w 和 b b b

2.3 应用场景

常用于数据挖掘、疾病自动诊断、经济预测、金融风险评估、市场营销分析等领域

2.4 特点与要求

对变量分布没有要求,因变量是分类型变量(通常是二分类),不要求自变量和因变量呈线性关系

三、联系

  • 逻辑回归可以看作是在线性回归的基础上,通过sigmoid函数将输出映射到概率值,从而解决了分类问题。从某种意义上说,逻辑回归是线性回归的一种扩展或变种

总结来说,线性回归适用于预测连续型变量,而逻辑回归更擅长处理分类问题。在选择使用哪种方法时,需要根据实际问题的性质和数据的特点来决定

四、线性回归和逻辑回归的Python代码示例

4.1 线性回归示例

使用scikit-learn库来实现一个简单的线性回归模型

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np
# 示例数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1, 2, 2.5, 4, 5])
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 创建线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估模型
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
# 输出模型参数
print(f"Coefficients: {model.coef_}")
print(f"Intercept: {model.intercept_}")

4.2 逻辑回归示例

接下来,我们使用scikit-learn库实现一个逻辑回归模型。

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# 生成模拟数据
X, y = make_classification(n_samples=100, n_features=2, n_redundant=0, n_informative=2,
                           random_state=1, n_clusters_per_class=1)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 创建逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 输出模型参数
print(f"Coefficients: {model.coef_}")
print(f"Intercept: {model.intercept_}")

4.3 代码解释

在上述代码中,我们首先导入了所需的库和函数

  • 对于线性回归,我们使用LinearRegression类来训练模型,并计算均方误差来评估模型性能
  • 对于逻辑回归,我们使用LogisticRegression类,并计算准确率来评估模型在分类任务上的表现

需要注意的是,这些示例使用了模拟数据。在实际应用中,您需要将数据替换为实际问题中的数据集

五、LinearRegression类的基本概念

在机器学习中,LinearRegression 是一种简单但强大的预测模型,用于模拟两个或多个变量之间的线性关系。它属于监督学习算法的范畴,特别是回归分析的一种

5.1 原理

线性回归模型试图找到特征(自变量)和目标变量(因变量)之间的最佳线性关系,形式如下:
y = w 1 x 1 + w 2 x 2 + … + w n x n + b y = w_1x_1 + w_2x_2 + \ldots + w_nx_n + b y=w1​x1​+w2​x2​+…+wn​xn​+b
其中, y y y 是预测的目标变量, x 1 , x 2 , … , x n x_1, x_2, \ldots, x_n x1​,x2​,…,xn​是特征, w 1 , w 2 , … , w n w_1, w_2, \ldots, w_n w1​,w2​,…,wn​ 是每个特征的权重(系数),而 b b b是偏置项(截距)

5.2 目标

线性回归的目标是最小化预测值和实际值之间的差异,通常通过最小化均方误差(Mean Squared Error, MSE)来实现:
MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2 MSE=n1​i=1∑n​(yi​−y^​i​)2
其中, y i y_i yi​是实际值, y ^ i \hat{y}_i y^​i​ 是预测值

5.3 训练方法

  • 最小二乘法(Ordinary Least Squares, OLS):这是最常用的线性回归训练方法。它通过求解正规方程来找到最佳的权重和偏置

5.4 使用场景

5.4.1 预测连续值

例如,房价预测、股票价格预测等

5.4.2 趋势分析

分析数据随时间变化的趋势

5.5 限制

5.5.1 线性假设

线性回归假设特征和目标变量之间存在线性关系

5.5.2 敏感于异常值

异常值可能会对模型产生较大影响

5.6 在 Python 中使用

在 Python 中,LinearRegression 模型可以在 scikit-learn 库中找到。以下是一个简单的使用示例:

from sklearn.linear_model import LinearRegression
import numpy as np
# 示例数据
X = np.array([[1], [2], [3], [4], [5]])  # 特征
y = np.array([1, 2, 2.5, 4, 5])  # 目标变量
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X, y)
# 预测
y_pred = model.predict(X)
# 输出权重和偏置
print(f"Coefficients: {model.coef_}")
print(f"Intercept: {model.intercept_}")
# 查看预测结果
print(f"Predictions: {y_pred}")

5.7 注意事项

  • 在使用 LinearRegression 之前,需要对数据进行适当的预处理,如特征缩放、处理缺失值等。
  • 确保数据满足线性回归的基本假设,必要时进行特征转换或使用其他模型。

六、LogisticRegression的基本概念

在机器学习中,LogisticRegression 是一种广泛使用的分类算法,主要用于解决二分类问题,也可以扩展到多分类问题

6.1 原理

LogisticRegression 虽然名字中有“回归”,但实际上是一种用于分类的算法。它通过使用逻辑函数(也称为 sigmoid 函数)将线性回归的输出映射到 (0) 和 (1) 之间,从而预测一个样本属于某一类别的概率

6.2 Sigmoid 函数

Sigmoid 函数的形式如下:
S ( x ) = 1 1 + e − x S(x) = \frac{1}{1 + e^{-x}} S(x)=1+e−x1​
这个函数的输出始终位于 (0) 和 (1) 之间,非常适合描述概率

6.3 模型公式

逻辑回归模型的公式为:
P ( y = 1 ) = 1 1 + e − ( w T x + b ) P(y=1) = \frac{1}{1 + e^{-(w^T x + b)}} P(y=1)=1+e−(wTx+b)1​
其中, P ( y = 1 ) P(y=1) P(y=1)表示样本属于类别 1 1 1的概率, w w w是权重向量, x x x是特征向量, b b b是偏置项。

6.4 目标

逻辑回归的目标是最小化损失函数,通常使用的是对数损失(log-loss):
L ( y , P ( y ) ) = − y log ⁡ ( P ( y ) ) − ( 1 − y ) log ⁡ ( 1 − P ( y ) ) L(y, P(y)) = -y \log(P(y)) - (1 - y) \log(1 - P(y)) L(y,P(y))=−ylog(P(y))−(1−y)log(1−P(y))

6.5 训练方法

逻辑回归通常通过以下方法进行训练:

6.5.1 梯度下降(Gradient Descent)

通过迭代调整权重和偏置以最小化损失函数。

6.5.2 随机梯度下降(Stochastic Gradient Descent, SGD)

一种更高效的梯度下降方法,它在每次迭代中使用一个样本来更新权重

6.5.3 L-BFGS

一种用于求解大规模优化问题的数值优化算法

6.6 使用场景

6.6.1 二分类问题

例如,邮件是否为垃圾邮件,肿瘤是否为恶性

6.6.2 多分类问题

通过一对多(One-vs-All)或多项式(Multinomial)逻辑回归,可以扩展到多分类问题

6.7 限制

6.7.1 假设特征和目标之间是线性关系

对于非线性问题,可能需要使用特征工程或选择其他模型

6.7.2 对异常值敏感

异常值可能会对模型性能产生较大影响

6.8 在 Python 中使用

在 Python 中,LogisticRegression 模型可以在 scikit-learn 库中找到。以下是一个简单的使用示例:

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 生成模拟数据
X, y = make_classification(n_samples=100, n_features=2, n_redundant=0, n_informative=2,
                           random_state=1, n_clusters_per_class=1)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 输出权重和偏置
print(f"Coefficients: {model.coef_}")
print(f"Intercept: {model.intercept_}")

6.9 注意事项

  • 在使用 LogisticRegression 之前,也需要对数据进行适当的预处理
  • 对于二分类问题,通常设置 C 参数来控制正则化强度,以及 solver 参数来指定优化算法

标签:LogisticRegression,回归,线性,train,LinearRegression,test,model,模型
From: https://blog.csdn.net/m0_49243785/article/details/140912006

相关文章

  • 人工智能深度学习系列—深度学习中的边界框回归新贵:GHM(Generalized Histogram Loss)全
    文章目录1.背景介绍2.Loss计算公式3.使用场景4.代码样例5.总结1.背景介绍目标检测作为计算机视觉领域的核心技术之一,其精确度的提升一直是研究者们追求的目标。边界框回归作为目标检测中的关键步骤,其性能直接影响到检测的准确性。本文将详细介绍一种新型的边界......
  • pytorch深度学习实践(刘二大人)课堂代码&作业——线性回归
    一、课堂代码1.torch.nn.linear构造linear对象,对象里包含了w和b,即直接利用linear实现wx+b(linear也继承自module,可以自动实现反向传播)2.torch.nn.MSELoss损失函数MSE包含2个参数:size_average(求均值,一般只考虑这个参数)、reduce(求和降维)3.torch.optim.SGDSGD优化器,设置......
  • 二、单变量的线性回归 univariate linear regression——预测问题
    2.1单变量线性函数假设函数hθ(x)=θ0+θ1x代价函数:平方误差函数或者平方误差代价函数h(x(i))是预测值,也写做y帽,y(i)是实际值,两者取差分母的2是为了后续求偏导更好计算。目标:最小化代价函数,即minimizeJ(θ0,θ1)得到的代价函数的三维图如下将三维图平面化等高......
  • Python 中的多元回归
    我想在Python中基于多个相关数据数组和多个独立数据执行多元线性回归。我见过很多多重线性回归,具有多个独立输入,几乎每个人都认为多重=多元,但事实并非如此。我在互联网上看不到任何真正的多元教程。我想要的是多个输出+多个输入。frompandasimportDataFramefromsklear......
  • 如何在for循环中使用curve_fit函数在python中一次性创建多个回归?
    简而言之,我有两个矩阵,一个称为t,另一个称为y。每个都有7列。假设它们被称为a、b、c、d、e、f和g。我想要的是从a对a、b对b、...、g对g这两个矩阵进行回归。我已经设法使我的算法使用curve_fit对一列进行回归一次。但我真正希望的是它能够一次性完成7个回归......
  • 线性回归和逻辑回归揭示数据的隐藏模式:理论与实践全解析
    机器学习之线性回归和逻辑回归1.简介1.1机器学习概述1.2监督学习的定义与重要性1.3线性回归和逻辑回归在监督学习中的作用1.3.1线性回归1.3.2逻辑回归2.线性回归(LinearRegression)2.1定义与目标2.1.1回归问题的定义2.1.2预测连续目标变量2.2模型概述2.2.1......
  • 回归预测|基于灰狼优化BP神经网络的多特征输入单输出的数据回归预测Matlab程序GWO-BP
    文章目录一.灰狼优化BP神经网络基本原理二.灰狼优化BP神经网络Matlab程序2.1实验结果2.2Matlab程序一.灰狼优化BP神经网络基本原理灰狼优化(GreyWolfOptimization,GWO)结合BP神经网络进行数据回归预测是一种结合了优化算法和神经网络的方法,适用于多......
  • JCR一区级 | Matlab实现SO-Transformer-LSTM多变量回归预测(蛇群算法优化)
    JCR一区级|Matlab实现SO-Transformer-LSTM多变量回归预测(蛇群算法优化)目录JCR一区级|Matlab实现SO-Transformer-LSTM多变量回归预测(蛇群算法优化)效果一览基本介绍程序设计参考资料效果一览基本介绍1.【JCR一区级】Matlab实现SO-Transformer-LSTM多变量......
  • 线性回归和逻辑回归
    线性回归(LinearRegression)原理线性回归是一种统计方法,用于研究因变量(目标变量)与一个或多个自变量(特征变量)之间的线性关系。它通过拟合一条直线(或一个平面,在多维情况下)来最小化预测值与实际值之间的误差。线性回归有两种形式:简单线性回归:仅涉及一个自变量。多元线性回归:涉......
  • JCR一区级 | Matlab实现SSA-Transformer-LSTM多变量回归预测
    JCR一区级|Matlab实现SSA-Transformer-LSTM多变量回归预测目录JCR一区级|Matlab实现SSA-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.【JCR一区级】Matlab实现SSA-Transformer-LSTM多变量回归预测,麻雀搜索算法(S......