机器学习 吴恩达 第八周 笔记

K均值聚类---K-mean

对无监督学习对象进行分类的常用方法之一。

因为比较简单,所以就简单说下

机器学习 吴恩达 第八周 笔记

机器学习 吴恩达 第八周 笔记 

一开始先输入K(就是cluster的个数)还有training set。 

机器学习 吴恩达 第八周 笔记 

从training set中随机选取K的点作为初始的cluster centroid。

然后for loop:

① min(每个training set的点到cluster centroid的距离),因为是根据这个点到cluster centroid的距离来判断,这个点是否属于这个cluster centroid。E.g c(5) = 4 代表 第五个样本点是属于第四个cluster centroid。

② 等到所有点都找到了自己的cluster centroid后,再找出每个cluster新的中心点,具体就是将属于同一个cluster的所有点加起来,再取平均值,得到的就是新的cluster centroid的坐标。E.g c(76) = 4, c(24) = 4,c(5) = 4,就是将这三个的横纵坐标加起来然后除以3得出新点坐标。

在将所有新的cluster centroid算出来后,如果新点跟旧点相比,差距不大,则可以结束,否则就继续循环①②(带着新点循环)。

机器学习 吴恩达 第八周 笔记

如图,K-mean的目的是让costFunction J达到最小,就是training set中每个点到其cluster centroid的距离的和最小。

然而,随机初始化centroid可能会带来不好的影响,看图

机器学习 吴恩达 第八周 笔记 如上图,如果运气差的话,初始点的位置不好,会出现以上现象。明显的3个cluster可能最后结果只有2个cluster。

解决方法:多次循环K-mean,然后去J的最小值时的K

机器学习 吴恩达 第八周 笔记 机器学习 吴恩达 第八周 笔记

循环算K-mean后,会有这么两种结果第一种称为Elbow method,就是斜率问题。如图选择K=3,因为斜率在这里骤变。

然后对于图二,很难选

机器学习 吴恩达 第八周 笔记

这里post上一题目。K=5时>K=3

有时候,对于K-mean要根据需求了来选择K,如下图,不同衣服size

机器学习 吴恩达 第八周 笔记

Dimensionality Reduction---维度约简

两个motivation : 1. Data compression 数据压缩,可以提高运算速度和减少存储空间。

                               2. Data Visualization 更直观的视图

Data Compression

从2D->1D

在这个例子里,2D坐标系中所有点可以由一条大概的直线贯穿,点到直线上的映射(注意,这里是点到直线的距离,并不是点的纵坐标到直线的距离) 如下图那一条线就是点的映射,那么整个2D数据就可以由原来的(x,y)--->z用z来表达

机器学习 吴恩达 第八周 笔记

3D->2D同理,只不过用(z1,z2)来代替原本的(x,y,z) 

机器学习 吴恩达 第八周 笔记 

 Data Visualization

机器学习 吴恩达 第八周 笔记 

机器学习 吴恩达 第八周 笔记 

机器学习 吴恩达 第八周 笔记 上面三图所表达的东西可以最终由GDP和人均GDP或类似的东西来表达。从原本的好多D降到了2D

Principal Component Analysis Problem Formulation(PCA)

PCA的目的就是降维,具体怎么做呢,就是找到一个向量(就是那条线),使得所有training 点映射在这向量上面的projection error最小。啥是projection error,就是下图,点到直线的距离(是距离,不是纵坐标距离)

机器学习 吴恩达 第八周 笔记 

机器学习 吴恩达 第八周 笔记 这就是上面所说的距离。左图是linear regression,其目的是预测y和原本真实的y的差距,所以用的是纵坐标上的距离。

而右图则是PCA,求得是降维过程中的最佳向量。

那咋用呢

第一步:处理数据,feature scaling啊 mean normalization啊什么的保证取值范围在一个合理的范围内,不然容易因为某一个的取值范围过大或过小而影响了最终结果(参考那个房子面积和房间数)

机器学习 吴恩达 第八周 笔记

 第二步:计算协方差矩阵 和特征向量

机器学习 吴恩达 第八周 笔记

 机器学习 吴恩达 第八周 笔记这个协方差(covariance matrix)符号和求和符号很像,然后这里用sigma表示协方差矩阵

接下来就是算特征向量

机器学习 吴恩达 第八周 笔记svd()唤作single value decomposition奇异值分解。这里U,S,V我们只取U来玩。

具体原理,咱不知道,咱也不敢问。

机器学习 吴恩达 第八周 笔记

看到上面的U没有,我们取前K个(这里的K就是降维后的维数),作为K个向量μ,(啥意思呢,就是如果2D->1D, 就只用一条向量能表达嘛,这个μ就等于那条直线,同理 3D->2D,μ1,μ2)。。然后z就是我们降维后用来代替原本维度东东。z = Ureduce * X,这个Ureduce就是取了前K个后的U。

机器学习 吴恩达 第八周 笔记

Reconstruction

有降维肯定就有还原啦。

机器学习 吴恩达 第八周 笔记 

这是第一种方法,projection error 的平均值误差 / 那个总变量得到的结果小于某个数,这里是小于0.01,换句话说,99%的变量都被保留了 

机器学习 吴恩达 第八周 笔记

第二种方法就简单的多, 咱取U,S,V中的S,这是一个对角线有元素,其他为0的矩阵,然后按照公式,要多少k取多少k然后除总数,搞定

机器学习 吴恩达 第八周 笔记

最后补充: 

机器学习 吴恩达 第八周 笔记

 机器学习 吴恩达 第八周 笔记 

PCA只是用来降维,不能用来解决over'fit 

机器学习 吴恩达 第八周 笔记 

PCA不应该是作为首先考虑的手段,应该用别的方法算过后不行才用。

这里只放两段代码

 机器学习 吴恩达 第八周 笔记

机器学习 吴恩达 第八周 笔记