IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【吴恩达机器学习】第七周课程精简笔记——无监督学习和降维 -> 正文阅读

[人工智能]【吴恩达机器学习】第七周课程精简笔记——无监督学习和降维

Unsupervised Learning

1. Clustering

(1)Unsupervised learning introduction

在这里插入图片描述
无监督学习是针对一组无标签数据集,用算法找到一些隐含在数据中的结构。图中显示出,我们可以用算法找出两簇数据。这些簇的算法也称为聚类算法。

(2)K-means algorithm

在聚类算法中,我们会给定一组未加标签的数据集。同时,我们也希望能够自动地将这些数据分成有紧密关系的子集或簇。
在这里插入图片描述
(1)先确定要将数据分为几个类别,也就是K的大小,图中示例是将数据分成两个类,K=2。
(2)选择两个数据点作为初始聚类中心,然后遍历每个绿色点距离这两个点中哪个点更近,就将绿色的点划分为哪种类别。
在这里插入图片描述
(3)将各点归属的簇划分好后,计算各个簇中心(质心),也就是各个点的均值,重新得到新的簇中心。
在这里插入图片描述
(4)得到新的簇中心,也就是新的均值后。再对所有的点进行遍历,查询各个点离这哪个聚类中心更近,就将其重新划分于该类别内。
在这里插入图片描述
(5)不断重复第(4)步和第(5)步,直至聚类中心不再有变化并且各点的所属类别也不再改变。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(6)当聚类中心不再有变化并且各点的所属类别也不再改变时,我们可以认为已聚合完成。

在这里插入图片描述
在这里插入图片描述

随 机 选 取 K 个 聚 类 中 心 μ 1 , μ 2 , . . . , μ k ∈ R n 随机选取K个聚类中心 \mu_1, \mu_2, ... , \mu_k \in \mathbb{R^n} Kμ1?,μ2?,...,μk?Rn
R e p e a t { f o r ? i = 1 ? t o ? m c ( i ) : = 1 到 K 个 聚 类 中 心 中 最 接 近 于 x i 的 聚 类 中 心 的 索 引 号 f o r ? k = 1 ? t o ? K μ k : = 第 k 个 聚 类 所 分 配 点 的 均 值 ( 聚 类 中 心 ) } Repeat \{ \\ \quad for \ i = 1 \ to \ m \\ \quad \quad c^{(i)} := 1到K个聚类中心中最接近于x^{i}的聚类中心的索引号 \\ \quad for \ k = 1 \ to \ K \\ \quad \quad \mu_k := 第k个聚类所分配点的均值 (聚类中心)\\ \} Repeat{for?i=1?to?mc(i):=1Kxifor?k=1?to?Kμk?:=k}

其中计算点与聚类中心的距离常用方式是 min ? k ∣ ∣ x ( i ) ? μ k ∣ ∣ 2 \min \limits_{k} || x^{(i)} - \mu_k ||^2 kmin?x(i)?μk?2,计算聚类中心的常用方式是求平均值。

如果出现一个聚类中心,该聚类中没有其余点。那么常用的方法是将该聚类中心移除,不过最后得到的会是K-1个聚类,而不是K个聚类。如果你一定要得到K个聚类的话,那么就将这个没有点的聚类中心删除,然后重新随机选取一个点作为聚类中心,再重复之前的方法是划分聚类即可。
在这里插入图片描述
K-means算法对难以划分的聚类也可以进行划分,左侧显然很容易就划分出来,右侧使用K-means也可以划分出类似的三个簇类。

(3)Optimization objective(优化目标)

在这里插入图片描述
图中的代价函数称为失真函数,也称为K均值算法的失真。
在这里插入图片描述
R e a p a t Reapat Reapat 中分为两步:
一步是聚类分布计算,通过代价函数,更新 c ( i ) c^{(i)} c(i),得到每个数据点归属于哪个聚类。
另一步是移动聚类中心,通过另一个待机函数,更新 μ i \mu_i μi?,得到新的聚类中心。

(4)Random initialization

我们将学习到如何初始化K-means算法,如何使算法避开局部最优
在这里插入图片描述
首先应该选取的k值要小于总样本数,然后再数据中随机选取k个训练样本作为初始化聚类中心。从第一和第二幅图中我们可以看到,选取不同的聚类中心,可能将会得到不同的结果。具体而言,K-means算法可能会落在局部最优解中。
在这里插入图片描述
右上角的图中是K-means算法得到的全局最优解,找到了非常好的聚类结果。

右下角两幅图中,实际上是K-means算法落在了局部最优解当中,因此不能很好地最小化失真函数(distortion function)J。

