博客
关于我
【人脸识别】PCA+LDA人脸识别【Matlab 186期】
阅读量:723 次
发布时间:2019-03-21

本文共 1454 字,大约阅读时间需要 4 分钟。

一、PCA简介与原理

主成分分析(PCA)是常用的降维技术,其核心目标是通过选择特征向量,将数据投影到一个低维空间中,同时最大化数据在新空间中的方差。降维的核心原理是寻找能够最优表示数据的线性变换,使得数据在新空间中能保留最多的变异性。

PCA的核心步骤包括:

  • 数据中心化:首先将所有样本数据偏离中心的均值部分提取出来,形成去中心化矩阵X。具体操作是对每个样本减去样本均值向量u,得到去中心化矩阵X = {Z1 - u, Z2 - u, ..., Zm - u}。

  • 寻找主成分:主成分的寻找依赖于目标函数的最大化,即投影到各个潜在方向上的方差最大化。通过构建拉格朗日算子并求解最优条件,可以得出主成分对应的特征值和特征向量。

  • 矩阵变换:选择若干主成分进行降维,将高维数据映射到低维特征空间。具体实现中,经常采用奇异值分解(SVD)来替代直接计算协方差矩阵,特别是在处理大规模数据时,能够显著减少内存占用。

  • 实际应用:PCA在人脸识别中的应用具有重要意义。通过收集和预处理人脸样本,计算协方差矩阵的特征值和特征向量,建立训练人脸库。然后,对待测样本的数据进行投影,计算其在特征向量方向上的投影,进而进行身份识别。

  • 二、LDA应用与数学表示

    线性判别分析(LDA)是一种面临高维数据分类时的理想降维技术。其核心思想是构建一个最佳投影矩阵,将高维数据投影到一个低维的特征空间中,使得投影后数据在同类间具有最大距离,在不同类间具有最小距离,从而实现最优的分类效果。

    LDA的数学表示涉及以下关键步骤:

  • 计算协方差矩阵:根据类别信息,计算各类样本的协方差矩阵。假设输入数据为N维向量,类别数为C,则协方差矩阵S为 size=N×C, kaleSize= size×N。

  • 计算特征向量:通过求解协方差矩阵S的特征值与特征向量,找到最优的投影方向。具体来说,对每个特征值求出对应的特征向量,这些特征向量构成了降维的方向。

  • 构建投影矩阵:利用特征向量构建投影矩阵W,使得投影后数据在最优子空间中呈现最好的分类性能。投影矩阵的大小为C×N,使得数据向量在投影后尺寸缩减为C维。

  • 降维与分类:基于LDA提取的特征向量,进行数据降维。对于待测样本,通过投影矩阵进行降维后,计算其在投影空间中的特征向量,进而进行分类。

  • 三、代码实现

    代码实现部分主要包含以下几个关键函数:

  • pca函数:用于执行主成分分析,参数包括输入数据矩阵及降维的可控参数。函数返回处理后数据矩阵及其对应的主成分信息。

  • readsample函数:负责读取样本数据。函数接收样本地址、类别数以及每类样本数目,返回所有样本矩阵。

  • computswb函数:计算均值方差矩阵Sw和交乘积矩阵Gb。这两个矩阵是LDA的前提条件,用于判断各个维度的贡献率。

  • computaccu函数:评估分类准确率。函数接收降维后的测试样本数据和训练样本数据,计算准确率。

  • 代码运行流程如下:

  • 初始化设置:设置数据加载地址及参数如训练样本数及类别数目。

  • 数据加载:读取训练数据和测试数据,并进行降维处理。

  • 寻找最佳投影维度:通过遍历不同投影维度,评估识别准确率,确定最优投影维度。

  • 输出结果:显示每类样本数、最佳投影维度及识别准确率。

  • 四、运行结果与备注

    实验结果表明,采用PCA结合LDA的方法在人脸识别任务中表现优异,准确率高达97.5%。代码实现准确反映了理论推导过程,能够帮助用户快速完成降维与分类任务。

    完整代码和技术支持可通过QQ912100926获取,供有需要的人参考和优化。

    转载地址:http://ztnrz.baihongyu.com/

    你可能感兴趣的文章
    MySQL-Explain的详解
    查看>>
    mysql-group_concat
    查看>>
    MySQL-redo日志
    查看>>
    MySQL-【1】配置
    查看>>
    MySQL-【4】基本操作
    查看>>
    Mysql-丢失更新
    查看>>
    Mysql-事务阻塞
    查看>>
    Mysql-存储引擎
    查看>>
    mysql-开启慢查询&所有操作记录日志
    查看>>
    MySQL-数据目录
    查看>>
    MySQL-数据页的结构
    查看>>
    MySQL-架构篇
    查看>>
    MySQL-索引的分类(聚簇索引、二级索引、联合索引)
    查看>>
    Mysql-触发器及创建触发器失败原因
    查看>>
    MySQL-连接
    查看>>
    mysql-递归查询(二)
    查看>>
    MySQL5.1安装
    查看>>
    mysql5.5和5.6版本间的坑
    查看>>
    mysql5.5最简安装教程
    查看>>
    mysql5.6 TIME,DATETIME,TIMESTAMP
    查看>>