🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 机器学习的线性判别分析 > 原文: [https://machinelearningmastery.com/linear-discriminant-analysis-for-machine-learning/](https://machinelearningmastery.com/linear-discriminant-analysis-for-machine-learning/) 逻辑回归是一种传统上仅限于两类分类问题的分类算法。 如果您有两个以上的类,则线性判别分析是首选的线性分类技术。 在这篇文章中,您将发现用于分类预测建模问题的线性判别分析(LDA)算法。阅读这篇文章后你会知道: * 逻辑回归的局限性和线性判别分析的必要性。 * 从数据中学习的模型表示,可以保存到文件中。 * 如何根据您的数据估算模型。 * 如何从学习的LDA模型中进行预测。 * 如何准备数据以充分利用LDA模型。 本文面向对应用机器学习感兴趣的开发人员,模型如何工作以及如何使用它们。因此,不需要统计学或线性代数的背景,尽管如果您了解分布的[平均值](https://en.wikipedia.org/wiki/Mean)和[方差](https://en.wikipedia.org/wiki/Variance),它确实有帮助。 LDA是制备和应用中的简单模型。关于如何设置模型以及如何推导出预测方程,背后有一些有趣的统计数据,但本文未对此进行介绍。 让我们开始吧。 ![Linear Discriminant Analysis for Machine Learning](img/22b3c2c5fa8914da52405573a5198cc6.jpg) 机器学习的线性判别分析 照片由 [Jamie McCaffrey](https://www.flickr.com/photos/15609463@N03/14898932531) 拍摄,保留一些权利。 ## Logistic回归的局限性 Logistic回归是一种简单而强大的线性分类算法。它还有一些限制,表明需要备用线性分类算法。 * **两类问题**。 Logistic回归旨在用于两类或二元分类问题。它可以扩展为多类分类,但很少用于此目的。 * **不稳定,分离良好**。当类很好地分离时,逻辑回归可能变得不稳定。 * **不稳定的几个例子**。当几乎没有用于估计参数的示例时,逻辑回归可能变得不稳定。 线性判别分析确实解决了这些问题,并且是多类分类问题的首选线性方法。即使存在二元分类问题,尝试逻辑回归和线性判别分析也是一个好主意。 ## LDA模型的表示 LDA的代表是直截了当的。 它包含数据的统计属性,为每个类计算。对于单个输入变量(x),这是每个类的变量的均值和方差。对于多个变量,这是通过多元高斯计算的相同属性,即均值和协方差矩阵。 这些统计特性根据您的数据估算并插入LDA方程式进行预测。这些是您将保存为模型文件的模型值。 我们来看看如何估算这些参数。 ## 获取免费算法思维导图 ![Machine Learning Algorithms Mind Map](img/2ce1275c2a1cac30a9f4eea6edd42d61.jpg) 方便的机器学习算法思维导图的样本。 我已经创建了一个由类型组织的60多种算法的方便思维导图。 下载,打印并使用它。 ## 学习LDA模型 LDA对您的数据做了一些简化的假设: 1. 您的数据是高斯数据,每个变量在绘制时形状像钟形曲线。 2. 每个属性具有相同的方差,每个变量的值在均值周围平均变化相同的量。 通过这些假设,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进行预测 LDA通过估计一组新输入属于每个类的概率来进行预测。获得概率最高的类是输出类,并进行预测。 该模型使用贝叶斯定理来估计概率。简言之[贝叶斯定理](https://en.wikipedia.org/wiki/Bayes%27_theorem)可用于估计输出类别(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旨在用于输出变量是分类的分类问题。 LDA支持二进制和多类分类。 * **高斯分布**。该模型的标准实现假设输入变量的高斯分布。考虑检查每个属性的单变量分布并使用变换使它们看起来更加高斯(例如,指数分布的log和root以及偏斜分布的Box-Cox)。 * **删除异常值**。考虑从数据中删除异常值。这些可能会扭曲用于在LDA中分离类的基本统计数据,例如均值和标准差。 * **相同的差异。 LDA** 假设每个输入变量具有相同的方差。在使用LDA之前标准化数据几乎总是一个好主意,因此它的平均值为0,标准差为1。 ## LDA的扩展 线性判别分析是一种简单有效的分类方法。因为它很简单并且很容易理解,所以该方法有许多扩展和变化。一些流行的扩展包括: * **二次判别分析(QDA)**:每个类使用自己的方差估计(或有多个输入变量时的协方差)。 * **灵敏判别分析(FDA)**:使用非线性输入组合,如样条曲线。 * **正则化判别分析(RDA)**:将正则化引入方差估计(实际上是协方差),缓和不同变量对LDA的影响。 最初的发展被称为线性判别分析或Fisher判别分析。多类版本被称为多判别分析。现在,这些都被简称为线性判别分析。 ## 进一步阅读 如果您希望更深入,本节提供了一些额外的资源。我不得不相信这本书[统计学习简介:在R](http://www.amazon.com/dp/1461471370?tag=inspiredalgor-20) 中的应用程序,本文中的一些描述和符号取自本文,它非常好。 ### 图书 * [统计学习导论:应用于R](http://www.amazon.com/dp/1461471370?tag=inspiredalgor-20) ,第4章,第138页。 * [现代多元统计技术:回归,分类和流形学习](http://www.amazon.com/dp/0387781889?tag=inspiredalgor-20),第8章 * [Applied Predictive Modeling](http://www.amazon.com/dp/1461468485?tag=inspiredalgor-20) ,第12章,第287页 ### 其他 * [线性判别分析一点一点](http://sebastianraschka.com/Articles/2014_python_lda.html)(Python的例子) * [线性判别分析维基百科页面](https://en.wikipedia.org/wiki/Linear_discriminant_analysis)(我没有发现它有用) * [线性判别分析](http://www.saedsayad.com/lda.htm)(包括指向交互式LDA接口的链接) ## 摘要 在这篇文章中,您发现了线性判别分析,用于分类预测建模问题。你了解到: * LDA的模型表示以及学习模型的实际区别。 * 如何从训练数据估计LDA模型的参数。 * 如何使用该模型对新数据进行预测。 * 如何准备数据以充分利用该方法。 你对这篇文章有任何疑问吗? 发表评论并询问,我会尽力回答。