【机器学习】线性模型 |线性回归,逻辑回归,线性判别分析的各种线性回归的原理和使用示例全解析


线性模型我们主要讲解几个经典的线性模型

线性模型很大程度上是非线性网络,深度学习的基础~

主要有三个内容

  • 1 线性回归(又分为一元线性回归和多元线性回归)

  • 2 对数几率回归(也称为逻辑回归)

  • 3 线性判别分析

1 经典线性模型

2.1 线性回归——线性模型解决回归问题(连续型)

2.1.1 基本原理

线性回归的原理很简单,数学表达式为

f ( x ) = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . w n x n f(x)=w_1x_1+w_2x_2+w_3x_3+...w_nx_n f(x)=w1x1+w2x2+w3x3+...wnxn(1)

其中,x是特征, x 1 , x 2 . . . x n x_1,x_2...x_n x1,x2...xn代表n个属性,每个属性前面有一个系数 w i w_i wi

优化的时候我们最小化 f ( x ) f(x) f(x)和真实标记 y i y_i yi的差的平方(即最小二乘法)=》 m i n ( f ( x i ) − y i ) 2 min(f(x_i)-y_i)^2 min(f(xi)yi)2

我们见到的(1)往往是一个矩阵形式的运算

f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b

如果我们假设f(x)输出是在指数尺度上变换的,那么我们可以得到

l n f ( x ) = w T x + b lnf(x)=w^Tx+b lnf(x)=wTx+b ——对数线性回归,所以线性模型也不一定严格线性哦!

当然,我们通过一个生活中的例子来形象地理解线性回归。

2.1.2 使用示例–房价预测

假设你想要预测不同地区的房屋价格。你手头有一些历史数据,包括房屋的大小(平方米)、卧室数量、浴室数量以及它们的售价。我们的目标是建立一个模型,以便在给定新房屋的特征时,能够预测其可能的市场售价。

数据准备

首先,你需要收集数据。这些数据可能包括:

  • 自变量(解释变量):房屋的大小、卧室数量、浴室数量。
  • 因变量(响应变量):房屋的售价。

建立模型

接下来,你可以使用多元线性回归来建立一个模型。这个模型可能会是这样的:

[ 售价 = + ω 1 × 房屋大小 + ω 2 × 卧室数量 + ω 3 × 浴室数量 + b ] [ \text{售价} = + \omega_1\times \text{房屋大小} + \omega_2 \times \text{卧室数量} + \omega_3 \times \text{浴室数量} + b ] [售价=+ω1×房屋大小+ω2×卧室数量+ω3×浴室数量+b]

在这个模型中, b b b是截距,表示在没有卧室和浴室的情况下的基准价格。 ω 1 , ω 2 , ω 3 \omega_1,\omega_2,\omega_3 ω1,ω2,ω3是斜率,可以直观理解为表示房屋大小、卧室数量和浴室数量每增加一个单位,房屋售价平均增加的金额,同时这三个斜率里面越大的就越重要~

模型优化拟合

通过最小二乘法,你可以找到最佳的值,使得模型预测的售价与实际售价之间的误差最小。

2.2 逻辑回归——线性模型解决二分类问题(离散型)

2.2.1 基本原理

逻辑回归,又叫对数几率回归(注意,这里虽然叫回归(往往是连续型),但是是解决分类的离散型问题)

怎么实现的?

就是在线性回归的基础上,加一个单调可微函数将输出 f ( x ) f(x) f(x) 变换为真实值预测类别z,加的往往是一个对数几率函数

z = 1 1 + e f ( x ) z=\frac{1}{1+e^{f(x)}} z=1+ef(x)1

优化用极大似然进行优化

2.2.2 使用示例——是否违约判断

让我们通过一个生动的例子来理解对数几率回归:假设你是一家银行的风险管理分析师,你的任务是评估贷款申请者违约的风险。在这个问题中,你的目标是预测申请者是否会违约(是或否),这是一个典型的二分类问题。

数据收集

首先,你需要收集贷款申请者的数据,这些数据可能包括:

  • 年龄
  • 职业
  • 信用分数
  • 月收入
  • 负债比例(总负债/总收入)
  • 贷款金额
  • 房产情况(是否有房产)
  • 以往的信用记录(是否有违约历史)

模型建立

接下来,你可以使用对数几率回归来建立一个模型。这个模型会尝试学习每个特征与违约概率之间的关系。模型的形式可能是这样的:

