请点击上面公众号,免费订阅。
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!
01
—
回顾
昨天推送了机器学习数据预处理的基本介绍:
-
主成分分析的背景;
-
主成分选取的必要性;
-
什么是数据的主成分;
-
作为引入,先从概念上说了说如何选取主成分,大概要根据每个特征的方差。
有需要了解的,请参考:机器学习数据预处理:数据降维之PCA
今天,尝试推导下如何选择主成分。基本任务便是拿到一堆数据,它有 n 个特征,现在要从中选择 k 个特征,作为主特征。
02
—
点在某个轴上的投影
如下图所示,我们有2个特征组成了两个不同的向量,一个表示为向量 i = (1,0) ,另一个表示为向量 j= (0,1) 。显然向量 i 和 j 是线性无关的,在 i 和 j 组成的线性空间中,任意元素总可以由向量 i 和 j 表示,所以 i 和 j 就称为线性空间的一个基,维数等于组成它的向量个数等于2 。
定义了以上线性空间后,那么任意一个样本点都可以由这个基唯一确定,并且这样才使得样本点 (3,2)有了真正的基石。那么 (3,2) 是怎么由 i 和 j 确定的呢? 容易看出: (3,2) = 3 * (1,0) + 2 * (0,1) 唯一确定。
然后再进一步,发现样本点 (3,2)在基石 i = (1,0) 上的分量为3,并且可以看成是在 i 上的投影,这个投影可以由点 (3,2) 确定的向量点乘基石向量 (1,0)得到,就这样实现了(3,2)在某个向量上的投影。
扩展开,某个点在某个轴上的投影,可以表示为这个向量点乘这个轴的方向向量。
03
—
选取第一主成分原理推导
昨天的推送中说到,高一101班的学生语数外成绩,随机取样了5个样本,还记得语文的分数成绩很均匀,几乎没有拉开差距,所以对最终的排名影响可以说是很小,在此简化起见,直接忽略这个维度,只考虑2个特征维度:数学和外语成绩,已经将3维降为2维,但是我们还是不满意,想继续降成1个维度,那么确定这个维度的方向,也就是第一主成分的方向就是接下来的主要目标。
如下图,数学成绩和外语成绩的变动范围都挺大的,我们在上图画出了2个第一主成分可能的大致方向,哪个颜色表示的方向更有可能接近第一主成分的方向呢?
第一主成分一定是各个样本在这个方向上的投影,越分散越好,也就是方差越大越好,据此我们推断橘色线表示的方向一定更会接近第一主成分的方向,因为这5个样本点在它上面的投影分散的更开一些,与之相对的蓝色线的方向,各个样本点在上面的投影,显然没有那么分散开。
下面给出理论上的初步推导,对给定的一组数据,,首先去均值中心化后,将这些样本点投影到第一主成分的方向 u1上,投影的计算方法如上面所述,就是将 xi 与u1 做内积,我们在此只关心 u1 的方向,不关心它的大小(可以归一化),即求下式的最大值:
对绝对值符号项进行平方处理,同时根据两个向量的内积计算可以转化成矩阵的乘法,进一步转化后得到:
进一步将求和公式写为矩阵,特设定1个矩阵 X 和它的转置矩阵:
因此可将上式进一步化简为:
可以证明上式(半正定二次型矩阵)中第一主成分 u1 的方向就是在矩阵 的最大特征值对应的特征向量的方向。
至此,我们推导出了数据第一主成分的方向向量,那么第二主成分的向量自然对应的第二特征值的特征向量,如果要取 k 个主成分,自然求出的第 k 个特征值对应的特征向量即可。
今天的推送主要推理了数据降维,提取主成分时的理论支撑。明白了数据主成分提取的原理后,明天通过一个例子具体说明PCA由 n 个特征降维为 k 个特征的例子分析。
请记住:每天一小步,日积月累一大步!
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!