线性判别分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用线性判别分析(Linear Discriminant Analysis )对Wine 数据集进行分类 1. 线性判别分析(LDA )原理
LDA 是统计学上一种经典的分析方法,在医学中的患者疾病分级、经济学的市场定位、产品管理、市场研究、人脸识别和机器学习等领域有广泛的应用。
LDA 可以用于对数据进行分类,首先,我们要用事先分好类的数据对LDA 进行训练,建立判别模型,所以LDA 属于监督学习的算法。
LDA 的基本思想是投影,将n 维数据投影到低维空间,使得投影后组与组之间尽可能分开,即在该空间中有最佳的可分离性,而衡量标准是新的子空间有最大的类间距离和最小的类内距离。
LDA 的目标是求出使新的子空间有最大的类间距离和最小的类内距离的向量a ,构造出判别模型。
形象地理解,如图1,红色点和蓝色点分别代表两个类别的数据,他们是二维的,取二维空间中的任一个向量,作各点到该向量的投影,可以看到,右图比左图投影后的分类效果好。再如图2,是三维空间的各点作投影到二维空间,可以看到左图比右图分类效果好。有时需要根据实际选择投影到几维才能实现最好的分类效果。
构造判别模型的过程: (1) 作投影
设n 维数据样本集X={x i |i=1,2,3…j},这j 个样本可以分为k 个类别X 1,X 2,…,X k . 令w 为n 维空间中任一向量,则样本x i 在w 上的投影为w T x i ,得到的是一维数据. (2) 计算投影后的类内距离与类间距离
其中利用了方差分析的思想:
类内距离:E 0= ∑∑(w T x −w T X t ̅̅̅)2x∈X t k t=1
X t ̅̅̅表示 X t 中的样本未投影前的平均.
整理得 E 0=w T E w 其中矩阵E=∑∑(x −X t ̅̅̅)(x −X t ̅̅̅)T x∈X t
k t=1
类间距离:B 0= ∑n t (w T X t ̅̅̅−w T X ̅)2k t=1
X
̅表示所有样本未投影前的平均,n t 表示X t 中样本数 整理得 B 0=w T Bw 其中矩阵B= ∑n t (X t ̅̅̅−X ̅)(X t ̅̅̅−X ̅)T k t=1
(3) 构造目标函数
为了得到最佳的w ,我们希望E 0尽量小,B 0尽量大,因此构造
J(w)= B
0E 0
问题转化为求w 使J(w)达到极大值,但使J(w)达到最大值的w 不唯一,于是我们加上一个约束条件E 0=1
即求w ,使J(w)在约束条件E 0=1下达到极大值
(4) 拉格朗日乘数法求w
利用拉格朗日乘数法我们可以得到以下等式
(E −1B)w =λw λ为拉格朗日乘子
即λ为E −1B 的特征值,w 为对应的特征矩阵 由特征方程|E −1B −λI |= 0 可解除 特征值λ 和特征向量 w
(5) 导出线性判别函数
把特征值由大到小排列,取最大的特征值,所求w 就是对应的特征向量w 导出线性判别函数为u(x)=wx
若用一个线性判别函数不能很好区别各个总体,可用第二大特征根,第三大特征根……对应的特征向量构造线性判别函数进行判别(即上面所说根据实际选择降维到几维空间),线性判别函数个数不超过k-1个。
至此,已构造出判别模型,利用判别模型对新的样本代入判别函数,把结果与设定的阀指比较,把新样本判给不同的类别。
2. 利用R 语言中的lda()函数对wine 数据集进行分类
lda()函数用于线性判别分析,在MASS 包中 代码如下:
3.运行结果及解释
用table()得到的列联表:
解释:列变量表示每个样本本身所属类别,行变量表示每个样本判归的类别
用barplot()得到的条形图:
解释:横轴对应列联表的列变量,柱子对应列联表的行变量
可以看出,LDA 对Wine 数据集的判别正确率为100%
12
3
0102030405060
7
4.LDA的性能分析
对于wine数据集,LDA的分类正确性,比决策树高。
(待续,参考:如何选择机器学习分类器/67671/)参考资料:peghoty的博文:/itplus/article/details/12035573