我爱编程

吴恩达机器学习Coursera-week8

2018-05-27  本文已影响111人  geekpy

Clustering

K-Means算法

从本周开始,我们开始学习无监督学习算法,而clustering分类算法是其中重要的一类算法,而clustering算法中K-Means算法是其中的佼佼者。
在讲K-Means算法时,Andrew首先用一段动画来阐释K-Means算法的分类过程,看完之后已经可以对K-Means如何分类有一个大致的了解,建议看视频。总体来说,首先我们需要有如下输入input:

optimization objective

所有的机器学习算法都会有优化目标,一般就是寻求cost function的极小值,K-Means也有优化目标,如下图:


2.1-K-Means optimization objective
  1. 如何选择初始的centroid?之前是随机选,那么有没有更好的方法?
  2. 如何选择K值,即到底分几个类?
    那么后续的两节主要是解决这两个问题。

Random Initialization

我们之前是通过随机选的centroid点,而通常在实践中,我们是随机从样本集中选择K个centroid点,如下图所示:


3.1-random initialization

这种随机选点有可能会导致J只能获得局部最优解,而无法获得全局最优解,如下图所示:


3.2-local optima
图3.2中下方的两个图展示就是局部最优解,我们看到这个分类并不是非常好。而要解决此类问题,通常的做法就是多次随机选取,这样最终会产生多个J,然后再看哪个J最小,如下图所示:
3.3-get global optima

通常针对K=2~10的情况我们需要进行多次随机选取centroid,再计算其最终的J,然后再看哪个J最小;而对于K>10的情况,通常不需要这么做。

Choose K

选取合适的K值,即到底要分几个类也是我们需要考虑的问题,通常我们有两种方式:

elbow方法如下图所示,找到K值导致的关键拐点


4.1-elbow method

而很多时候没有此类拐点,如上图右方的图,那么这种情况下,就需要根据我们实际项目的需求,如Andrew举了T-shirt分类的例子,如下图:


4.2-choose K according to purpose

Motivation

这里说的Motivation我理解是说为什么要做feature reduction,这里主要有两个原因:

Motivation I

此小节主要讲了两个例子,一个是从2D(Dimension)到1D;另一个是从3D到2D的例子


5.1-2D to 1D

实际上就是平面上的点映射到一条直线上,从而可以用一个数来标识这个样本,而不需要两个数来标识,下面的例子是从3D映射到2D,道理一样。


5.2-3D to 2D

Motivation II

第二个我们要做feature reduction的动机是通过这种方式,我们可以使用图形化的方式来展示我们的数据和模型,作者举了一个国家相关的统计数据模型,当我们将50D的数据映射到2D的平面图上的时候,我们发现其实国家的各项数据实际跟两个数据是紧密相关的,一个是人均GDP,另外一个就是总GDP。所以,这就帮助我们更好的理解数据和模型。示例如下图:


5.3-country 2D data

Principal Component Analysis

此章主要讲PCA(Principal Component Analysis)

Principal Component Analysis Problem Formulation

此小节主要定义了什么是PCA问题,PCA问题实际上就是要找到一个direction,在这个方向上所有的样本点都会投射上去,并且这个投射的平均距离最终是最小的。如下图所示,红色的直线就是我们希望要的方向,而紫色方向的线就要差很多。


6.1-PCA problem formulation

PCA更一般的定义如下:


6.2-PCA Problem General Definition
上图给PCA一个更一般化的定义。

需要注意的是,PCA并不是Linear Regression,如下图所示,Linear Regression是求解平行于y轴的最小距离(要跟y最接近),而PCA是说跟那条线的垂直距离。两者的目标是不一样的,而且在Linear Regression当中我们总是会有y值,但是在PCA中不需要考虑y值,只需要看x。


6.3-PCA is not linear regression

PCA Algorithm

在做PCA计算之前,首先需要做feature scaling/mean normalization,关于此方面知识参考
吴恩达机器学习Coursera-week2

之后,我们需要计算协方差矩阵(Covariance Matrix),再通过协方差矩阵和SVD(Sigular Value Decompositon奇异值分解)算法计算出U,再通过U的前k个vector来计算z,如下图所示:

6.4-PCA summary
通过Ureduce计算z的过程如下:
6.5-get z

Applying PCA

Reconstruction from compressed representation

当我们需要将压缩后低维度的数据恢复到高维度的数据时,这就是reconstruction。计算过程如下:


7.1-reconstruction

Choosing number K

了解了PCA之后,我们就会有一个疑问,那么我们该如何选择维数k呢?是不是越小越好呢?但是PCA是有损压缩,那么这种情况下会不会导致与原始数据差异过大呢?

首先,我们需要有一个衡量的标准,如下图所示:


7.2-measure the difference between x and x(approx)

那么如何根据这个值来选择k呢?最直接的想法就是选择不同的k,然后按照这个公式计算出一个值,看其是否符合我们的要求(e.g. <0.01)。但是这种方式非常繁琐,我们有更好的方法来计算,如下图所示:


7.3-choosing k

Advice for applying PCA

首先,作者介绍了实际应用PCA的总体过程,如下图所示:


7.4-applying PCA procedure

接下来,作者介绍了集中不当的使用PCA的方式:


7.5-bad use, to prevent overfit

另外,如果不需要使用PCA就不用PCA,除非有非常强的理由或者说不得不使用PCA的时候才使用,而不是任何时候都使用PCA。

上一篇下一篇

猜你喜欢

热点阅读