10月25日-吴恩达机器学习P78-87

(一)K-Means优化目标

1、K-Means的代价函数
执行K-means算法时我们将追踪两组变量:
一个是c(i),它表示的是当前样本x(i)所属的那个簇的索引;
一个是μk,它表示的是第k个聚类中心的位置,这里的k可以是1或2,…或K(一共要分为K个簇)。
此外,我们用μc(i)表示x(i)所属的那个簇的聚类中心的位置。
接下来就可以表示K-means算法的优化目标(代价函数)了:
即1/m乘以每个样本到x(i)所属的簇的聚类中心的聚类的平方,K均值算法就是要找到能够最小化代价函数J的参数c(i)和μ(i)。
这个代价函数有时也叫失真代价函数。
10月25日-吴恩达机器学习P78-87_第1张图片接下来讲一些细节。
在K-Means算法代码中,内循环的第一步是簇分配:把每一个点划分给各自所属的聚类中心,其实就是在最小化代价函数J(c(1),c(2),…c(m)),我们要保持最近的聚类中心,也就是μ1、…μk的位置固定不变。所以第一步是选出c(1),c(2),…c(m)来最小化这个代价函数。
内循环的第二步是移动聚类中心:即选择μ1、…μk值来最小化这个代价函数。
10月25日-吴恩达机器学习P78-87_第2张图片

(二)随机初始化

1、初始化K(即将数据分成K簇)
(1) 首先应使K 即K应该小于样本数
(2) 随机挑选K个样本,然后设置μ1、…μk,使它们等于这个K个样本。
如下,假设你随机选k=2个样本作为聚类中心,那么选出的两个标记点就是μ1、μ2,与样本特征xi、xj选的一样。
10月25日-吴恩达机器学习P78-87_第3张图片2、但初始化的点不同,最终聚类的结果可能也不同,很有可能就出现局部最优解。
比如给出一系列样本点,上面那个聚类结果是最合适的,但下面两个聚类结果显然分类不合理,是因为K均值算法的代价函数落在了局部最优。
10月25日-吴恩达机器学习P78-87_第4张图片因此,我们可以尝试多次随机初始化,尽量使得最终找到最优的分簇结果。
即:我们执行下面的代码100次,进行100次随机初始化,然后得到了100种分类结果和对应的代价,我们选择里面代价最小的一个。
此外,如果你的K足够小的话(2-10之间),多次随机化能保证你找到更好的聚类;但如果你的K很大,多次随机化并不能对你的聚类有所改善,一次随机化就可以了。
10月25日-吴恩达机器学习P78-87_第5张图片

(三)选取聚类数量

1、K应该为多大合适呢?
对于同一堆数据样点,有人可能觉得是4类数据、有人可能觉得是2类数据…目前也没有自动化的算法来决定分成几簇,只能是手动选择。
2、手动选择时遵循一个法则–“肘部法则”:
绘制出K与代价函数J的曲线,将之类比成一个手臂,找到手肘的地方–这里就是当K=3的时候,即曲线的拐点(在拐点之前下降的很快,在拐点之后下降的很慢)。
那么我们就选择K=3。
但是大多数时候我们得到的曲线类似于右边这个,并不能很清晰的找到那个拐点处,所以我们不能期望它来解决更多的问题。
10月25日-吴恩达机器学习P78-87_第6张图片3、用后续的下游目的决定你的K
以卖T恤为例,店主可以设置K=3将T恤做成S,M,L三种尺码,也可以设置K=5将T恤做成XS,S,M,L,XL五种尺码。那么如何选择这个K就由店主考虑我应该做少一点尺码种类能卖更多件T恤还是做多一点种类呢?他的下游目的就是指商业价值。
10月25日-吴恩达机器学习P78-87_第7张图片

(四)无监督学习类型之降维

1、降维的作用一是使数据压缩,二是加快学习算法。
(1) 二维降一维
将这个平面上的点找到一根使得所有数据几乎都落在上面的直线,然后将样本点(x1,x2)投影到这根直线上,这样就可以将二维表示成一维的新特征z1的点。
10月25日-吴恩达机器学习P78-87_第8张图片(2) 三维降二维
在三维空间中的点集找到一个能使大多数点落在上面的二维平面,然后将这个二维平面摊开在直角坐标系上。这样就将三维降到了二维。
10月25日-吴恩达机器学习P78-87_第9张图片假设你有50个特征变量,你不能通过对每个点绘制50维的向量观察,更有效的办法是将一些类似的特征变量合并成一个特征变量,将50维最终变成2维,然后再进行绘图会更加一目了然。
2、常用的降维算法–主成分分析法
PCA(主成分分析)做的事情:找一个低维平面,将数据投影在上面,使得数据到投影点的距离的平方和最小,从而实现降维。
另外,在进行PCA之前,首先要进行均值归一化和特征规范化,使得特征量x1、x2…的均值为0。
(1)以二维降一维为例:
PCA试着找一个向量u(i),使得根据向量延伸的直线上当数据投影后,能够最小化投影误差(这个点与投影后对应的点的距离)的平方和。
同样地,如果我们想将N维数据将到K维,那我们就要找K个向量来对数据进行投影以最小化投影误差。将这些数据投影到这K个向量展开的线性子空间上,最小化正交投影的距离。
10月25日-吴恩达机器学习P78-87_第10张图片(2)PCA和线性回归的关系
左图是线性回归:我们要找到的是一条使得所有蓝线的长度和最小的直线,注意这些蓝线是点到直线的垂直距离(都是竖直方向的)。因为我们要根据x预测y,所有是y轴方向的预测值与实际值的误差。
右图是PCA:我们找的直线是要求所有蓝线长度和最小的,而这些蓝线是点x与直线的正交距离。
10月25日-吴恩达机器学习P78-87_第11张图片

