从nnn维特征中选取m" role="presentation">mmm维特征,如何在信息损失最小的情况下选取特征(因为必然会删去n-m维特征),使得剩下的特征更加有利于分类,离散K-L变换(Karhunen-Loeve变换)就是常用的方法。


引入

设一个输入向量x。K-L变换的目的就是对原向量进行变换,组成新向量y。该新向量的特征数比x少,各特征间不相关,因此关键就是要找到这样的变换矩阵


优缺点

优点:
1. 变换在均方误差最小的情况下使新样本集逼近原样本集分布,既压缩了维数又保留了类别鉴别信息。
2. 变换后新模式向量各分量相对总体均值的方差等于原样本集总体自相关矩阵的较大的特征值,表明变换突出了模式类之间的差异性。
3. 变换后样本各分量互不相关,即消除了原先特征之间的相关性。

缺点:
1. 类别越多,效果越差。
2. 需要通过足够多的样本估计样本集的协方差矩阵和其它类型的散布矩阵。样本数不足时,矩阵的估计会十分粗糙。


K-L变换推导过程

为了找到满足条件的变换矩阵UUU,令:y=UTx" role="presentation">y=UTxy=UTx y=U^{T}x
因为新向量yyy各分量之间是相互独立的,因此有:

E(yiyj)=0,i≠j" role="presentation">E(yiyj)=0,i≠jE(yiyj)=0,i≠j

E(y_{i}y_{j})=0,i \neq j
又从自相关矩阵的定义,有:

Ry=E(yyT)=E(UTxxTU)=UTRxURy=E(yyT)=E(UTxxTU)=UTRxU

R_y=E(yy^T)=E(U^Txx^TU)=U^TR_xU
而 RxRxR_x是对称矩阵,因此它的特征向量是相互正交的。如果将 UUU的列向量取为Rx" role="presentation">RxRxR_x的特征向量,这时 RyRyR_y可以转化为对角矩阵:

Ry=UTRxU=∧Ry=UTRxU=∧

R_y=U^TR_xU=\land
其中 ∧∧\land是对角矩阵,对角线元素是 RxRxR_x的特征值 λi,i=1,2,...,nλi,i=1,2,...,n\lambda_i,i=1,2,...,n
由此可以确定变换矩阵A,它的列向量就是特征向量,这些特征向量之间是相互正交的。
利用变换矩阵 AAA对原输入向量x" role="presentation" style="position: relative;">xxx进行变换,获得新向量 yyy的过程就是K-L变换。


具体步骤

设X" role="presentation" style="position: relative;">XXX是 nnn维模式向量,{X}" role="presentation" style="position: relative;">{X}{X}\{X\}是来自 MMM个模式类的样本集,总样本数目为N" role="presentation" style="position: relative;">NNN。利用K-L变换将 XXX变换为d" role="presentation" style="position: relative;">ddd维:
step1:求样本集 {X}{X}\{X\}的自相关矩阵 RRR。

R=E[XXT]≈1N∑j=1NXjXjT" role="presentation">R=E[XXT]≈1N∑j=1NXjXTjR=E[XXT]≈1N∑j=1NXjXjT

R=E[XX^T]\approx\frac{1}{N}\sum_{j=1}^{N}X_{j}X_{j}^T
step2:求 RRR的特征值λj,j=1,2,...,n" role="presentation" style="position: relative;">λj,j=1,2,...,nλj,j=1,2,...,n\lambda_j,j=1,2,...,n。选取前 ddd个较大的特征值。
step3:计算d" role="presentation" style="position: relative;">ddd个特征值对应的特征向量 uj,j=1,2,...,duj,j=1,2,...,du_j,j = 1,2,...,d,归一化后构成变换矩阵 UUU。

U=[u1,u2,...,uj]" role="presentation">U=[u1,u2,...,uj]U=[u1,u2,...,uj]

