线性判别分析LDA(linear discriminant analysis)与二次判别分析QDA(quadratic discriminant analysis)

Source: Python Machine Learning 3rd

什么是LDA

面对有蓝黄两类标签的监督学习问题时:
在这里插入图片描述

  • 使用PCA:PCA曲线(红线)从两个椭圆之间穿过(最大方差正交分量),投影分布呈LD2维度的正态分布,根据这个正态分布的PCA坐标投影,我们无法分别这两类
  • 使用LDA:LDA曲线(蓝线)会从两个椭圆中间穿过,投影后的数据分布同LD1维度的两个正态分布,由此我们有效进行分类

由此可见,面对监督学习问题时,PCA的表现大大下降了。为此我们使用PCA来寻找并确定不同类的子空间在某一维度上差别最大的分布情况,帮助我们对监督学习数据实现降维

LDA与PCA

相同

  • LDA和PCA都用于数据维度降低

不同

  • PCA不适用于监督学习分类问题
  • LDA可以视为比PCA高级的分类技巧,但在实践情况下,使用PCA比使用LDA在图像识别等领域表现更好
  • LDA用于监督学习,而PCA用于非监督学习(也可以用于监督学习。。。)
  • PCA寻找最大方差的正交分量轴,LDA寻找最优化分类的特征子空间,或者说投影后类内方差最小,类间方差最大

LDA python实现

使用LDA前我们需要注意以下条件:

  • 数据正态分布
  • 样本彼此独立
  • 即使不满足以上两点,LDA还是能有较好的表现

使用sklearn实现LDA

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
# 标准化数据输入集
...
# LDA实现监督学习数据降维
lda = LDA(n_components=2)
X_train_lda = lda.fit_transform(X_train_std, y_train)
# 逻辑回归实现预测
lr = LogisticRegression(multi_class='ovr', random_state=1, solver='lbfgs')
lr = lr.fit(X_train_lda, y_train)
# 可视化
plot_decision_regions(X_train_lda, y_train, classifier=lr)
plt.xlabel('LD 1')
plt.ylabel('LD 2')
plt.legend(loc='best')
plt.tight_layout()
plt.show()

很明显,当我们使用LDA来降低数据维度时,fit训练函数需要y_train,而这在PCA中是不需要的

plot_decision_regions是python machine learning 3rd中的可视化方程,可以很好地实现二维数据的可视化
链接:二维数据可视化模型

结果:
完美
使用LDA降至只有二维仍然能够近乎完美地预测出监督学习分类结果

再进一步QDA

通过之前的比较,我们可以发现LDA相比PCA在监督学习分类问题中巨大的优势,然后LDA正如其名,只能够进行线性分析,看看scikit learn上的一个例子:
在这里插入图片描述
面对交叉分布的两组样本点,LDA无法地很好地对两类进行区分,这种情况下如果使用(QDA):
在这里插入图片描述
QDA在关键的地方可以通过曲线进行过渡,分类表现优异许多。

QDA数学原理

总的来说,QDA和LDA一样,都假设样本是呈正态分布的,但是QDA不会像LDA一样假设所有类的协方差相同。具体而言:

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值