您的位置:首页 > 其它

Coursera机器学习(Andrew Ng)笔记:无监督学习与维度约减

2017-05-08 16:32 148 查看

无监督学习与维度约减

机器学习初学者,原本是写来自己看的,写的比较随意。难免有错误,还请大家批评指正!对其中不清楚的地方可以留言,我会及时更正修改

Unsupervised learning & Dimensionality Reduction

聚类算法是较常用的无监督学习方法,可以应用在市场细分,社交分析,组织运算集群,星系形成等。

K均值算法

K均值算法可以将不加便签的数据分成两个簇。首先随机选择两个点,称之为聚类中心。K均值是一种迭代方法,主要做两件事,第一是簇分配,第二是移动聚类中心。

- 簇分配是遍历所有的样本点,依据样本点距离两个聚类中心的远近,分配到不同的簇中。

- 将聚类中心移动到分好的簇的均值点

重复上述两个过称,直到聚类中心不再变化



K-means算法过称如下:



优化目标

K均值算法也有自己的优化目标函数,或称为最小化代价函数。一方面,它可以帮助我们调试学习算法,确保K均值算法的正确运行。另一方面,我们需要运用这个代价函数来帮助K均值找到更好的簇,并且避免局部最优解。



该函数也称为失真代价函数distortion cost function

可以证明,K均值算法中的簇分配过称就是对代价函数进行最小化的过称,移动聚类中心其实是选择了能够最小化J的μ的值



实际上,K均值算法是把代价函数的两组变量分开进行考虑,分别最小化,首先将c作为变量,然后再将μ作为变量。实质上就是首先关于c求J的最小值,再关于μ求J的最小值,并进行循环迭代。

因此,K均值算法的原理就是在最小化代价函数的过称,可以使用这个原理来调试我们的算法,保证算法实现的正确性。

随机初始化

有多种方式可以用来随机初始化聚类中心,但事实证明,有一种方法是效果最好的。那就是随机挑选K个训练样本作为我们的聚类中心。需要注意的是,不同的初始化方法,K均值算法可能得到不同的结果,尤其是该算法落到局部最优的情况。如图:



解决局部最优问题的一个方法是:随机初始化聚类中心多次,并运行K均值算法多次,通过多次尝试,保证我们最终能得到一个足够好的结果。进行了多次尝试之后,选择其中代价函数最小的作为最后的结果。



事实证明,在聚类数相对小的情况下,进行2-10次尝试就能找到最优解。

选择聚类的数目

这个问题并没有标准答案,目前最常用的方法是通过看可视化的图,或者看聚类算法的输出结果,或者一些其他手段来手动决定聚类的数目。

肘部法则Elbow Method

绘出聚类数目与代价函数之间的曲线,寻找其中的肘点。然而,事实证明,这种方法并不常用,你得到的曲线通常看起来是很平滑的,更加模棱两可的,根本没有清晰的肘点。

看不同的聚类数量能为下游目的提供多好的结果

降维Dimensionality Reduction(维度约减)

维度约减是要学习的第二种无监督学习方法,使用维度约减的原因和它的作用主要有以下两个:

数据压缩Data Compression

数据压缩不仅能让数据占用更少的内存和硬盘资源,更能为我们的学习算法提速。

下面给出两个位数约减的例子,从2D降到1D和从3D降到2D,如图:





数据可视化Data Visualization

将高维的数据映射到2维或3维上,方面我们绘图对数据进行可视化。

主成分分析法Principal Component Analysis, PCA

首先我们来看一下PCA的公式描述问题。PCA所做的工作就是寻找一个投影平面,对数据进行投影,使得每个点在平面上的投影误差的平方和最小。另外,在应用PCA之前,要先进行均值归一化和特征规范化。



对于一个K维的原始数据,我们需要找到K个向量u(1),u(2),…,u(k)找到的超平面,对其进行维度约减。

在进行PCA算法之前,首先要对数据进行预处理,它的方法与监督学习中提到的方法类似



下面我们来看具体的PCA算法:

把数据从n维约减到k维,首先要计算协方差矩阵,结果是一个n*n的矩阵,它的计算如下:

Σ=1m∑i=1m(x(i))(x(i))T

下面我们需要计算出Σ的特征向量eigenvectors,在Matlab中,可以使用以下语句进行计算:

[U,S,V] = svd(Sigma);


其中,svd表示奇异值分解,是比eig函数更稳定的一种求特征向量的函数。我们真正需要的是U矩阵,它也是一个n×n的矩阵,取其前k列作为我们要的超平面向量?即一个n×k的矩阵。





PCA算法总结



重构数据

在上述内容中,我们使用PCA算法将高位数据压缩到低维,那么,应该也存在一种方法,能够将数据从低维恢复到高维,下面,我们来讨论这种方法。



如图,事实上,通过上述方法重构的点只是与原样本点十分接近(如图中的xapprox),并不能真是还原原样本点。

选择主成分的数目

为了选择主成分的数量,首先来看几个概念:

平均平方映射误差Average Squared Projection Error:它是原始数据x与映射值xapprox之间的差,PCA就是要将这个量最小化,它表示为

1m∑i=1m∥∥x(i)−x(i)approx∥∥2

总变差Total Variation:它表示样本长度平方的平均值,可以理解成,平均来看,我的训练样本距原点多远

1m∑i=1m∥∥x(i)∥∥2

选择K的一个经验方法是:



从PCA的角度来讲,就是保留了99%的差异性。另一个叫常用的经验值是0.05。

在此基础上,选择K的算法就是依次进行尝试和监测。如下图左侧所示。实际上,在使用svd函数进行特征向量求解是,就可以得到我们想要的数据信息。矩阵S是一个n×n的矩阵,除了对角线元素之外,其他元素都为0,如下图:



使用PCA的一些建议

PCA定义了从x到z的对应关系,但这种关系只可以在训练集上运行PCA定义出来,它计算出一系列参数,包括特征缩放和均值归一化,以及用来降维的矩阵。要注意的是,这些参数适应的是我们的训练集,而不是交叉验证集和测试集。在实际操作时,根据训练集定义从x到z的映射,在将这种映射关系应用到交叉验证集上。

注:维度约减的应用主要体现在三方面:1 减少数据占用的空间,2 加速算法执行,3 可视化数据(此时的k=2或3)

PCA的错误使用:试图使用PCA去防止过拟合是不明智的。因为单独的减少特征并没有考虑结果y的值,因此不能用来解决过拟合问题。在使用机器学习算法之前,先不要使用PCA,PCA并不总是必需的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