(五) 主成分分析问题展开

1、数据预处理
首先要将数据集进行特征缩放或均值标准化:
我们先计算每个特征xj的均值μi,然后用它减去它的均值得到的xj(i)来替代特征xj。这使得每个特征的均值都为0。
当然,如果有的数据集需要进行特征缩放的话(比如房屋面积是几千平米,但卧室数量是几个,数量级相差比较大),需要进行特征缩放,用xj减去它的平均值后再除以Sj(这里的Sj可以是最大值-最小值;或标准差)。
10月25日-吴恩达机器学习P78-87_第12张图片2、将n维降到k维(注意:这里删除x0=1)
(1)找到k维的向量
首先计算协方差∑,式子左边的∑是矩阵的意思,式子右边的∑是求和的意思。
在Octave中可以用svd(奇异值分解)或eig命令求协方差矩阵,求的是Sigma这个矩阵(是一个nXn的矩阵)的协方差。
将会输出三个矩阵U、S、V,但你真正需要的是这个U矩阵,它将由u(1)、u(2)、…u(n)共n个列向量组成,只需要取前k个,这给了我们k个投影方向。
10月25日-吴恩达机器学习P78-87_第13张图片(2) 将原始数据矩阵X(n维)降维表示到Z矩阵(k维)上。
我们将这些取出来的向量组成Ureduce矩阵。然后求解降维后得到的Z矩阵。
10月25日-吴恩达机器学习P78-87_第14张图片3、代码总结上述PCA过程
10月25日-吴恩达机器学习P78-87_第15张图片4、如何选取参数K?(将n维数据降到K维)
首先定义投影误差平方的平均值(见第一个式子);然后定义数据的总方差为样本X的平方和的平均值(也就是,每个训练样本距离原点有多远,见第2个式子)。
一个常见的经验是,我们选择一个较小的k以保证x和其投影的平均距离除以数据的总方差≤0.01,使得99%的方差被保留。
其他常见的值有保留99%(或95%、90%)的方差。
10月25日-吴恩达机器学习P78-87_第16张图片如何执行选择过程?
(1)方法1:(左边这种)
首先让k=1,然后运行PCA算法计算Ureduce,z(1)、z(2)…z(m),
Xapprox(1),Xapprox(2)…Xapprox(m),然后我们检查一下刚刚这个式子是否满足≤0.01。如果满足,我们就将k设为1;否则,我们设k=2,再次进入PCA算法,检查是否满足式子…
这种方式比较低效。
(2)方法2:(右边这种)
在svd方法执行PCA过程中,会返回一个S矩阵(nXn维的,除了对角线上的元素其余元素都为0),那么左边这个check的式子就等价于右边这个给定k时求前k个Sii对角线元素之和/整个对角线上Sii元素之和的比值是否≥0.99。
这种方式只有做一次奇异值分解,相对来说更高效。
10月25日-吴恩达机器学习P78-87_第17张图片

(六) 压缩还原

将投影后的k维Z向量还原原来的n维向量X,按照式子推导是这样的:
只要投影误差不大,我们认为可以近似还原二维数据点的。
10月25日-吴恩达机器学习P78-87_第18张图片

(七) PCA对监督学习算法的应用

1、假设x(i)是一个高维度特征向量,那么进行逻辑回归会比较困难,我们可以使用PCA进行降维。
先将所有x(i)提取出来,得到一个无标签的数据集;然后使用PCA对其降维得到新的数据集Z(i),用这个重新表示训练集;然后将这些低维数据集送入到学习算法中训练。
如果你有一个新的测试样本x,要对其预测y,那么需要先用PCA对x进行降维,再代入到假设函数中。
注意:我们应该只在训练集上用PCA降维合这些参数,而不是交叉验证集或测试集上;定义了x到z的映射后,可以将这个映射应用到你的交叉验证集和测试集上。
10月25日-吴恩达机器学习P78-87_第19张图片
2、PCA的应用
(1)压缩数据
(2)加快学习算法(通常我们选择K要在保留99%的方差的情况下)
(3)可视化应用(一般是二维或者三维数据集,即K=2或3)
补充:对PCA算法的误用–使用PCA来防止过拟合
如果我们的x(i)有n个特征,我们使用PCA算法降维后的z(i),可以减少特征数量到K。也许最终的效果还好,但是我非常不建议这样做!如果真的在意过拟合的话,就是使用正则化。因为PCA是对无标签数据进行降维,不关心y值是什么,很可能就会舍掉一些重要信息;正则化的效果可能会比低方差的PCA带来的效果一样或更好,因为它知道y值,所以也不太可能舍弃掉重要信息。
10月25日-吴恩达机器学习P78-87_第20张图片

你可能感兴趣的:(吴恩达机器学习,机器学习,聚类,算法)