如果你想要K-means算法避免落到局部最优解中,一种方式是尝试多次随机初始化,不是期望初始化一次就找到了全局最优解,而是通过初始化K-means算法多次并运行K-means算法多次,以此来保证我们最终能得到一个尽可能好的局部或全局最优解。
在这里插入图片描述
一般是要求K-mean算法运行到50-1000次。运行指定次数n次后,你会得到n个不同的结果,从中选取一个代价最小的作为最终结果,也就是失真值最小。

如果你用的K值足够小,比如2-10,那么通过多次随机初始化K-mean算法,就能够找到一个较好的局部最优解,保证你能找到更好的聚类。如果K值足够大,比如成百上千个聚类,那么多次随机初始化K-mean算法,对结果并不会有太大的改善。

(5)Choosing the number of clusters

目前为止没有找到非常好的选择聚类数量的方法,常用的还是观察可视化的图、观察聚类算法的输出等等。
在这里插入图片描述
相同的一组数据分布,有的人可能会认为有四个聚类。
在这里插入图片描述
有的人却可能认为有两个聚类,真实的聚类可能相当地模棱两可,并不一定只有唯一一个确定的答案。这也是非监督学习的一个特性,因为数据没有标签,所以并不总是有一个明确的答案。正是因为这个原因,用一个自动化的算法来选择聚类数量是一个很困难的事情。
在这里插入图片描述
一个选取聚类数量的方式是“肘部法则”。左边这幅图中,可以看到随着K的选取逐渐增大,失真函数的值会逐渐减小。在2-3之间且靠近3的位置有一个拐点,在到达拐点之前,畸形函数会大幅度的减小,而在拐点之后,畸形函数的减小幅度却变的很小。我们便让K=3,这个拐点类似于人的“肘部”,这种选取方式也因此叫肘部法则。

肘部法则并不常用,因为在实际运用过程中,可能得到右边这幅图,较为均匀的曲线形式,从而导致不能很明确的找到一个明显“肘部”。
在这里插入图片描述

因为K-means算法通常是用来进行一些数据的处理,来为后续的选择提供参考。比如用于市场分割,用于选择生产不同产品的数量。因此,还有一种选择K的方式是看让K值等于多少能更好地应用于后续的目的。

总结一下K的选取还是通过人的手动输入、根据经验确定或者肘部法则选取。主要的核心还是要清楚,我们使用K-menas算法处理数据的的最终目的是什么,如何能更好地服务与后续的目的。

Dimensionality Reduction(降维)

1. Motivation

(1)Motivation I:Data Compression(数据压缩)

数据压缩不仅能压缩数据减少存储空间,还能够对学习算法进行加速。

如果你有成千上万的特征,你就可能迷失在到底应该用哪些特征。当你从不同的工程小组哪里获得特征后,将这些特征汇集起来后可能会出现高度冗余特征的现象。
在这里插入图片描述
通过降维的方式,可以减少冗余特征。例如,将n+1维的数据映射到n维的数据中。将投影后得到的数据,来近似表示原始的数据集。图中是将二维数据,投影到一维空间中一条直线上,我们将此一维数据来近似表示原始的数据集,这样就能对内存的需求减少一半,同时可以让我们的学习算法更快。
在这里插入图片描述
在实际中,我们可能需要将1000维的数据压缩成100维的数据。图中是将三维空间中的数据,投影到一个二维平面当中。对于这个二维平面,我们需要 z 1 z_1 z1? z 2 z_2 z2? 两个轴来指定这个平面中点的位置。

(2)Motivation II:Data Visualization

在这里插入图片描述
这里有50维的数据来描述不同的国家。
在这里插入图片描述
我们的目标是把这些国家在一个二维平面上表示出来,用两个特征 z 1 z_1 z1? z 2 z_2 z2? 来描述一个国家。因此,我们需要将50维降到2维。
在这里插入图片描述
当你这样做时,你会发现z通常并不是一个具有实际物理意义的特征。将这些点可视化到二维平面上,每个点都代表一个国家,可以发现这些点随着两个坐标轴的变化而带的不同的变化。会存在与某些物理意义相关的联系,例如GDP、国民人均收入、环境等等。

2. Principal Component Analysis(主成分分析)

(1)formulation(公式描述)

对于降维问题来说,现在最常用的一种方式是主成分分析方法PCA。
在这里插入图片描述
假设我们选取二维平面来降维,我们将二维平面上的点投影到这条红色直线上,绿色点是投影点。我们会发现每个原始点到它们投影直线上的点的距离是非常短的。PCA的做法是它会找到一个低维平面(本例是直线),然后将数据投影在上面,蓝色线段代表投影距离。目标是让蓝色线段的长度的平方最小,这些蓝色线段的长度有时也称为投影误差。

