机器学习:线性模型-线性判别分析LDA(附代码实现)

我的小程序:

待办计划:在不确定中前行
随笔日记:祭那些逝去的时光

LDA思想:给定训练集,将训练集投影到一条直线上,相同类别的投影点尽可能近,不同类别的投影点尽可能远。在对新样本进行分类时,将新样本投影到学习到的该直线上,跟据投影点的位置确定新样的类别。如下图:

二分类任务算法分析:

推广到多分类任务:

多分类任务中类间散度矩阵推导:(x平均为所有样本的平均,xi平均为第i类样本的平均,c为类别数,Ni为第i类样本数)

其中:

代入原式:

二分类任务matlab代码:

function [w,x1_a,x2_a] = ldaFunc(x1,x2,y1,y2)

x1_rows = size(x1,1);
x2_rows = size(x2,1);

x1_cols = size(x1,2);
x2_cols = size(x2,2);

%x1和x2的平均向量
x1_a = (sum(x1)/x1_rows)';
x2_a = (sum(x2)/x2_rows)';

%类间散度矩阵
%sb = (x1_a-x2_a)(x1_a-x2_a)'

%协方差矩阵
x1_covariance = zeros(x1_cols,x1_cols);
x2_covariance = zeros(x2_cols,x2_cols);

%x1协方差矩阵
for i=1:x1_rows,
  x1_covariance += (x1(i,:)'-x1_a)*(x1(i,:)'-x1_a)';
end;
%x2协方差矩阵
for i=1:x2_rows,
  x2_covariance += (x2(i,:)'-x2_a)*(x2(i,:)'-x2_a)';
end;

%类内散度矩阵
sw = x1_covariance + x2_covariance;

w = inv(sw)*(x1_a-x2_a);
待办计划:在不确定中前行
随笔日记:祭那些逝去的时光

​​​​​​​

参考资料:周志华《机器学习》

参考博文:https://www.cnblogs.com/liuwu265/p/4724758.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值