U=[u_1,u_2,...,u_j]
step4:对 {X}{X}\{X\}中 每一个XXX进行K-L变换,得到变换后向量X∗" role="presentation" style="position: relative;">X∗X∗X^{*}:

X∗=UTXX∗=UTX

X^{*}=U^TX
ddd维向量X∗" role="presentation" style="position: relative;">X∗X∗X^*就是替代nnn维向量X" role="presentation" style="position: relative;">XXX进行分类的模式向量。


例子

直接从百度文库https://wenku.baidu.com/view/0cb176f4eefdc8d377ee3250.html截的图:


MATLAB实现

实现K-L变换的核心就是求解变换矩阵,最简单的方法就是调用pcacov函数(当K-L变换矩阵为协方差矩阵时,等同于PCA),这里就不再细说了,如果要自己实现的话我这里有一个版本:

clc;
dim = 3;             %变换后维数
v = randn(8,5);   %样本
label=[1 1 2 2 3 3 4 4];    %每个样本对应的类别
[y,x]=size(v); LabelRange=max(label)-min(label)+1;%样本种类
LabelCount=zeros(1,LabelRange);%每种样本个数
LabelP=zeros(1,LabelRange);%概率for i=1:y        %计算样本种类数LabelCount(label(i))=LabelCount(label(i))+1;
end
for j=1:LabelRange  %计算概率LabelP(j)=LabelCount(j)/y;
end
s = zeros(1,x);
m = zeros(1,x);
for i=1:LabelRangefor j=1:LabelCount(label(i))s = s + v((i-1)*LabelCount(label(i))+j,:);endm = m+1/LabelCount(label(i))*s;
end
for i=1:yv(i,:) = v(i,:) - m;
end
r = zeros(x,x);
t1 = zeros(x,x);
% t2 = zeros(x,x);
for i=1:LabelRangefor j=1:LabelCount(label(i))t1 = v((i-1)*LabelCount(label(i))+j,:)'*v((i-1)*LabelCount(label(i))+j,:); endr = r+1/LabelCount(label(i))*t1*LabelP(i);
end
%求特征向量
[vv,d]=eig(r)   %求矩阵r的全部特征值,构成对角阵d,并求r的特征向量构成vv的列向量。
dia = d;
index = zeros(1,dim);
for i=1:dim[x1 y1]=find(dia==max(max(dia)));index(1,i) = x1;dia(x1,y1) = -inf;
end
Q  = zeros(x,dim);
for i=1:3           %计算变换矩阵QQ(:,i) = 1/sqrt(sum(vv(:,index(i)).^2)).*vv(:,index(i));
end

