类内距离&类间距离

来源:互联网 发布:网络js攻击全是广告 编辑:程序博客网 时间:2024/05/17 08:02

特征选择,就是降维。

特征选择之前需要进行类别可分性测度,最为直观的是基于距离的可分性测度:类内距离&类间距离


类内距离【Ref1】:类内距离 平方形式 即为:

类协方差矩阵迹的2倍。

2*trace(cov(X1)); 


散布矩阵matlab代码:

function [ Sw,Sb,St ] = scatter_mat ( X,y )%Function     --实现类内、类间、混合散布矩阵 距离计算%X            --多类构成的样本集合(一个列向量 表示 一个样本) %y            --一个N维行向量,第i个元素包含X中第i个向量的label(总共有c个类标)%Sw           --类内散布矩阵,类内距离 的 平方形式%Sb           --类间散布矩阵,类间距离 的 平方形式%Sw           --混合散布矩阵[L,N]=size(X);  %设X有L*N维c=max(y);% Swm=[];Sw=zeros(1);for i=1:1:c    y_temp=(y==i);    X_temp=X(:,y_temp);    P(i)=sum(y_temp)/N;    m(:,i)=(mean(X_temp'))';    Sw=Sw+P(i)*cov(X_temp');  %矩阵形式end% Sbm0=(sum(((ones(L,1)*P).*m)'))';Sb=zeros(1);for i=1:c    Sb=Sb+P(i)*((m(:,i)-m0)*(m(:,i)-m0)');  %矩阵形式end% StSt=Sw+Sb; %矩阵形式


在特征选择和特征提取时,应该使类内分散度尽量小,即上述matlab代码中tr(Sw)尽量小;类间分散度尽量大,即上述matlab代码中tr(Sb)尽量大。

Ref1:http://blog.csdn.net/ycheng_sjtu/article/details/25343043

Ref2:http://blog.csdn.net/zhang11wu4/article/details/8584305(杂对话)

0 0
原创粉丝点击