:目录
10.1 k近邻学习(简称kNN)
kNN的泛化错误率
式(10.2)的推导
公式推导:https://blog.csdn.net/jbb0523/article/details/89052490 注解中第10章的内容
由式(10.2)可知:最近邻分类器虽然简单,但它的泛化错误率不超过贝叶斯最优分类器的错误率的两倍
10.2 低维嵌入
维数灾难
降维
经典降维算法:MDS
目标:获得样本在低维空间的表示
前提:在低维空间样本之间的距离与在原始空间样本之间的距离相等
具体:
式(10.4)~式(10.6)的推导:
MDS算法的描述:
线性降维与降维效果评估
10.3 主成分分析(简称PCA)
PCA引入
一个例子(二维降为一维)
参考:https://www.bilibili.com/video/av90308355/?spm_id_from=333.788.videocard.0
PCA算法
另一角度
PCA的优点
10.4 核化线性降维(简称KPCA)
由于西瓜书上关于KPCA的章节我看不懂,下面有关KPCA的内容是参考:视频https://www.bilibili.com/video/av16722186?t=4361,视频直接从几何角度讲解了PCA和KPCA
为什么要用KPCA?
KPCA的基本定义
KPCA:基于核技巧对线性降维方法进行“核化”
具体过程(一个例子):
上面罗里吧嗦的是PCA的推导,把它写进去是因为上面有些结论后面要用,进入正题KPCA
10.5 流形学习
流形学习的2个代表:Isomap和LLE
参考:https://blog.csdn.net/zhulingchen/article/details/2123129?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
Isomap
LLE
基本思想
具体过程
10.6 度量学习
基本出发点
距离度量表达形式
总结:
[近邻成分分析部分由于看不太懂,直接略过了,之后再补上]
Python 代码实现
PCA
fit(X): 用数据X来训练PCA模型。
fit_transform(X):用X来训练PCA模型,同时返回降维后的数据。
n_components_:返回所保留的特征个数。
explained_variance_ratio_:返回所保留各个特征的方差百分比。
运行结果
由运行结果可知,保留的两个特征可以99.11%的表达整个数据集,因此可以降到二维
PCA还可应用于人脸识别
PCA人脸识别操作流程:训练样本→特征提取→构造特征空间→投影计算。
详细请参考:PCA人脸识别详解——初学者必看_网络_xiaomage_gf的博客-CSDN博客
由于我安装cv2库的时候,一直一直一直没有安装成功,死在了第一步上,所以就运行不了代码,害,本菜鸟再回去琢磨琢磨
LLE
np.floor(): 返回不大于输入参数的最大整数。 即对于输入值 x ,将返回最大的整数 i ,使得 i <= x。 在Python中,向下取整总是从 0 舍入。
定义函数,根据构成样本坐标的近邻点个数的不同画出相应的散点图
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
add_subplot(a, b, i ):把画布分成a行b列,图像画在从左到右从上到下的第 i 块
scatter()函数链接:Python中scatter函数参数详解_Python_AnneQiQi的博客-CSDN博客
结果输出:
由结果可知,构成样本坐标的近邻点个数对降维结果影响较大,且随着k的增大,降维结果越好,但运行时间大体上也在增加
Isomap
结果输出
由输出结果可知,保留样本数据的维数越少,样本丢失的信息越多,其重构误差也越大
由结果可知,近邻点k的数量对降维结果有较大的影响,k=1时,近邻范围过小,发生断路现象;随着k的增大,可以看出降维效果变好
代码:
PCA降维及python实现_Python_Reticent_Man的博客-CSDN博客
人工智障学习笔记——机器学习(13)LLE降维_人工智能_九日王朝-CSDN博客降维方法总结(线性与非线性)_人工智能_大熊的博客-CSDN博客