机器学习实战 - 读书笔记(13) - 利用PCA来简化数据
[comment]: # 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据
前言
最近在看Peter Harrington写的“机器学习实战”,这是我的学习心得,这次是第13章 - 利用PCA来简化数据。
这里介绍,机器学习中的降维技术,可简化样品数据。
降维技术的用途
- 使得数据集更易使用;
- 降低很多算法的计算开销;
- 去除噪声;
- 使得结果易懂。
基本概念
降维(dimensionality reduction)。
如果样本数据的特征维度很大,会使得难以分析和理解。我们可以通过降维技术减少维度。
降维技术并不是将影响少的特征去掉,而是将样本数据集转换成一个低维度的数据集。协方差(covariance)
协方差用于衡量两个变量的总体误差.协方差矩阵(covariance matrix)
对于一个N维的样品数据,\(X=[x_1, x_2, ..., x_n]^T\),其协方差矩阵是一个n * n的matrix,
元素\(C_{ij}\)是\(x_i\)和\(x_j\)的协方差。协方差矩阵的特征值(Eigenvalues)和特征向量(eigenvectors)
特征值:表示特征向量对应列的权重,越大说明特征向量对应列的影响越大。
特征向量:是一个n * n 的matrix,n是样本数据的特征数。用于降维转换。
降维转换过程:
在特征向量中,选出特征值最大的m列,形成一个m * n的降维向量矩阵。
对(去除平均值的)样本数据的每行数据,和降维矩阵相乘,得到一个m维的**降维数据**。
重构的数据 = **降维数据** * **降维矩阵的转置** + 平均值
核心算法解释
主成分分析(Principal Component Analysis,PCA)
- 基本原理
线性代数的理论:- 对一个n维的样本数据,通过其协方差矩阵,可以计算出特征值和特征向量。
- 选择特征值最大的前m项,可以将样本数据和特征向量进行计算,得到一个m维的降维数据集。
- 输入
- 数据集
- 应用的Feature数
- 输出
- 降维数据集
- 重构的数据集(可用于与原数据集比较)
- 逻辑过程
对数据集的每个Feature的数据,减去Feature的平均值。
计算协方差矩阵
计算协方差矩阵的特征值和特征向量
将特征值从大到小排序
保留最上面的N个特征向量
使用前面提到的降维转换过程,转换数据集为降维数据集和重构的数据集
核心公式
协方差(covariance)
协方差用于衡量两个变量的总体误差.
cov(X, Y) & = E[(X-E(X))(Y-E(Y))] \\
& = E[XY] - E[X]E[Y]
\end{align} \\
where \\
\qquad E(X): mean(X)
\]
Matrix乘法运算
a * b^T = [a_{11}b_{11} + a_{12}b_{12} + ... + a_{1n}b_{1n}, ..., a_{11}b_{1m} + a_{12}b_{2m} + ... + a_{1n}b_{nm}] \\
where \\
\qquad \text{a: a is a n-dimensions vector.} \\
\qquad \text{b: b is a m * n of matrix).}
\]
参考
- Machine Learning in Action by Peter Harrington
- Covariance
- numpy.cov
- Eigenvalues and eigenvectors
机器学习实战 - 读书笔记(13) - 利用PCA来简化数据的更多相关文章
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...
- 【转载】 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
原文地址: https://www.cnblogs.com/steven-yang/p/5686473.html ------------------------------------------- ...
- 机器学习实战 - 读书笔记(14) - 利用SVD简化数据
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第14章 - 利用SVD简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. 基 ...
- 【机器学习实战】第13章 利用 PCA 来简化数据
第13章 利用 PCA 来简化数据 降维技术 场景 我们正通过电视观看体育比赛,在电视的显示器上有一个球. 显示器大概包含了100万像素点,而球则可能是由较少的像素点组成,例如说一千个像素点. 人们实 ...
- 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...
- 机器学习实战 - 读书笔记(12) - 使用FP-growth算法来高效发现频繁项集
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第12章 - 使用FP-growth算法来高效发现频繁项集. 基本概念 FP-growt ...
- 《机器学习实战》学习笔记第十三章 —— 利用PCA来简化数据
相关博文: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) 主成分分析(PCA)的推导与解释 主要内容: 一.向量內积的几何意义 二.基的变换 三.协方差矩阵 四.PCA求解 一.向量內 ...
- 机器学习实战 - 读书笔记(06) – SVM支持向量机
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第6章:SVM 支持向量机. 支持向量机不是很好被理解,主要是因为里面涉及到了许多数学知 ...
- 机器学习实战读书笔记(二)k-近邻算法
knn算法: 1.优点:精度高.对异常值不敏感.无数据输入假定 2.缺点:计算复杂度高.空间复杂度高. 3.适用数据范围:数值型和标称型. 一般流程: 1.收集数据 2.准备数据 3.分析数据 4.训 ...
随机推荐
- 从一个例子看现代C++的威力
引子 最近准备重构一下我的kapok库,让meta函数可以返回元素为kv的tuple,例如: struct person { std::string name; int age; META(name, ...
- [转]silverlight Datagrid 行上增加ToolTip
有两种办法: 1. 直接在后台处理在数据绑定后 ,注册LoadingRow 事件this.DataGrid.LoadingRow += new EventHandler<DataGridRowE ...
- node-sass 安装卡在 node scripts/install.js 解决办法
转自:https://segmentfault.com/a/1190000005921721 ======== 7月12日更新 ======== 总的来说就是两种方法解决: SASS_BINARY_S ...
- 发布FTP服务,防火墙配置
最近需要在Web服务器上发布一下FTP,不想安装Server-U之类的,就用IIS的了,安装好后,发现外网无法连接.经过测试,发现是防火墙的问题. 查找了下关于FTP的资料,ftp server支持两 ...
- Unity3d游戏中自定义贝塞尔曲线编辑器[转]
关于贝塞尔曲线曲线我们再前面的文章提到过<Unity 教程之-在Unity3d中使用贝塞尔曲线>,那么本篇文章我们来深入学习下,并自定义实现贝塞尔曲线编辑器,贝塞尔曲线是最基本的曲线,一般 ...
- Log4Net 手册
首先感慨下,现在的程序员做的工作因为高级语言的生产力,系统框架模式的成熟,开源大牛的贡献,已经成越来越偏向 “面向配置编程”了...... 详细使用指南见文章:http://blog.csdn.net ...
- Android系统架构说明介绍
Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...
- 【MSDN原版】Windows 7 with SP1各版本下载
Windows 7 Ultimate with Service Pack 1简体中文旗舰版:Windows 7 Ultimate with Service Pack 1 (x86) - DVD (Ch ...
- 浅析.NET泛型
泛型是.NET Framework 2.0最强大的功能,通过泛型可以定义类型安全的数据结构,而没有必要使用实际的数据类型,这将显著提高性能并得到更高质量的代码.在.NET Framework 2.0之 ...
- DDD:谈谈数据模型、领域模型、视图模型和命令模型
背景 一个类型可以充当多个角色,这个角色可以是显式的(实现了某个接口或基类),也可以是隐式的(承担的具体职责和上下文决定),本文就讨论四个角色:数据模型.领域模型.视图模型和命令模型. 四个角色 数据 ...