场景
降维(dimensionality reduction)
数据显示 并非大规模特征下的唯一难题,对数据进行简化还有如下一系列的原因:
适用范围:
在以下3种降维技术中, PCA的应用目前最为广泛,因此本章主要关注PCA。
通俗理解:就是找出一个最主要的特征,然后进行分析。
例如: 考察一个人的智力情况,就直接看数学成绩就行(存在:数学、语文、英语成绩)
通俗理解:将多个实测变量转换为少数几个综合指标。它反映一种降维的思想,通过降维将相关性高的变量聚在一起,从而减少需要分析的变量的数量,而减少问题分析的复杂性
例如: 考察一个人的整体情况,就直接组合3样成绩(隐变量),看平均成绩就行(存在:数学、语文、英语成绩)
通俗理解:ICA 认为观测信号是若干个独立信号的线性组合,ICA 要做的是一个解混过程。
例如:我们去ktv唱歌,想辨别唱的是什么歌曲?ICA 是观察发现是原唱唱的一首歌【2个独立的声音(原唱/主唱)】。
主成分分析(Principal Component Analysis, PCA):通俗理解:就是找出一个最主要的特征,然后进行分析。
例如: 考察一个人的智力情况,就直接看数学成绩就行(存在:数学、语文、英语成绩)
PCA 工作原理
方差最大
的方向。方差次大
的方向,并且该方向与第一个主成分方向 正交(orthogonal 如果是二维空间就叫垂直)
。为什么正交?
例如下图:
PCA 优缺点
优点:降低数据的复杂性,识别最重要的多个特征。
缺点:不一定需要,且可能损失有用信息。
适用数据类型:数值型数据。
半导体是在一些极为先进的工厂中制造出来的。设备的生命早期有限,并且花费极其巨大。
虽然通过早期测试和频繁测试来发现有瑕疵的产品,但仍有一些存在瑕疵的产品通过测试。
如果我们通过机器学习技术用于发现瑕疵产品,那么它就会为制造商节省大量的资金。具体来讲,它拥有590个特征。我们看看能否对这些特征进行降维处理。对于数据的缺失值的问题,我们有一些处理方法(参考第5章)
目前该章节处理的方案是:将缺失值NaN(Not a Number缩写),全部用平均值来替代
(如果用0来处理的策略就太差劲了)。
收集数据:提供文本文件
文件名:secom.data
文本文件数据格式如下:
完整代码地址: https://github.com/apachecn/AiLearning/blob/master/src/py2.x/ml/13.PCA/pca.py
要点补充
降维技术使得数据变的更易使用,并且它们往往能够去除数据中的噪音,使得其他机器学习任务
更加精确。
降维往往作为预处理步骤,在数据应用到其他算法之前清洗数据。
比较流行的降维技术: 独立成分分析、因子分析 和 主成分分析, 其中又以主成分分析应用
最广泛。本章中的PCA将所有的数据集都调入了内存,如果无法做到,就需要其他的方法来寻找其特征值。
如果使用在线PCA分析的方法,你可以参考一篇优秀的论文 "Incremental Eigenanalysis for Classification"。
下一章要讨论的奇异值分解方法也可以用于特征值分析。
奇异值分解(SVD, Singular Value Decomposition):
提取信息的一种方法,可以把 SVD 看成是从噪声数据中抽取相关特征。从生物信息学到
金融学,SVD 是提取信息的强大工具。
信息检索-隐性语义检索(Lstent Semantic Indexing, LSI)或 隐形语义分析(Latent Semantic Analysis, LSA)
隐性语义索引:矩阵 = 文档 + 词语
推荐系统
图像压缩
例如:32*32=1024 => 32*2+2*1+32*2=130
(2*1表示去掉了除对角线的0), 几乎获得了10倍的压缩比。
SVD 工作原理
矩阵分解
SVD 是矩阵分解的一种类型,也是矩阵分解最常见的技术
\(Data_{m*n} = U_{m*k} * ∑_{k*k} * V_{k*n}\)
具体的案例:(大家可以试着推导一下:https://wenku.baidu.com/view/b7641217866fb84ae45c8d17.html )
相似度= 1.0/(1.0 + la.norm(inA - inB))
相似度= 0.5 + 0.5 * corrcoef(inA, inB, rowvar = 0)[0][1]
相似度= 0.5 + 0.5*( float(inA.T*inB) / la.norm(inA)*la.norm(inB))
推荐系统的评价
推荐系统 原理
假如一个人在家决定外出吃饭,但是他并不知道该到哪儿去吃饭,该点什么菜。推荐系统可以帮他做到这两点。
收集 并 准备数据
完整代码地址: https://github.com/apachecn/AiLearning/blob/master/src/py2.x/ml/14.SVD/svdRecommend.py
基于内容(content-based)的推荐
构建推荐引擎面临的挑战
问题
建议
基于内容的推荐
。项目案例: 基于 SVD 的图像压缩
收集 并 准备数据
完整代码地址: https://github.com/apachecn/AiLearning/blob/master/src/py2.x/ml/14.SVD/svdRecommend.py
https://github.com/apachecn/AiLearning/blob/dev/blog/ml/14.%E5%88%A9%E7%94%A8SVD%E7%AE%80%E5%8C%96%E6%95%B0%E6%8D%AE.md