在使用PCA之前,常规的做法是先进行均值归一化(mean normalization)和特征缩放(feature scaling)使得特征 x 1 x_1 x1? x 2 x_2 x2? 的均值为0并且其数值在可比较的范围之内。

如果我们有n维数据想要投影到k维平面上,我们需要将数据投影到k个方向的向量构成的线性子空间当中并且最小化投影误差。

:同一条直线上,不同方向的向量不影响最终的投影误差。
在这里插入图片描述

PCA并不是线性回归,即使它们看起来有一些相似,但它们是截然不同的算法。

在线性回归中,我们要拟合出一条直线,让点和直线之间的平方误差最小。因此,我们的策略是让点向坐标轴 x 1 x_1 x1? 垂直方向到红色直线的距离最小,也就是让 y ? ( w T x + b ) y-(w^Tx+b) y?(wTx+b) 误差最小。此外,线性回归的目的是用 x x x 的线性组合去预测 y y y,因此 x x x y y y 将会被作为不同的含义对待。

在PCA中,我们要拟合出一条直线,让点和直线之间的投影误差平方最小。因此,我们的策略是让点到直线的正交距离最短,也就是让点到红色直线的距离最短。此外,PCA的目的是实现降维,数据中没有 y y y 这个概念,只有 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1?,x2?,...,xn?,每个坐标轴都被赋予相同的地位来对待。
在这里插入图片描述

(2)PCA algorithm

在构建PCA算法之前,先对数据进行预处理
在这里插入图片描述
对于训练样本 x x x 进行特征缩放或均值归一化,让 x j ( i ) = x j ( i ) ? μ j s j x_j^{(i)} = \frac{x_j^{(i)}-\mu_j}{s_j} xj(i)?=sj?xj(i)??μj?? ,其中 x j ( i ) ? μ j x_j^{(i)}-\mu_j xj(i)??μj? 是为了让其分子的均值为0,而 s j s_j sj? 是训练集中的某一测量值,比如最大值减最小值之差或者是训练集的方差。
在这里插入图片描述
构建PCA算法时,我们的目标是找到一个更低维度的平面,来让点到该平面的平方距离和最小。我们要做的就是让 x ( i ) ∈ R 2 x^{(i)} \in \mathbb{R^2} x(i)R2 降维成 z ( i ) ∈ R 2 z^{(i)} \in \mathbb{R^2} z(i)R2。因此,PCA算法是要计算出向量 u ( i ) u^{(i)} u(i) 和向量 z i z^{i} zi

PCA算法中,我们想把n维数据降到k维数据
在这里插入图片描述
我们首先是要计算协方差矩阵,这个矩阵用大写的sigma表示,尽管它和求和符合相同,但它并代表求和的意思,而是仅用来表示一个矩阵。(协方差矩阵总是满足正定矩阵)。

svd代表奇异值分解(singular value decomposition),这是一个更加高级的分级算法,这也是一个很高级的线性代数的应用。对我们来说主要有用的是包含特征向量的矩阵U,他会是一个 nxn 的矩阵,含有主成分。我们要做的是取前k个向量。而矩阵S是含有特征值的 nxn 的对角矩阵。
在这里插入图片描述
z矩阵等于n×k的矩阵再乘上nx1的矩阵
在这里插入图片描述

总而言之,这就是PCA算法。均值归一化保证每一个特征都是均值为0的任意特征缩放。预处理数据完之后,我们计算载体矩阵sigma。然后,我们使用svd函数得到U,S,V,我们可以得到将维度矩阵U的前k列,最后得到了一个从特征向量x到降维的表示z,注意这里 x 0 x_0 x0? 不能为常数给它赋值1。

(3)Choosing the number of principal components(主成分数量选择)

在这里插入图片描述

在PCA算法中,我们让n维降到了k维,这个k也被称为主成分的数量。

  • 投影的平方误差: 1 m ∑ i = 1 m ∣ ∣ x ( i ) ? x a p p r o x ( i ) ∣ ∣ 2 \frac{1}{m} \sum^m_{i=1} || x^{(i)} - x^{(i)}_{approx} ||^2 m1?i=1m?x(i)?xapprox(i)?2
  • 数据的总方差: 1 m ∑ i = 1 m ∣ ∣ x ( i ) ∣ ∣ 2 \frac{1}{m} \sum^m_{i=1} || x^{(i)} ||^2 m1?i=1m?x(i)2,也相当于是数据到原点的距离平方
  • 一种常用的选择k的方式是选择一个较小的k,使得这两者之间的比值小于0.01,让投影平方误差除以数据的总方差: 1 m ∑ i = 1 m ∣ ∣ x ( i ) ? x a p p r o x ( i ) ∣ ∣ 2 1 m ∑ i = 1 m ∣ ∣ x ( i ) ∣ ∣ 2 ≤ 0.01 \frac{\frac{1}{m} \sum^m_{i=1} || x^{(i)} - x^{(i)}_{approx} ||^2}{\frac{1}{m} \sum^m_{i=1} || x^{(i)} ||^2} ≤ 0.01 m1?i=1m?x(i)2m1?i=1m?x(i)?xapprox(i)?2?0.01,我们要做的是比如说让这个比率小于0.01,也就是让99%的方差性被保留。

