我的 IBM 登录 订阅

什么是线性判别分析 (LDA)?

2023 年 11 月 27 日

什么是 LDA?

线性判别分析 (LDA) 是一种在监督机器学习中用于解决多类分类问题的方法。LDA 可通过数据降维对具有多个特征的多个类进行分离。此技术在数据科学中非常重要,因为它有助于优化机器学习模型。

线性判别分析也称为正态判别分析 (NDA) 或判别函数分析 (DFA),它采用生成式模型框架。这意味着 LDA 算法对每个类别的数据分布进行建模,并使用贝叶斯定理1 对新数据点进行分类。贝叶斯定理计算条件概率,表示在某个事件发生的情况下另一个事件发生的概率。LDA 算法使用贝叶斯定理计算输入数据集是否属于特定输出的概率来进行预测。有关贝叶斯统计数据的回顾以及它如何影响监督学习算法,请参阅朴素贝叶斯分类器

LDA 的工作原理是识别分离或表征两类或多类对象或事件的特征的线性组合。LDA 通过将具有两个或多个维度的数据投影到一个维度中来实现这一点,以便可以更轻松地对其进行分类。因此,这种方法有时称为降维方法。这种多功能性确保 LDA 可用于多类数据分类问题,而不像逻辑回归那样仅限于二元分类。因此,LDA 通常用于增强决策树随机森林或支持向量机 (SVM) 等其他学习分类算法的运行。

线性判别分析的起源

线性判别分析 (LDA) 以 Fisher 的线性判别为基础,这是一种由 Ronald Fisher 爵士在 20 世纪 30 年代开发出的统计方法,并在后来由 C. R. Rao 简化为一种多类版本。Fisher 方法旨在识别用于区分两类或多类标记对象或事件的特征的线性组合。

Fisher 方法通过分离投影后的数据的类别来降低维度。分离意味着最大限度地提高投影均值之间的差别并最大限度地降低类内的投影方差。

LDA 的实际应用

假设一家银行正在决定是批准还是拒绝贷款申请。该银行使用两个特征来做出此决定:申请人的信用评分和年收入。

在这里,两个特征或类别被绘制在一个带有 X-Y 轴的二维 (2D) 平面上。如果我们尝试只用一种特征对批准进行分类,可能会发现重叠现象。通过应用 LDA,可以绘制一条直线,将这两类数据点完全分开。LDA 通过使用 X-Y 轴创建一个新轴,用直线分隔不同类别,并将数据投影到新轴上来实现这一点。

为了创建该新轴并降低维度,LDA 遵循以下标准:

  • 最大限度地提高两个类别的均值之间的差别。
  • 最小化单个类中的方差。

LDA 的属性和假设

LDA 的工作原理是在不丢失类别信息的情况下,将特征空间(即具有 n 维的数据集)投影到一个更小的空间“k”(其中 k 小于等于 n – 1)。LDA 模型包括针对每一类数据计算的统计属性。在存在多个特征或变量的情况下,这些属性是根据多元高斯分布3 计算的。

多变量包括:

  • 均值
  • 协方差矩阵,它可用于衡量每个变量或特征与该类中其他变量或特征的关系

通过数据集中估计的统计属性被馈送到 LDA 函数中,以进行预测并创建 LDA 模型。由于该模型假设如下,因此需要牢记一些限制:

  • 输入数据集具有高斯分布特性;在此情况下,绘制这些数据点可形成一条钟形曲线。
  • 数据集是线性可分离的,这意味着 LDA 可以绘制直线或决策边界来分隔数据点。
  • 每个类均具有相同的协方差矩阵。

由于这些原因,LDA 在高维特征空间中可能表现不佳。

特征向量和特征值的作用

降维涉及用直线分离数据点。从数学角度来说,我们会使用特征向量和特征值来分析线性变换。假设绘制了一个具有多个特征的数据集,从而形成了一个多维散点图。特征向量可提供散点图中的“方向”。特征值则表示该方向数据的重要性。特征值越高表示相关特征向量越重要。

在降维过程中,特征向量会根据数据集进行计算,并在两个散点矩阵中进行收集:

  • 类间散度矩阵(有关每个类内数据分布的信息)
  • 类内散点矩阵(类与类之间的分布情况)。
