Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
|
6 years ago | |
---|---|---|
.. | ||
pic | 6 years ago | |
README.md | 6 years ago | |
download_iris.py | 6 years ago | |
iris.csv | 6 years ago | |
k-means.ipynb | 6 years ago | |
k-means.py | 6 years ago | |
kmeans-color-vq.ipynb | 6 years ago |
[TOC]
利用无标签的数据学习 数据的分布 或 数据与数据之间的关系 被称作无监督学习
有监督学习和无监督学习的最大区别在于数据是否有标签
无监督学习最常应用的场景是聚类(clustering)和降维(DimensionReduction)
聚类(clustering),就是根据数据的"相似性"将数据分为多类的过程
(相似性或相异性):度量两个数据点的相似程度
1. 随机选取k个数据点作为初始聚类中心
2. 计算每个数据点与各个中心之间的距离,把每个数据点分配给距离他最近的聚类中心
3. 数据点分配以后,每个聚类的聚类中心会根据聚类现有的数据点重新计算
4. 不断重复直到满足某个终止条件为止
误差平方和
(sum of squared error,SSE)局部最小欧式空间
,聚类均值可以使用如下公式 $m_j = {1\over \mid C_j \mid} \sum_ {x_i \in C_j} X_i$范畴数据
,有一种k-均值算法的变体——k-模算法
。异常值
十分敏感
随机采样
,因为采样过程中只选择很少一部分的数据点,因此选中异常值的概率将会很小(可以先用采样点进行预先聚类然后把其他数据点分配给这些聚类)超维椭圆体
(或超维球体)的聚类从树状图的最底层开始构建树:
从一个包含全部数据点的聚类开始:
两个聚类之间的距离是两个聚类中心之间的距离
真实的训练数据总是存在各种各样的问题:
下面探讨一种称作主成分分析(PCA)的方法来解决部分上述问题。PCA的思想是将$n$维特征映射到k维$(k<n)$,这$k$维是全新的正交特征。这$k$维特征称为主元,是重新构造出来的$k$维特征,而不是简单地从$n$维特征中去除其余$n-k$维特征。
$$
FinalData(mk)=DataAdjust(mn)×EigenVectors(n*k)
$$
第一步:分别求$x$和$y$的平均值,然后对于所有的样例,都减去对应的均值。这里$x$的均值是1.81,$y$的均值是1.91,那么一个样例减去均值后即为(0.69,0.49),得到
第二步:求特征协方差矩阵,数据是2维,协方差矩阵为
对角线上分别是$x$和$y$的方差,非对角线上是协方差。协方差大于0表示$x$和$y$若有一个增,另一个也增;小于0表示一个增,一个减;协方差为0时,两者独立。协方差绝对值越大,两者对彼此的影响越大,反之越小。
求协方差的特征值和特征向量,得到
上面是两个特征值,下面是对应的特征向量,特征值0.0490833989对应特征向量为$ (-0.735178656,0.677873399)^T$,这里的特征向量都归一化为单位向量。
将特征值按照从大到小的顺序排序,选择其中最大的$k$个,然后将其对应的$k$个特征向量分别作为列向量组成特征向量矩阵。这里特征值只有两个,我们选择其中最大的那个,这里是1.28402771,对应的特征向量是$(0.6)77873399,-0.735178656)^T$
将样本点投影到选取的特征向量上。假设样例数为m,特征数为n,减去均值后的样本矩阵为$DataAdjust(mn)$,协方差矩阵是$nn$,选取的k个特征向量组成的矩阵为$EigenVectors(nk)$。那么投影后的数据$FinalData$为$FinalData(mk) = DataAdjust(mn) \times EigenVectors(nk)$
得到结果是:
这样,就将原始样例的n维特征变成了k维,这k维就是原始特征在k维上的投影。
上面的数据可以认为是learn和study特征融合为一个新的特征叫做LS特征,该特征基本上代表了这两个特征。
上述过程有个图描述
正号表示预处理后的样本点,斜着的两条线就分别是正交的特征向量(由于协方差矩阵是对称的,因此其特征向量正交),最后一步的矩阵乘法就是将原始样本点分别往特征向量对应的轴上做投影。
如果取的k=2,那么结果是
这就是经过PCA处理后的样本数据,水平轴(上面举例为LS特征)基本上可以代表全部样本点。整个过程看起来就像将坐标系做了旋转,当然二维可以图形化表示,高维就不行了。上面的如果k=1,那么只会留下这里的水平轴,轴上是所有点在该轴的投影。
这样PCA的过程基本结束。在第一步减均值之后,其实应该还有一步对特征做方差归一化。比如一个特征是汽车速度(0到100),一个是汽车的座位数(2到6),显然第二个的方差比第一个小。因此,如果样本特征中存在这种情况,那么在第一步之后,求每个特征的标准差$\sigma$,然后对每个样例在该特征下的数据除以$\sigma$。
归纳一下,使用我们之前熟悉的表示方法,在求协方差之前的步骤是:
其中$x^{(i)}$ 是样例,共m个,每个样例n个特征,也就是说$x^{(i)}$是n维向量,$x_j^{(i)}$是第i个样例的第j个特征,$\mu$是样例均值,$\sigma_j$是第j个特征的标准差。
整个PCA过程貌似及其简单,就是求协方差的特征值和特征向量,然后做数据转换。但是有没有觉得很神奇,为什么求协方差的特征向量就是最理想的k维向量?其背后隐藏的意义是什么?整个PCA的意义是什么?
在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。因此我们认为,最好的k维特征是将n维样本点转换为k维后,每一维上的样本方差都很大。
比如下图有5个样本点:(已经做过预处理,均值为0,特征方差归一)
下面将样本投影到某一维上,这里用一条过原点的直线表示(前处理的过程实质是将原点移到样本点的中心点)。
假设我们选择两条不同的直线做投影,那么左右两条中哪个好呢?根据我们之前的方差最大化理论,左边的好,因为投影后的样本点之间方差最大。
红色点表示样例$x^{(i)}$,蓝色点表示$x^{(i)}$在$u$上的投影,$u$是直线的斜率也是直线的方向向量,而且是单位向量。蓝色点是$x^{(i)}$在$u$上的投影点,离原点的距离是$\mid| x^{(i)},u \mid \mid$(即$x^{(i)^T}u$或者$u^Tx^{(i)}$)由于这些样本点(样例)的每一维特征均值都为0,因此投影到$u$上的样本点(只有一个到原点的距离值)的均值仍然是0。
回到上面左右图中的左图,我们要求的是最佳的u,使得投影后的样本点方差最大。由于投影后均值为0,因此方差为:
$$
\begin{align}
\frac {1}{m}\sum_{i=1}^{m}(x^{(i)^T}u)^2 &= \frac{1}{m}\sum_{m=1}^{m}u^Tx^{{(i)}}x^{{(i)^T}}u\
&= u^T(\frac{1}{m}\sum_{i=1}^{m}x^{(i)}x^{(i)^T})u.
\end{align}
$$
中间那部分很熟悉啊,不就是样本特征的协方差矩阵么,($x^{{(i)}}$的均值为0,一般协方差矩阵都除以$m-1$,这里用$m$)。
用$λ$来表示$\frac {1}{m}\sum_{i=1}^{m}(x^{(i)^T}u)^2$,$Σ$表示$ \frac{1}{m}\sum_{i=1}^{m}x^{(i)}x^{(i)^T} $,那么上式写作
$$
λ=u^T\sum u
$$
由于$u$是单位向量,即$u^Tu=1$,上式两边都左乘$u$得,$uλ=λu=uu^T\sum u=\sum u$
即$\sum u = λu$
We got it!$\lambda$就是$\sum$的特征值,$u$是特征向量。最佳的投影只显示特征值$\lambda$最大时对应的特征向量,其次是$\lambda$第二大对应的特征向量,依次类推。
因此,我们只需要对协方差矩阵进行特征值分解,得到的前$k$大特征值对应的特征向量就是最佳的$k$维新特征,而且这$k$维新特征是正交的。得到前$k$个$u$以后,样例$x^{(i)}$通过以下变换可以得到新的样本。
$$
y^{(i)}=\left{
\begin{matrix}
u_1^Tx^{(i)} \
u_2^Tx^{(i)} \
... \
u_k^Tx^{(i)}
\end{matrix}
\right}
$$
其中第$j$维就是$x^{(i)}$在$u_j$上的投影,通过选取最大的$k$个$u$,使得方差较小的特征(如噪声)被丢弃。
PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
PCA技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数p据相关,与用户是独立的。 但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。
有时数据的分布并不是满足高斯分布。如下图所示,在非高斯分布的情况下,PCA方法得出的主元可能并不是最优的。在寻找主元时不能将方差作为衡量重要性的标准。要根据数据的分布情况选择合适的描述完全分布的变量,然后根据概率分布式
$$
P(y_1,y_2)=P(y_1)P(y_2)
$$
来计算两个向量上数据分布的相关性。等价的,保持主元间的正交假设,寻找的主元同样要使$P(y_1,y_2)=0$。这一类方法被称为独立主元分解(ICA)。在下图中,数据的分布并不满足高斯分布,呈明显的十字星状。 这种情况下,方差最大的方向并不是最优主元方向。
SVD分解
原理相同sklearn
和 jupyter notebook
的使用机器学习越来越多应用到飞行器、机器人等领域,其目的是利用计算机实现类似人类的智能,从而实现装备的智能化与无人化。本课程旨在引导学生掌握机器学习的基本知识、典型方法与技术,通过具体的应用案例激发学生对该学科的兴趣,鼓励学生能够从人工智能的角度来分析、解决飞行器、机器人所面临的问题和挑战。本课程主要内容包括Python编程基础,机器学习模型,无监督学习、监督学习、深度学习基础知识与实现,并学习如何利用机器学习解决实际问题,从而全面提升自我的《综合能力》。
Jupyter Notebook SVG Python Text CSV other