第八周-无监督学习

对于无监督学习我们主要学习两种算法:聚类(K-means)和维度约简(PCA法)。

1聚类算法clutering

1.1聚类算法简介

无监督学习:我们面对的是一组无标记的训练数据, 数据之间, 不具任何相关联的标记。如图:

我们得到的数据 看起来像这样:一个数据集, 一堆数据点,但没有任何标记以供参考。所以从训练数据中, 我们只能看到 x 1、 x 2… 等等… 到 x(m) 没有任何标记 y 供参考。

就此数据而言, 其中一种可能的结构 是 所有的数据 可以大致地划分成 两个类或组。 因此,像我介绍的 这种划分组的算法, 称为 
聚类算法。 这是我们第一种 无监督学习算法。

记住,聚类算法clutering只是无监督学习的一种,不是所有的无监督学习都是聚类算法

1.2K-means

K-means也是聚类算法中最简单的一种。但是里面包含的思想却是不一般。

K-means算法是将样本聚类成k个簇(cluster),具体算法描述如下:

  1. 随机选取k个聚类质心点(cluster centroids)为image

  2. 重复下面过程直到收敛 {

    • [ ] 对于每一个样例i,计算其应该属于的类

image

  • [ ] 对于每一个类j,重新计算该类的质心

image

}

下图展示了对n个样本点进行K-means聚类的效果,这里k取2。 
image

一个练习题:

1.2.1kmeans的目标函数

在大多数我们已经学到的 监督学习算法中。 算法都有一个优化目标函数 或者某个代价函数(又叫:畸变函数)需要通过算法进行最小化 。

事实上 K均值也有 一个优化目标函数或者 需要最小化的代价函数。

image

注意,这个值只会随着迭代下降,不会上升。

1.2.2随机初始化

这一节我们讨论: 如何避开局部最优来构建K均值聚类方法 。

有几种不同的方法 可以用来随机 初始化聚类中心 ,但是 事实证明, 有一种方法比其他 大多数方法 更加被推荐。

可以避免 可能局部,获得全局最优的结果 。

1.2.3选择类别数

讨论一下 K-均值聚类的最后一个细节 :我想选择聚类数目的更好方法。 或者说是如何去选择 参数大写K的值 。

说实话 这个问题上没有一个 非常标准的解答 、或者能自动解决它的方法。

目前用来决定聚类数目的 最常用的方法 ,仍然是通过看可视化的图, 或者看聚类算法的输出结果 ,或者其他一些东西来手动地决定聚类的数目。

两种常见方法: 
1. 肘部法则

例如下面的例子,分别考虑3和5,画出loss图像。

  1. 从后续需求(生意)角度考虑

下面有个练习题:

2 维数约减 (dimensionality reduction)

这节开始介绍 第二种无监督学习问题 它叫维数约减 (dimensionality reduction) 。

我们希望使用维数约简 的原因有以下几个 : 
1. 一个原因是数据压缩。 
数据压缩不仅通过 压缩数据使得数据 占用更少的计算机 内存和硬盘空间, 它还能给算法提速 它还能给算法提速 。 
2. 另一个原因就是可视化。通过降维进行可视化,进而更好地理解数据。

2.1数据压缩

在实际工作中,数据的维度通常是很大的(100+)。那么数据维度约简(data dimensionality reduction)是很有必要的。

举一个例子:3维降成2维:

2.2数据可视化


比如这个国家GDP的数据,数据有50维。不能画出来,但是个以用两个维度大体上表示出来。比如这样: 

横轴可以表示国家面积,国家总GDP等,纵轴可以表示人均GDP,幸福度等等。

那么怎么找出这种可以很好表示其他特征的特征呢?下面一节介绍这个算法PCA(主成分分析法)。

3维度约简-主成分分析法PCA

对于降维问题来说 目前 最流行 最常用的算法是 主成分分析法 (Principal Componet Analysis, PCA)

3.1 PCA是做什么的

PCA是寻找到一个低维的平面 对数据进行投影 ,以便 最小化投影误差的平方( 最小化每个点 与投影后的对应点之间的距离的平方值 )。

定义:想把数据从n维降到k维(k < n),就在这个空间里面找k个单位向量来表示数据,使得数据点投影到这个面上的误差最小。如下例子:2到1 和 3到2

下面介绍 线性回归与2维PCA的区别:虽然都是找一条直线去拟合但是,

  1. 计算loss的方式不同(垂直)。
  2. PCA没有标签Y(非监督)。

3.2PCA的计算过程

设有m条n维数据。将原始数据按列组成n行m列矩阵X

  • 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
  • 求出协方差矩阵
  • 求出协方差矩阵的特征值及对应的特征向量(使用svd函数)。(特征向量最能代表原数据)
  • 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵Ur。(找k个最能代表原数据的向量)
  • Y=UTXY=UTX即为降维到k维后的数据

取前k个最有代表意义的特征向量:

将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵。

(1)数据预处理 
这里写图片描述
(2)PCA算法的目的 
这里写图片描述 
这里写图片描述
(3)PCA算法 
这里写图片描述
这里写图片描述 
(4)PCA降维 
这里写图片描述 
(5)PCA算法总结 
这里写图片描述
这里写图片描述


4应用PCA

4.1PCA反向压缩

既然PCA可以将高维数据压缩到低维,那么反着使用PCA则可以将低维数据恢复到高维。

因为Y=UT×XY=UT×X,所以换算一下U×Y=XU×Y=X这里的X只是近似值。

那么当n和k相同的时候会发生什么呢?看下题:

 
1. U的维度为方阵 
2. 反着求x,为原值 
3. 保存率为100%

4.2怎么选择维度k

在 PCA 算法中 我们把n维特征变量 降维到k维特征变量 。这个数字k也被称作 主成分的数量 或者说是我们保留的主成分的数量 。 
在这个视频中 我会给你们一些参考 告诉你们 人们是怎样思考如何选择 PCA 的参数k的 。

我们先来思考两个值: 
1. 第一个是:PCA 所做的是 尽量最小化 平均平方映射误差 (Average Squared Projection Error) 。 
2. 第二个是:我还要定义一下 数据的总变差 (Total Variation) 。 它的意思是 “平均来看 我的训练样本 距离零向量多远?

我们把两个数的比值作为衡量PCA算法的有效性,比如

所以一个比较好的办法是:定义一个阈值,然后实验k,看看那个最小的k合适。计算步骤如下:

这里有个技巧:svd函数会返回一个对角矩阵S,他的元素可以很快的计算这个阈值。

4.3使用PCA的场景

主成份分析法主要有以下用途: 
1. 数据压缩 
1. 减少内存的占用、存储硬盘 
2. 加速算法的运转 
2. 数据可视化:3维2维

有些人觉的PCA也可以用来防止过拟合,但是这是不对的。应该用正则化。正则化使用y标签最小化损失函数,使用了y标签信息。而PCA只单纯的看x的分部就删除了一些特征,损失率很多信息。

总结一下PCA的用法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值