采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
主成分分析可以从最近重构性和最大可分性两个角度来解释,老师所讲的是从最大可分性入手。
如果从最近重构性角度来看,我们可以设置重构阈值,即当我降维之后的数据可以解释或代表原数据的95%时,即认为这个维度是合适的。那么相对应的从最大可分性来看,应该如何选择坐标轴的数量呢?坐标轴的重要性如何区分呢?
这两个角度不矛盾。我们每次都使用你所说的“最大可分性”,来求出对于当前数据的一个最主要的成分;而你所说的“最近重构性”,是指多个主成分所占原数据信息的百分比。
你所说的“最大可分性”,不牵扯坐标轴的数量问题,因为每次都是在求对于当前数据的那一个最重要的轴。这个轴就是对于当前数据来说最重要的轴。
如果单从“最大可分性”来看,确实不涉及坐标轴的数量问题。 我之前参加数模比赛,用PCA对数据进行降维处理,当时的书上是采用的是先对样本中心化,再计算协方差矩阵XXT(XT表示X的转置),对协方差矩阵做特征值分解,对特征值排序,选取前d个特征值对应的特征向量作为投影矩阵w。对此的解释是前d个主成分降维之后的数据对原数据的累积贡献率达到某一个阈值。(我个人觉得与“最近重构性”一个意思)。 在老师的课程代码中,原数据的特征维度是2,提前指定了主成分的个数(比如7-4中,选取的是2),这样得到的结果是将原来的n维数据映射到新的n维空间中,将新空间中的坐标轴方向全部输出,这样并没有达到降低特征维度的目的。 如果对应到高维度的数据,也是一样,我们不可能再把所有方向全部输出。那么我们就要指定维度了,那维度要怎么指定呢?在上面的“最近重构性”中,我们可以以贡献率来判断,当前维度是否合适。在老师的这种讲解思路下,该怎么选择维度呢?
以什么作为判断依据呢?
在这个课程中,由于是机器学习的入门课程,我不希望引入太多非常数学的内容,把大家吓到,所以并没有引入每个主成分对原始数据的“贡献度”的计算方式,而只是计算了主成分是谁。同时,我使用的这个求主成分的方式,也并不是数学的方法,而是非常计算机思维的搜索方式(梯度上升法),这样做的目的也是为了不要引入太多的数学内容。实际上,你描述的方式是更加标准的主成分的求解方式,同时也反映了PCA背后的统计意义。在选择坐标轴的数量上,需要考虑贡献度。这一点,在下一小节,我们使用sklearn提供的PCA的时候,我会讲到。但具体是怎样计算的,是这个课程不涉及的内容:)
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.5k 19
3.4k 17
2.9k 15
1.6k 15
1.4k 14