$ P(\text{违约} | \text{特征}) = \frac{1}{1 + e^{-(b + \omega \times \text{年龄} + \omega_2 \times \text{职业} + \ldots + \omega_n \times \text{负债比例})}}$

在这个模型中,$( P(\text{违约} | \text{特征}) $ 是给定申请者特征的情况下违约的概率,而 ( b , ω 1 , … , ω n ) ( b, \omega_1, \ldots, \omega_n ) (b,ω1,,ωn) 是模型参数,它们代表了每个特征对违约概率的影响。

模型训练

使用银行的历史贷款数据(包括申请者的特征和违约结果),你可以训练对数几率回归模型。模型会尝试找到最佳的参数值,使得预测的违约概率与实际违约情况尽可能一致。用极大似然进行优化

应用模型

现在,当新的贷款申请到来时,你可以使用训练好的模型来评估每个申请者的违约概率。如果模型预测的违约概率超过了某个阈值(比如70%),银行可能会决定拒绝贷款申请,以降低风险。

2.3 线性判别分析——线性模型解决二分类问题(离散型)

2.3.1 基本原理

线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的统计学方法,用于分类和降维。它的目标是找到一个线性组合的系数,使得不同类别之间的距离最大化,同时类内的数据尽可能紧凑

LDA通过最大化类间散布(类间方差)与类内散布(类内方差)的比值来寻找最佳的线性组合。这个比值被称为费舍尔准则(Fisher’s Criterion)。

线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的统计学方法,用于分类和降维。它的目标是找到一个线性组合的系数,使得不同类别之间的距离最大化,同时类内的数据尽可能紧凑。LDA通常用于多分类问题,并且是一种监督学习算法。

LDA的优化主要 通过最大化类间散布(类间方差)与类内散布(类内方差)的比值来寻找最佳的线性组合。这个比值被称为费舍尔准则(Fisher’s Criterion)。

LDA的目标函数可以表示为:

$ J(W) = \frac{W^T(S_B - S_W)W}{W^T(S_W)W} $

其中:

  • ( W ) 是线性判别函数的权重向量。
  • ( S_B ) 是类间散布矩阵。
  • ( S_W ) 是类内散布矩阵。

LDA通过求解这个目标函数来找到最佳的权重向量( W )。

2.3.2 使用示例–正负类判断

下面是一个简化的例子来说明LDA如何进行二分类:

假设我们有一个数据集,其中包含两个类别的样本,每个样本有两个特征(维度)。我们的目标是找到一个直线(在二维空间中)来区分这两个类别。

数据准备

假设我们有以下四个样本点,其中类别标签为1和-1:

(1, 2), 类别: 1
(2, 3), 类别: 1
(4, 5), 类别: -1
(5, 6), 类别: -1

模型决策

计算类内和类间散度矩阵: LDA需要计算每个类别的均值向量(类中心),以及类内散度矩阵(类内协方差)和类间散度矩阵(类间协方差)。

求解LDA方程: 使用类间散度矩阵和类内散度矩阵,我们可以构建一个LDA方程,然后求解这个方程以找到最佳的投影方向(即判别函数的权重)。

应用判别函数: 一旦我们得到了判别函数的权重,我们就可以将其应用于新的样本点,通过计算加权特征值来预测其类别。

分类决策: 对于新的样本点,我们将其特征值代入判别函数,然后根据函数值的正负来决定其类别。如果判别函数的值大于0,我们将其分类为正类(例如类别1),否则为负类(例如类别-1)。

2 线性模型拓展——二分类迁移到多分类

2.1 原理

二分类问题是指将样本划分为两个类别的问题,而多分类问题则是指将样本划分为多个类别的问题。在处理多分类问题时,我们通常会将二分类算法进行扩展,以处理多个类别。其中,OvO(One-Versus-One)、OvR(One-Versus-Rest)和MvM(Many-Versus-Many)是三种常见的策略。

  1. OvO(One-Versus-One):
    OvO策略的基本思想是为每对不同的类别训练一个二分类器。假设有N个类别,那么需要训练的二分类器数量为 C ( N , 2 ) = N ∗ ( N − 1 ) / 2 C(N, 2) = N*(N-1)/2 C(N,2)=N(N1)/2,其中C(N, 2)表示从N个类别中选取2个类别的组合数。对于一个新的样本,将其输入到所有二分类器中进行预测,得到N*(N-1)/2个预测结果。然后,根据这些预测结果,通过投票或者其他策略确定最终的类别。OvO策略的优点是训练简单,因为每个二分类器只涉及两个类别的样本。但是,当类别数量很多时,需要训练的二分类器数量会急剧增加,导致计算量大且存储成本高。
  2. OvR(One-Versus-Rest):
    OvR策略的基本思想是为每个类别训练一个二分类器,将该类别作为正类,其他所有类别作为负类。对于N个类别,需要训练N个二分类器。对于一个新的样本,将其输入到所有二分类器中进行预测,得到N个预测结果。然后,选择预测概率最高的类别作为最终的类别。OvR策略的优点是只需训练N个二分类器,相对于OvO策略来说计算量较小。但是,当类别之间存在不平衡时,负类样本数量过多可能导致分类器偏向于负类,从而影响分类性能。
  3. MvM(Many-Versus-Many):
    MvM策略是OvO和OvR的折中方案,旨在减少需要训练的二分类器数量。MvM策略的基本思想是将多个类别组合成一个新的类别,然后为这些新的类别训练二分类器。具体的组合方式可以根据实际情况进行选择,例如基于类别之间的相似性进行组合。MvM策略的优点是可以根据实际需求调整二分类器的数量,以平衡计算量和分类性能。然而,如何选择合适的组合方式以及如何确定组合的数量是MvM策略需要解决的关键问题。

总之,OvO、OvR和MvM是处理多分类问题的三种常见策略。每种策略都有其优缺点,具体选择哪种策略取决于实际需求和问题特点。

2.2 示例

当然,以下是对OvO、OvR和MvM策略的一些具体例子说明:

  1. OvO(One-Versus-One)

假设我们有一个数据集,其中包含三个类别:猫、狗和鸟。在OvO策略下,我们需要为每一对不同的类别训练一个二分类器。因此,我们将训练以下三个二分类器:

  • 猫 vs 狗
  • 猫 vs 鸟
  • 狗 vs 鸟

当我们有一个新的样本(例如,一只猫)时,我们会将其输入到这三个二分类器中进行预测。每个二分类器都会给出一个预测结果(例如,“是猫”或“不是猫”)。然后,我们通过投票来确定最终的类别。在这个例子中,由于有两个分类器预测样本是猫,而只有一个分类器预测样本不是猫,因此最终我们将样本分类为猫。

  1. OvR(One-Versus-Rest)

继续使用上面的三个类别的例子,在OvR策略下,我们将为每个类别训练一个二分类器:

  • 猫 vs 狗和鸟
  • 狗 vs 猫和鸟
  • 鸟 vs 狗和猫

当我们有一个新的样本时,例如一只猫,我们会将其输入到这三个二分类器中进行预测。每个二分类器都会给出一个预测结果,例如“是猫”或“不是猫”。我们选择预测概率最高的类别作为最终的类别。在这个例子中,如果“猫 vs 狗和鸟”的分类器给出了很高的预测概率,那么我们将样本分类为猫。

  1. MvM(Many-Versus-Many)

在MvM策略下,我们可以根据实际需求将多个类别组合成一个新的类别。例如,我们可以将猫和狗组合成一个新的类别“陆地动物”,然后将鸟作为另一个类别。这样,我们就只需要训练一个二分类器:“陆地动物” vs 鸟。

当我们有一个新的样本时,例如一只猫,我们会将其输入到这个二分类器中进行预测。分类器会给出两个预测结果:“是陆地动物”或“是鸟”。根据这个预测结果,我们可以将样本分类为猫(因为它属于“陆地动物”类别)。

需要注意的是,MvM策略的具体实现方式可以有很多变种,取决于如何组合类别以及如何选择训练哪些二分类器。上面的例子只是一种简单的示意,实际应用中可能会有更复杂和灵活的组合方式。

3 线性模型可能遇到的问题

线性模型在处理分类任务时,可能会遇到类别不平衡问题。类别不平衡是指不同类别的训练样例数目相差很大,例如电力盗窃、银行的欺诈交易、罕见疾病识别等场景中,正常样本的数量往往远远大于异常样本的数量。这种情况下,传统的机器学习算法,包括线性模型,可能会偏向于数量多的类别,导致对数量少的类别的预测性能不佳。

具体来说,线性模型(如逻辑回归)在训练时,通常会通过最大化似然函数来求解参数。然而,当类别不平衡时,数量多的类别的样本会占据主导地位,使得模型在训练过程中更倾向于将这些样本分类正确,而忽略了对数量少的类别的分类性能。这就导致了模型的预测结果往往偏向于数量多的类别,对数量少的类别的识别能力下降,即所谓的“偏斜”现象。

为了解决类别不平衡问题,可以采取以下几种策略:

  1. 重采样:通过对数量多的类别进行欠采样(undersampling)或对数量少的类别进行过采样(oversampling)来调整样本的分布,使得不同类别的样本数量接近平衡。需要注意的是,过采样可能会导致模型过拟合,因此需要对生成的额外样本进行适当的处理,如SMOTE算法通过插值生成额外的样本。
  2. 调整权重:在训练过程中,给数量少的类别赋予更高的权重,使得模型在训练时更加关注这些类别。这样可以在一定程度上缓解类别不平衡问题。
  3. 阈值移动:对于二分类任务,可以通过调整决策阈值来改变模型的预测结果。具体来说,可以将决策阈值向数量少的类别移动,使得模型更倾向于将这些样本分类为该类别。这种方法在类别不平衡问题较为严重时比较有效。

4 各个线性模型的比较

线性回归、对数几率回归(也称为逻辑回归)和线性判别分析(LDA)是统计学和机器学习中常用的三种预测模型,它们各自有不同的特点和应用场景。

  1. 线性回归(Linear Regression):
    线性回归是一种连续性预测模型。线性回归优化方式是——找到一组参数,使得预测值和实际值之间的残差平方和最小,即最小二乘法。

  2. 对数几率回归(Logistic Regression):
    对数几率回归是一种广义线性模型,是一种离散型分类模型。它通过逻辑函数(通常是Sigmoid函数)将线性回归的输出映射到0和1之间,这样就可以将其解释为概率。对数几率回归优化方式是——最大化观测样本的条件对数似然函数。它在处理分类问题,尤其是二分类问题时非常有用。

  3. 线性判别分析(Linear Discriminant Analysis, LDA):
    线性判别分析是一种分类方法,它旨在找到一个线性组合的系数,使得不同类别之间的距离最大化,同时类内的数据尽可能紧凑。LDA假设不同类别的数据具有相同的协方差矩阵,这在实际应用中可能不总是成立。

总结:

  • 线性回归用于预测连续值,关注最小化误差。
  • 对数几率回归用于分类问题,关注最大化似然函数。
  • 线性判别分析用于分类问题,关注类别间距离最大化和类内紧凑性。

这三种方法在数学形式上有一定的相似性,但它们的目标和应用场景有明显区别。在实际应用中,选择哪种方法取决于数据的特性和问题的需求。

机器学习之线性回归算法Linear Regression(python代码实现)_python linearregression-CSDN博客

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,我没有完理解您的问题。您是否想了解如何使用Python实现通过机器学习线性回归算法预测股票走势?如果是的话,我可以给您提供一些简单的步骤和示例代码。 首先,您需要收集一些股票历史数据,包括股票价格和一些可能影响股票价格的因素,比如公司财务数据、市场指数、政治事件等等。然后,您需要对这些数据进行清洗和预处理,将其转换成适合机器学习算法的格式。 接下来,您可以使用Python中的Scikit-learn库来实现线性回归算法。以下是一个简单的示例代码: ```python from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split import pandas as pd # 读取数据 data = pd.read_csv('stock_data.csv') # 数据预处理 X = data.drop(['date', 'price'], axis=1) y = data['price'] # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建线性回归模型 model = LinearRegression() # 训练模型 model.fit(X_train, y_train) # 预测测试集 y_pred = model.predict(X_test) # 打印预测结果 print(y_pred) ``` 在上面的示例代码中,我们使用了Scikit-learn库中的LinearRegression类来创建一个线性回归模型。我们将股票历史数据中的日期和价格列删除,然后使用train_test_split函数将数据集划分为训练集和测试集。接着,我们使用fit函数来训练模型,并使用predict函数对测试集进行预测。最后,我们打印出预测结果。 需要注意的是,这只是一个简单的示例代码,实际情况中您需要根据具体数据和问题进行调整和优化。此外,股票价格受到许多因素的影响,使用单一的线性回归模型可能无法准确预测股票走势,您可能需要考虑使用更复杂的机器学习算法来进行预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值