matlab lda图像压缩,[DM]数据预处理-LDA线性判别分析3(附MATLAB代码)

今天小编为大家讲解数据预处理中的LDA线性判别分析。

线性判别分析(Linear Discriminate Analysis,LDA)是一种特征抽取的技术,用以提高数据分析过程中的计算效率。

我们在主成分分析(Principal Component Analysis,PCA)中将数据点进行降维时,考虑的是将数据整体向某一方向投影。但数据内部有类别标签时,PCA可能就显得不那么出色了。如下图。

07cbb0d9a4f967bea8e03595b30f536b.png

虽然我们也可以看出数据在该投影方向上的密度划分,但数据类别(图中红点、蓝点)已经交织在一起,图像整体感觉很乱。

我们换一种投影方式,如下图,这回图像能表达的信息明显清晰多了,红点、蓝点也有效分开。

5e55f89fa189baca3f629855803f76c9.png

该投影方向并不追求所有数据点垂直到向量的欧式距离之和最短,而是提出如下两个参数来确定最终方向:类间散度和类内散度。

投影过后的类间散度和类内散度如下:

有了上述两个重要参数,LDA的好坏程度就可以用J表示(Fisher线性判别):

公式分子为类间散度,越大越好。分母为类内散度,越小越好。

定下来求解目标,数学推导过程如下(可不看):

μi为每类中心。上面带一个~的表示投影过后的点。

上式SB就是类间散度,between-classscatter

SW为类内散度,within-classscatter

结合SB,SW式子转化成相对规整的形式

J(W)对W求导等于0

f61af657e9c9529575ebc08de51f94a2.png

得到

e1c084d4d7f1c5d0dee96939a15ea94b.png

公式中,J为矩阵

888d07b0c5f740ed6969705d33ad60c8.png的特征值。

绕了一圈,LDA的求解又转换为求矩阵特征值的问题。

以具有两类标签的数据为例,我们有如下数据:红叉和蓝叉。

00087f53433334bc0dcac9d044004924.png

计算,并求其特征值,和PCA问题一样,最大特征值对应的特征向量为求解向量方向。经matlab计算我们得到解w=(0.6656,-0.7463)。

投影后图像如图(数据投影后为圈):

44e6f980d43a8d890b1fa63f3b702fc5.png

我们看到,数据被降维,且被相对完好的分为两类。

如果数据标签数量为3呢?

65977a1397b1df3bd7f36e3523747e3e.png

我们看到,经投影后,数据在保证类内聚合度很高的情况下,类之间的耦合度也被降到最低。

但是投影后数据点之间也难免会存在重叠的情况。这也说明,LDA在进行数据降维时也并不能做到完美,面对有些复杂数据降维效果也不是很优秀。但在很多领域,信息数据仅仅通过线性分析就可以找出其中规律,解决这些实际问题时LDA具有十分重要的意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值