离散KL变换原理、实例以及matlab实现相关推荐

  1. 【12月学习进度12/31——特征提取】离散KL变换原理、实例以及matlab实现(转载)

    转载自:离散KL变换原理.实例以及matlab实现 从n维特征中选取m维特征,如何在信息损失最小的情况下选取特征(因为必然会删去n-m维特征),使得剩下的特征更加有利于分类,离散K-L变换(Karhu ...

  2. K-L变换原理、图像压缩与人脸识别实战(附matlab代码)

    目录 摘要 K-L变换的基本原理 K-L变换在图像压缩中的应用 研究背景及意义 数字图像压缩与发展现状 K-L变换与图像压缩 K-L变换在人脸识别中的应用 人脸识别 K-L变换实现人脸识别 总结 参考 ...

  3. 【人脸识别】基于KL变换人脸识别含Matlab源码

    1 简介 系统的设计是利用奇异值分解确定KL变换系数,并对人脸训练样本和待识别样本进行KL变换,对变换向量进行最小距离判别决策.对ORL人脸数据库的实验结果表明正确识别率随着变换系数维数的增加而增加, ...

  4. 【模式识别与机器学习】——4.3离散K-L变换

    全称:Karhunen-Loeve变换(卡洛南-洛伊变换) 前面讨论的特征选择是在一定准则下,从n个特征中选出k个来反映原有模式. 这种简单删掉某n-k个特征的做法并不十分理想,因为一般来说,原来的n ...

  5. 图像处理——KL变换原理

    KL变换 定义:以矢量信号X的协方差矩阵Ф的归一化正交特征矢量q所构成的正交矩阵Q,来对该矢量信号X做正交变换Y=QX,则称此变换为K-L变换(K-LT或KLT),K-LT是Karhunen-Loèv ...

  6. matlab k l变换题目,K-L变换及例题技术分析.ppt

    第7章 基于K-L展开式的特征提取 7.1 K-L变换的定义与性质 7.2 K-L变换特征提取的原理及应用 7.3 利用K-L变换进行人脸识别 实现特征提取的途径 考虑利用线性变换的方式实现降维 本质 ...

  7. 主成分分析(PCA)算法,K-L变换 角度

    主成分分析(PCA)是多元统计分析中用来分析数据的一种方法,它是用一种较少数 量的特征对样本进行描述以达到降低特征空间维数的方法,它的本质实际上是K-L变换.PCA方法最著名的应用应该是在人脸识别中特 ...

  8. 模式识别(Pattern Recognition)学习笔记(三十五)-- K-L变换与PCA

    K-L变换的理论知识 K-L变换是除了PCA外的另一种常用的特征提取方法,它有很多种形式,最基本的形式跟PCA类似,它跟PCA的不同在于,PCA是一种无监督的特征变换,而K-L变换能够考虑到不同的分类 ...

  9. 【matlab 图像处理】离散傅里叶变换离散余弦变换K-L变换小波变换

    [matlab 图像处理]离散傅里叶变换&离散余弦变换&K-L变换&小波变换 正交变换是信号处理的一种有效工具.图像信号不仅可以在空间域表示,也可以在频域表示,后者将有利于许多 ...

最新文章

  1. lintcode-136-分割回文串
  2. apache 模块编译选项
  3. 开发日记-20190527 关键词 ubuntu无线网卡驱动安装
  4. 稀疏表示介绍(中)、(下)
  5. gettype拿不到值_被玩家强行改位置的5个英雄,他上单无解,杀吕布灭铠爹,这都拿去辅助?...
  6. XebiaLabs DevOps平台推出软件发布风险和合规性管理功能
  7. 转 -- 推荐几本云计算的经典书籍
  8. 《Android 应用案例开发大全(第二版)》——6.1节Android系统的信使:Intent
  9. linux如何更改默认内核,[linux 内核] 设置内核的默认启动版本
  10. ajax如何处理服务器返回的三种数据类型
  11. 常用加密算法概述、比较及使用场景说明
  12. 【Fllink】Connection to ZooKeeper suspended. Can no longer retrieve the leader from ZooKeeper
  13. NetBeans 时事通讯(刊号 # 127 - Dec 01, 2010)
  14. ANSI X9.8标准 PIN xor PAN获取PIN BlOCK
  15. activiti处理当前用户的任务
  16. python-opencv有效随机角度旋转
  17. ApacheCN 翻译活动进度公告 2019.6.15
  18. h5页面 请在微信客户端打开链接_使用Fiddler抓包解决“请在微信客户端打开链接”的问题...
  19. 8700k超频测试软件,超频及功耗温度测试_Intel 酷睿i7 8700K_CPUCPU评测-中关村在线...
  20. 不是家电品牌!不是家装品牌!不是家居品牌!三翼鸟是啥?

热门文章

  1. 如何搭建本地服务器?
  2. C 和 C++ 开源库的清单
  3. Bandicam (最新版[4.2.0.1439])安装破解
  4. nunit常用属性_通过在测试中使用nunit属性来帮助您的同事节省时间
  5. win7运行在哪_控制面板在哪,n卡控制面板打不开
  6. javaExcel的导入导出功能
  7. 【基础篇】各类语言的变量命名规则
  8. 写毕业论文常用网站(本人常用)
  9. WEB UI自动化测试框架搭建(一)_公用方法Utils
  10. 控制系统分析2(线性系统稳定性、和可控性)