小球在轨道上滚动的三维设计

最新的 AI 新闻 + 洞察分析

在每周的 Think 时事通讯中,发现专家精选的有关 AI、云等的洞察分析和新闻。 

准备实施线性判别分析

要有效地使用 LDA,必须事先准备数据集。以下是实施 LDA 的步骤和最佳实践:

1. 对这些数据进行预处理,以确保其被规范化和中心化

这是通过传递 LDA 的 n 分量参数来实现的,该参数用于标识要检索的线性判别器的数量。

2. 为低维空间选择一个适当的维数

这是通过传递 LDA 的 n 分量参数来实现的,该参数用于标识要检索的线性判别器的数量。

3. 对此模型进行正则化

正则化旨在防止过拟合,即统计模型与训练数据完全拟合,从而降低准确度。

4. 使用交叉验证来评估模型性能

可以通过绘制混淆矩阵来评估如 LDA 等分类器,将实际类值作为行,预测类值作为列。利用混淆矩阵,可以很容易地看出分类器是否混淆了两个类,即,将一个类错误地标记为另一个类。例如,有一个 10 x 10 混淆矩阵,预测从 0 到 9 的图像。在 y 轴上将实际值绘制为行。在 x 轴上将预测结果绘制为列。要查看分类器在 10 x 10 混淆矩阵示例中混淆 4s 和 9s 图像的次数,需要查看第 4 行和第 9 列。

线性判别函数的工作原理

线性判别函数可根据特征对数据点进行分离并将其归入不同的类或类别,从而帮助做出针对分类问题的决策。其计算流程可概括为以下几个关键步骤:

计算类间方差

类间方差是指不同类之间的可分离性,即类均值之间的距离。

计算类内方差

类内方差是类均值与样本之间的差别。

将数据投射到低维空间

这样可以实现类间方差最大,类内方差最小。我们可以用以下等式按照数学方法表示两个类的线性判别函数

δ(x) = x * ( σ2 * (μ01) - 2 * σ2 * (μ0212) + ln(P(w0) / P(w1)))

其中:

  • δ(x) 表示线性判别函数。
  • x 表示输入数据点。
  • μ0μ1 是两个类的均值。
  • σ2 是类内公共方差。
  • P(ω0)P(ω1) 为这两个类的先验概率。

LDA 应用示例

我们使用此方程式来研究某一贷款审批示例。概括而言,银行正在决定是批准还是拒绝贷款申请。银行使用两个特征来做出此决策:申请人的信用评分 (x) 和年收入。银行已收集先前贷款申请人的历史数据,以及相关贷款是否已获得批准。

  • 类 ω0 表示“贷款被拒绝”。
  • 类 ω1 表示“贷款已批准”。

利用线性判别函数,银行可以计算出每个贷款申请的分数 (δ(x))。 

线性判别函数的等式可能如下所示:

δ(x) = x * ( σ2 * (μ01) - 2 * σ2 * (μ0212) + ln(P(w0) / P(w1)))

  • x 表示申请人的信用评分和年收入。
  • μ0μ1 是这两个类的相关特征的平均值:“贷款被拒绝”和“贷款已批准”。
  • σ2 是类内公共方差。
  • P(ω0) 是“贷款被拒绝”的先验概率,P(ω1) 是“贷款已批准”的先验概率。

银行计算每笔贷款申请的线性判别函数。

  • 如果 δ(x) 为正值,则表明贷款申请更有可能获得批准。
  • 如果 δ(x) 为负值,则表明贷款申请更有可能被拒绝。

于是,银行可自动运行其贷款审批流程,从而做出更快、更一致的决策,同时最大限度减少人为偏见。

线性判别分析的应用

这些是 LDA 可用于解决复杂问题,并帮助组织做出更好决策的典型场景。

金融领域的信用风险评估

为了降低风险,金融机构必须识别并最大限度地减少信用违约。LDA 可以通过筛选财务因素和行为数据,帮助从信誉良好的申请人中识别可能拖欠贷款的申请人。

医疗保健领域的疾病诊断

