Machine Learning - Andrew Ng 笔记(6)

Unsupervised Learning

本章节进入无监督学习,相比于Supervised Learning处理的Training Set,{(x^1,y^1),(x^2,y^2),...,(x^m,y^m)},Unsupervised Learning需要处理的Training Set是unlabeled{(x^1),(x^2),...,(x^m)},是需要算法主动去将样本分类.

Supervised Learning

Unsupervised Learning

Clustering

K-means Algorithm

K-means算法是无监督学习算法的一种,下图所示,K表示期望将数据分成的类别个数.

input

下面这个例子是使用K-means算法将Training Set分为两类.
Training Set

因为要分成两类,所以随机初始化两个cluster centroids, red/blue
Randomly Initialize 2 cluster centroids

Cluster assignment step
分别计算Training Set与两个cluster centroids之间的距离,距离red最近的将被染成红色,距离blue最近的将被染成蓝色.
Cluster assignment step

Move Centroids
接下来对上图中red/blue的样本分别求均值(means),并作为新的red/blue centroids位置.
Move Centroids

不断重复上述步骤直到cluster centroids位置收敛(converged,不再变化)为止,此时将得到样本最终的分类.
cluster centroids converged

下图是K-means算法的伪代码.
K-means Algorithm

注意
1.求样本和centroids的距离可以使用,该值最小时对应的k即是该样本在此次迭代中的分类
2.,其中n是此次迭代中被分类为k的样本数量,q为此次迭代中被分类为k的所有样本
3.如果发现某一分类中不存在任何样本,一般的做法是删掉这个分类.

Optimization objective

之前学过的监督算法中都有代价函数,我们都需要取优化一个目标,对于k-means算法来说也有代价函数,如下图

terms and optimization objective

是指当前所属的分类.
是指cluster centroids.
是指当前所属的分类对应的cluster centroid.
K-means algorithm

回过头看k-means算法就类似于一个不断迭代求到使得最小的的搭配,之后在带入到求到代价.

Random Initialization

该如何初始化cluster centroids?

Random Initialization

随机选取K个训练样本作为初始的cluster centroids即可.
Stuck in local optima

因为cluster centroids选取的随机性,K-means算法很可能找不到global optima,如上图所示.
Multiple Random Initialization

为了寻找给优的解,我们使用上图所示的Multiple Random Initialization,在得到的所有选择一组使最小的组合即可.
注意:Multiple Random Initialization在K比较小的时候比如<=10时效果显著,如果K非常大比如100,那么这种方法可能不会如预期中的有用,但是无论K大还是小,上文中提到的选取的方法是Prof.推荐的.

Choosing the Number of Clusters

Elbow method

使用Elbow method选择K,但是有时候函数的拐点没有那么明显,所以这种方式一般不推荐.
另一种方式是从需求出发,意思是"主观上你想要将样本分为几类?",比如下图中的服装尺码,从公司角度考量,是希望分3个尺码使得衣服买的更便宜还是分5个尺码让客户有更多的选择.


For later purpose

Dimensionality Reduction

Dimensionality Reduction可以压缩特征(Data Compression),将样本特征种类压缩的好处在于:
1.可以提升算法执行的效率,节省空间/时间
2.可以图形化数据,毕竟如果样本有>=4个特征种类后很难用图形去描绘他们,如果不能用图形化样本那么就没法很好的理解数据,所以我们一般会将特征值种类压缩到2~3,图形化起来更方便.

Reduce from 2D to 1D

Reduce from 3D to 2D

2D->1D就是将样本投影到直线上,3D->2D就是将样本投影到平面上.
Data Visualization

2D

上图中压缩后的特征其实没有具体的意义.
Plot example in 2D

Principal Component Analysis problem formulation

PCA problem formulation

PCA算法是最小化projection error来压缩特征值.
注意PCA算法和Linear Regression之间的区别,如下图:
PCA is not Linear regression

上图左是Linear Regression,可以看到纵轴是样本对应的y,而且选择去拟合样本的时候cost function是最小化与y之间的误差.上图右是PCA,cost function是最小化projection error,是垂直于压缩后特征空间的距离.

Principal Component Analysis algorithm

目前最流行的实现Dimensionality Reduction(降维)的算法是PCA.算法步骤如下:
1.Feature Scaling/mean normalization

Preprocess

2.求协方差矩阵并通过svd函数求出U
协方差矩阵
此时U是一个n*n的矩阵
svd

3.求对应的新特征矩阵


size(X)=m*n,size(U_{reduce})=n*k
屏幕快照 2019-10-11 上午12.20.09.png

summary

summary

还原z->x

屏幕快照 2019-10-11 下午2.11.43.png


size(Z)=m*k,size(U_{reduce})=n*k

how to choose k

how to choose k

执行一次svd的到S,S是一个对角线矩阵,就是矩阵S对角线上的元素.

Advice for Applying PCA

首先总结PCA的作用:

  • 数据压缩(降维),带来的好处如下:
    • 减少所需存储空间
    • 提升算法速度
  • 样本可视化
    The PCA projection can be thought of as a rotation that selects the view that maximizes the spread of the data, which often corresponds to the “best” view.

speedup supervised learning algorithm

上图是使用PCA加速Logistic Regression的过程:
1.首先抛开向量y,对training set中的样本使用PCA得到和
2.构造新的training set,{(),()...()}
3.执行sigmoid函数预测结果即可
注意:cross-validation和test set中的样本直接使用training set应用PCA得到的U_{reduce}映射即可.即z_{cv}=(U_{reduce})^Tx_{cv}

bad use of PCA

不能因为PCA可以压缩特征就使用PCA去防止overfitting,overfitting的问题还是使用regularization处理.

屏幕快照 2019-10-11 下午11.54.49.png

不推荐盲目的使用PCA去处理原样本,至少在使用PCA之前,先尝试使用原样本进行计算,除非是在行不通,比如计算时间是在太久之类的,才考虑使用PCA,毕竟压缩的数据还是可能会丢掉一些重要的信息,而且是在不考虑y的情况下丢掉的(说不定丢掉的是归类的重要特性).

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容