在这里插入图片描述
PCA算法:
Step 1:选择k=1
Step 2:计算 U r e d u c e , z ( m ) , x a p p r o x ( m ) U_{reduce}, z^{(m)}, x^{(m)}_{approx} Ureduce?,z(m),xapprox(m)?
Step 3:检查方差保留公式中是否满足规定的数值,如果不满足,则重新选择一个K再计算,直至到满足位置。

通过svd函数你可以获得一个对角矩阵s,通过计算 1 ? ∑ i = 1 k s i i ∑ i = 1 n s i i 1-\frac{\sum^k_{i=1}s_{ii}}{\sum^n_{i=1}s_{ii}} 1?i=1n?sii?i=1k?sii?? 可得到上面相同的检查方差保留率。
在这里插入图片描述
所以可以通过检测s的值来判断是否可以选择此k值

(4)Reconstruction from compressed representation(压缩重现)

在这里插入图片描述
压缩重现要做的就是将压缩后的数据,再重新还原回近似于压缩前的原数据,回到未压缩时的数据表示。

目标是将 z ∈ R z \in \mathbb{R} zR 还原回 x ∈ R 2 x \in \mathbb{R^2} xR2 ,也就是 x a p p r o x ( i ) = U r e d u c e ? z ( i ) x^{(i)}_{approx} = U_{reduce}·z^{(i)} xapprox(i)?=Ureduce??z(i) (因为 U r e d u c e U_{reduce} Ureduce? 具有正定性,因此为正交矩阵 U T U = U ? 1 U = E U^TU=U^{-1}U=E UTU=U?1U=E),我们把这一过程叫做原始数据的重构。

(5)Advice for applying PCA

我们常常使用PCA对监督学习算法进行加速。
在这里插入图片描述
我们首先可以检查已被标记的训练集并抽取它们用作输入数据,其中仅抽取 x x x 而不抽取 y y y,这样子就构建出了一组无标签的数据集。然后,我们使用PCA算法得到一组低维数据。这样,我们就得到了一组新的数据集。

注意:PCA算法做的是一个从 x x x z z z 的映射,这个映射只能通过在训练集上运行PCA来定义。具体而言,PCA学习的这个映射所做的就是计算一系列参数,然后进行特征缩放和均值归一化,它还计算矩阵 U r e d u c e U_{reduce} Ureduce?我们应该只在训练集上拟合这些数据,而不是在交叉验证集或测试集上。 当我们找到一些合适的参数后,我们可以把这个定义的从 x x x z z z 的映射用在交叉验证集或者测试集的其他样本。

在许多问题上,我们可以减少较多维度的数据,比如1/5或者1/0,同时仍能保留大部分的方差并且几乎不影响性能(比如分类准确度等等)。使用这样子较低维度的数据,可以加速我们的学习算法。
在这里插入图片描述
总结一下,PCA有两个方面的应用。一个是压缩,对数据集进行特征压缩后,不仅可以减少我们使用的存储空间容量,还可以加速我们的学习算法。另一个是可视化,对于可视化的应用,我们通常选择k=2或者3。
在这里插入图片描述

对于过拟合现象,不建议使用PCA来进行解决。尽管在使用PCA后,可能对过拟合现象有一个良好的改善,但是使正则化是解决过拟合现象的一种更好的方法。

在使用PCA时,由于仅使用一组无标签数据 x x x,没有考虑 y y y 的取值,同时还对数据进行了压缩,这样做可能会损失一部分有用信息。尽管设置方差保留率为99%或95%可能会有助于改善拟合现象,但事实证明使用正则化时,得到的效果和方差保留率为95%时的效果近乎一样好。

因此,我们建议使用正则化去解决过拟合现象。因为正则化考虑了 y y y 的取值,并且不太可能会损失一些有用的信息。

在这里插入图片描述

最后,不应该滥用PCA算法。在使用PCA之前,建议先不用PCA而是使用原始数据集去运行算法,当这么直接做不能达到目的时才应开始去考虑使用PCA,来压缩特征,减少使用的内存空间或存储空间,加速训练速度。

Exercise 7:支持向量机SVM

【吴恩达机器学习】Week8 编程作业ex7——K-means聚类和PCA

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:28:33  更:2022-03-08 22:31:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:59:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码