快速准确的疾病诊断对于实现有效的治疗至关重要。医院和医疗保健提供方必须解读大量医疗数据。LDA 可通过识别患者数据中的模式和关系来帮助简化复杂的数据集,同时提高诊断准确性。

电子商务领域的客户细分

为了有效营销,电子商务企业必须能够对不同的客户群进行分类。LDA 在细分客户方面发挥着关键作用,使电子商务公司能够针对不同的客户群体量身定制营销策略。其结果是带来更加个性化的购物体验,提高客户忠诚度和销售额。

制造领域的质量控制

在生产高质量产品的同时最大限度减少缺陷是一项基本挑战。来自机械的传感器数据可与 LDA 一起使用,从而识别与缺陷相关的模式。通过实时检测异常情况,制造商可立即采取纠正措施,从而提高产品质量并减少浪费。

营销领域的营销活动优化

您可通过使用个性化内容来定位对口的受众,从而最大化您的广告预算;然而,要确定相应的受众细分群体却可能十分困难。LDA 可通过对客户属性和行为进行分类来简化此流程,从而提升广告活动的定制化程度。此方法可带来更高的投资回报率 (ROI) 和更好的客户体验。

线性判别分析和 Python

要深入了解 Python 的线性判别分析并充分利用 scikit-learn 库,可以学习 IBM watsonx 中的教程使用 Python 和 scikit-learn 学习分类算法。该教程将帮助您掌握使用 Python 和 scikit-learn(也称为 sklearn)解决基于分类的机器学习问题的基础知识。

在此分步教程中,您首先需导入必要的 Python 库以处理 Iris 数据集、执行数据预处理,以及创建和评估 LDA 模型:

<Python 代码片段>

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sklearn
import seaborn as sns
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix

如果未安装这些库,则可使用 pip install 解决此问题。

另请参阅此 scikit-learn 文档以了解有关使用 sklearn.discriminant_analysis.LinearDiscriminantAnalysis 的 Python 实现的关键参数、属性及一般示例的概述。

专家荟萃 | 播客

解码 AI:每周新闻摘要

加入我们的世界级专家团队,包括工程师、研究人员、产品负责人等,他们将穿透 AI 的喧嚣,为您带来最新的 AI 新闻和见解。

使用线性判别分析的优点和缺点

在将线性判别分析 (LDA) 应用于各种分类问题时,了解其优点和局限性至关重要。了解权衡有助于数据科学家和机器学习从业者就其是否适合特定任务做出明智决策。

主要优势

  • 计算简单高效:LDA 是一种简单而强大的算法。它比较容易理解和实现,因此机器学习新手也可以使用。此外,它的高效计算还能确保快速得出结果。
  • 管理高维数据:当特征的数量大于训练样本的数量时,LDA 就会很有效。因此,LDA 在文本分析、图像识别和基因组学等应用中非常有价值,因为这些应用中的数据通常都是高维数据。
  • 处理多重共线性:LDA 可以处理多重共线性,即不同特征之间存在高度相关性。它能将数据转换到低维空间,同时保持信息的完整性。

主要缺点

- 共享均值分布:当类分布共享均值时,LDA 会遇到挑战。LDA 努力创造一个新轴,以线性方法将两个类分开。因此,LDA 可能无法有效区分具有重叠统计属性的类。例如,假设两种花的花瓣长度和宽度高度相似,那么 LDA 可能会发现很难仅根据这些特征来区分这些种类。因此,这里优先考虑替代技术,例如非线性判别分析方法。

- 不适用于未标记数据:LDA 会作为一种监督学习算法来应用;换言之,它会对已标记数据进行分类或分离。相比之下,另一种降维技术“主成分分析 (PCA)”则会忽略类标签并保留方差。

相关解决方案

相关解决方案

IBM watsonx.ai

使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。

了解 watsonx.ai
人工智能 (AI) 解决方案

借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。

深入了解 AI 解决方案
AI 咨询与服务

通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。

深入了解人工智能服务
采取后续步骤

一站式访问跨越 AI 开发生命周期的功能。利用用户友好型界面、工作流并访问行业标准 API 和 SDK,生成功能强大的 AI 解决方案。

深入了解 watsonx.ai 预约实时演示