原文: https://machinelearningmastery.com/linear-discriminant-analysis-for-machine-learning/
逻辑回归是一种传统上仅限于两类分类问题的分类算法。
如果您有两个以上的类,则线性判别分析是首选的线性分类技术。
在这篇文章中,您将发现用于分类预测性建模问题的线性判别分析(LDA)算法。阅读这篇文章后你会知道:
- 逻辑回归的局限性和线性判别分析的必要性。
- 从数据中学习的模型表示,可以保存到文件中。
- 如何根据您的数据估算模型。
- 如何从学习的 LDA 模型中做出预测。
- 如何准备数据以充分利用 LDA 模型。
本文面向对应用机器学习感兴趣的开发人员,模型如何工作以及如何使用它们。因此,不需要统计学或线性代数的背景,尽管如果您了解分布的平均值和方差,它确实有帮助。
LDA 是制备和应用中的简单模型。关于如何设置模型以及如何推导出预测方程,背后有一些有趣的统计量,但本文未对此进行介绍。
让我们开始吧。
机器学习的线性判别分析 照片由 Jamie McCaffrey 拍摄,保留一些权利。
逻辑回归是一种简单而强大的线性分类算法。它还有一些限制,表明需要备用线性分类算法。
- 两类问题。 逻辑回归旨在用于两类或二分类问题。它可以扩展为多分类,但很少用于此目的。
- 不稳定,分离良好。当类很好地分离时,逻辑回归可能变得不稳定。
- 不稳定的几个例子。当几乎没有用于估计参数的示例时,逻辑回归可能变得不稳定。
线性判别分析确实解决了这些问题,并且是多分类问题的首选线性方法。即使存在二分类问题,尝试逻辑回归和线性判别分析也是一个好主意。
LDA 的代表是直截了当的。
它包含数据的统计属性,为每个类计算。对于单个输入变量(x),这是每个类的变量的均值和方差。对于多个变量,这是通过多元高斯计算的相同属性,即均值和协方差矩阵。
这些统计特性根据您的数据估算并插入 LDA 方程式做出预测。这些是您将保存为模型文件的模型值。
我们来看看如何估算这些参数。
方便的机器学习算法思维导图的样本。
我已经创建了一个由类型组织的 60 多种算法的方便思维导图。
下载,打印并使用它。
LDA 对您的数据做了一些简化的假设:
- 您的数据是高斯数据,每个变量在绘制时形状像钟形曲线。
- 每个属性具有相同的方差,每个变量的值在均值周围平均变化相同的量。
通过这些假设,LDA 模型可以估算每个类别数据的均值和方差。在具有两个类的单变量(单输入变量)情况下,很容易想到这一点。
通过将值的总和除以值的总数,可以以正常方式估计每个类(k)的每个输入(x)的平均值(μ)。
muk = 1 / nk * sum(x)
其中 muk 是类 k 的 x 的平均值,nk 是类 k 的实例数。在所有类别中计算方差,作为每个值与平均值的平均平方差。
sigma ^ 2 = 1 /(n-K)* sum((x-mu)^ 2)
其中 sigma ^ 2 是所有输入(x)的方差,n 是实例的数量,K 是类的数量,mu 是输入 x 的平均值。
LDA 通过估计一组新输入属于每个类的概率来做出预测。获得概率最高的类是输出类,并做出预测。
该模型使用贝叶斯定理来估计概率。简言之贝叶斯定理可用于估计输出类别(k)的概率,给定输入(x)使用每个类别的概率和属于每个类别的数据的概率:
P(Y = x | X = x)=(PIk * fk(x))/ sum(PIl * fl(x))
其中 PIk 指的是训练数据中观察到的每个类别(k)的基本概率(例如,对于两类问题中的 50-50 分裂,则为 0.5)。在贝叶斯定理中,这称为先验概率。
PIk = nk / n
上面的 f(x)是属于该类的 x 的估计概率。高斯分布函数用于 f(x)。将高斯插入上述方程并简化我们最终得到下面的等式。这被称为判别函数,并且类被计算为具有最大值将是输出分类(y):
Dk(x)= x *(muk / siga ^ 2) - (muk ^ 2 /(2 * sigma ^ 2))+ ln(PIk)
Dk(x)是给定输入 x 的类 k 的判别函数,muk,sigma ^ 2 和 PIk 都是根据您的数据估计的。
本节列出了在准备用于 LDA 的数据时可能会考虑的一些建议。
- 分类问题。这可能不言而喻,但 LDA 旨在用于输出变量是分类的分类问题。 LDA 支持二进制和多分类。
- 高斯分布。该模型的标准实现假设输入变量的高斯分布。考虑检查每个属性的单变量分布并使用变换使它们看起来更加高斯(例如,指数分布的 log 和 root 以及偏斜分布的 Box-Cox)。
- 删除异常值。考虑从数据中删除异常值。这些可能会扭曲用于在 LDA 中分离类的基本统计量,例如均值和标准差。
- 相同的差异。 LDA 假设每个输入变量具有相同的方差。在使用 LDA 之前标准化数据几乎总是一个好主意,因此它的平均值为 0,标准差为 1。
线性判别分析是一种简单有效的分类方法。因为它很简单并且很容易理解,所以该方法有许多扩展和变化。一些流行的扩展包括:
- 二次判别分析(QDA):每个类使用自己的方差估计(或有多个输入变量时的协方差)。
- 灵敏判别分析(FDA):使用非线性输入组合,如样条曲线。
- 正则化判别分析(RDA):将正则化引入方差估计(实际上是协方差),缓和不同变量对 LDA 的影响。
最初的发展被称为线性判别分析或 Fisher 判别分析。多类版本被称为多判别分析。现在,这些都被简称为线性判别分析。
如果您希望更深入,本节提供了一些额外的资源。我不得不相信这本书统计学习简介:在 R 中的应用程序,本文中的一些描述和符号取自本文,它非常好。
- 统计学习导论:应用于 R ,第 4 章,第 138 页。
- 现代多元统计技术:回归,分类和流形学习,第 8 章
- Applied Predictive Modeling ,第 12 章,第 287 页
- 线性判别分析一点一点(Python 的例子)
- 线性判别分析维基百科页面(我没有发现它有用)
- 线性判别分析(包括指向交互式 LDA 接口的链接)
在这篇文章中,您发现了线性判别分析,用于分类预测性建模问题。你了解到:
- LDA 的模型表示以及学习模型的实际区别。
- 如何从训练数据估计 LDA 模型的参数。
- 如何使用该模型对新数据做出预测。
- 如何准备数据以充分利用该方法。
你对这篇文章有任何疑问吗?
发表评论并询问,我会尽力回答。