主成分分析

主成分分析原理

  主成分分析是最常用的一种降维方法。我们首先考虑一个问题:对于正交矩阵空间中的样本点,如何用一个超平面对所有样本进行恰当的表达。容易想到,如果这样的超平面存在,那么他大概应该具有下面的性质。

  • 最近重构性:样本点到超平面的距离都足够近

  • 最大可分性:样本点在这个超平面上的投影尽可能分开

  基于最近重构性和最大可分性,能分别得到主成分分析的两种等价推导。


数据类型

  MLlib既支持保存在单台机器上的本地向量和矩阵,也支持备份在一个或多个RDD中的分布式矩阵。本地向量和本地矩阵是简单的数据模型,作为公共接口提供。底层的线性代数操作通过Breezejblas提供。 在MLlib中,用于有监督学习的训练样本称为标注点(labeled point)。


快速迭代聚类

谱聚类算法的原理

  在分析快速迭代聚类之前,我们先来了解一下谱聚类算法。谱聚类算法是建立在谱图理论的基础上的算法,与传统的聚类算法相比,它能在任意形状的样本空间上聚类且能够收敛到全局最优解。 谱聚类算法的主要思想是将聚类问题转换为无向图的划分问题。


流式`k-means`算法

  当数据是以流的方式到达的时候,我们可能想动态的估计(estimate)聚类的簇,通过新的到达的数据来更新聚类。spark.mllib支持流式k-means聚类,并且可以通过参数控制估计衰减(decay)(或“健忘”(forgetfulness))。 这个算法使用一般地小批量更新规则来更新簇。


k-means、k-means++以及k-means算法分析

  本文会介绍一般的k-means算法、k-means++算法以及基于k-means++算法的k-means||算法。在spark ml,已经实现了k-means算法以及k-means||算法。 本文首先会介绍这三个算法的原理,然后在了解原理的基础上分析spark中的实现代码。


特征值分解

  假设向量v是方阵A的特征向量,可以表示成下面的形式:

1.1


  这里lambda表示特征向量v所对应的特征值。并且一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解为下面的形式:

二分`k-means`算法

  二分k-means算法是层次聚类(Hierarchical clustering)的一种,层次聚类是聚类分析中常用的方法。 层次聚类的策略一般有两种:

  • 聚合。这是一种自底向上的方法,每一个观察者初始化本身为一类,然后两两结合
  • 分裂。这是一种自顶向下的方法,所有观察者初始化为一类,然后递归地分裂它们

  二分k-means算法是分裂法的一种。


随机森林

Bagging

  Bagging采用自助采样法(bootstrap sampling)采样数据。给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时,样本仍可能被选中, 这样,经过m次随机采样操作,我们得到包含m个样本的采样集。