吴恩达机器学习第14-15章

吴恩达机器学习第14-15章

第十四章

14-1 目标I:数据压缩

数据压缩能够让我们的算法提升速度。
首先举了一个厘米和英尺的例子,因为厘米本身可以转化为英尺,所以可以将数据进行压缩。
请添加图片描述
再举一个例子,是将三维降到两维。将点全部投影到平面上,然后重新用Z1和Z2坐标来表示屏幕向量。
请添加图片描述

14-2 目标II: 可视化

在做对GDP的调查中,数据特征总共有50维,而经过处理,将数据特征降低要2维。
请添加图片描述在这里插入图片描述

14-3 主成分分析(PCA)问题规划1

我们用直线拟合数据时,可以观察数据集到直线上投影的距离。而PCA所做的,就是用一个投影平面对数据进行投影,使能最小化这个距离。另外在应用PCA之前,常规的做法是先进行均值归一化和特征规范化使得特征的均值为0,并且其数值在可比较的范围内。
请添加图片描述
如果用这条品红色的直线去进行投影,那么所造成的误差是非常糟糕的。
请添加图片描述

14-4 主成分分析(PCA)规划问题2

在使用PCA处理时,要先进行数据预处理。
在对数据进行压缩之前,我们需要对计算协方差。而协方差矩阵式有对应的函数库。具体的使用可以去查看相关的文档。这样就能得到我们想要的投影矩阵的方向了。
总之PCA算法,就是进行均值归一化后,为确保每一个特征的均值为0的任选特征缩放。预处理完以后,这个协方差矩阵Sigma实际上有一个非常好的向量化实现。
请添加图片描述

14-5 压缩重现

前几节讲了矩阵的压缩,那么怎么从压缩后的矩阵回到原来的矩阵呢?
比如一个二维的数据,我们投影到了一维上,那么给定一个z我们怎么回到选在的数据呢?那么有一个公式为Ureduce*Z=Xapprox就可以得到一个近似的值。
请添加图片描述

14-6 应用PCA的建议

加入你有一个监督学习,注意这个监督学习问题有X和标签Y,X是一个高纬度的向量。在计算机视觉上,如果你有100X100的图片,那么就会有10000个像素点。像这样的高纬度数据,运行学习算法时将变得非常慢。如果你要用10000维的向量特征进行logistic回归或者输入神经网络或支持向量机或其他操作 。因为数据量太大将使得你的算法学习运行非常慢。幸运的是,PCA算法可以减少数据的维度。从而使得算法运行更加高效。
我们可以从数据集中抽取出X,把Y临时放到一边。接着我们使用PCA算法讲数据用低维表示,这要时间就会快速降低。那么新的数据集就诞生了。请添加图片描述
有一种PCA的错误用法,就是用PCA去防止过拟合。但这是PCA非常糟糕的一种应用。如果要解决过拟合问题,我们之前讨论了一种不错的方法就是使用正则化。

第十五章

15-1 异常检测

什么是异常检测呢?这是一个运用到无监督学习的一个算法。我们举一个例子-飞机引擎。特征变量有很多,将数据集画在图像上,所谓的异常检测,我们就是找出哪些引擎是有异常问题的,需要进一步检修。如果新的数据落在数据的集中区,我们就可以认为它是正常的,如果落在很远的位置。我们就认为你是异常的,并需要做出检修。
请添加图片描述
当我们建立模型以后,如果P(Xtest)<阈值那么就认为是异常的,如果P(Xtest)>=阈值就认为是正常的
请添加图片描述
异常检测算法也可以应用在下面这些案例中。
欺诈检测。根据建立的模型p(x),你可以用它来发现你网站上的行为奇怪的用户,如果p(x)小于阈值,接下来你可以拿这些用户档案做进一步筛选或者要求这些用户验证他们的身份。从而让你的网站防御异常行为或欺诈行为。
另一个例子是数据中心的计算机监控。我们可以为每台计算机计算特征变量(如内存消耗,硬盘访问量,CPU负载或者一些更加复杂的特征。),那么在正常情况下,你可以为计算机设计模型,如果有一个计算机的模型概率很低,那么就可以让系统管理员查看其工作状况。
请添加图片描述

15-2 高斯分布

高斯分布也称为正态分布。
如果一个x符合高斯分布,那么它拥有两个参数μ和σ。我们可以绘制出大致图像
请添加图片描述
当μ=0,σ=1,就以0为中心,因为μ等于0,而宽度就是σ。
当μ=0,σ=0.5,这时候的高斯分布就会以0为中点,但宽度小了很多。
如果σ=2,则这个宽度将变宽,同时高度会下降。
而当μ=3,σ=0.5,则这个高斯分布会平移,以3为中心。
请添加图片描述
我们来讨论参数估计问题。什么是参数估计问题呢?假设我们有一个数据集,其中有m个样本,从X1到Xm,他们都是实数。我们假设这些样本都是来自高斯分布的总体。但是我们并不知道μ和σ的值是多少,我们就希望能找到μ和σ的值。而估计μ的方法是对所有样本求均值。这样就找到高斯分布的中心。而求σ的平法就是对所有样本减去均值的平方求和在求均值。
请添加图片描述

15-3 算法

这节我们来一起构建一个异常检测算法。假设我们有一个共有m个样本的无标签训练集。训练集的每一个样本都是一个n维的特征量。我们要用数据集建立一个概率模型P(x),我们要试图解决出哪些特征量出现的概率比较高。哪些特征量出现的概率比较低。因此X就是一个向量。我们假定x是离散的,而且它服从高斯正态分布,x1有期望μ1和方差σ1的平方,x2有期望μ2和方差σ2的平方…xn有期望μn和方差σn的平方。我们就要建立模型P(x)=P(x1,μ1,σ1平方)P(x2,μ2,σ2平方)P(x3,μ3,σ3平方)…P(xn,μn,σn平方)。在实践中,结果表明,我们将介绍这个算法无论这些特征量是否近乎独立,并且即使这个独立假设不成立,这个算法也能正常运行。
请添加图片描述
整理一下异常检测算法。
第一步,选择特征量,可以帮助我们指出那些反常的样本。
第二步,给出训练集的各个特征量所拟合的的高斯正态参数μn和σn。
第三步,做出概率模型。检测是否有异常
请添加图片描述
我们可以来看看下面这个例子。μ1=5,σ1=2.μ2=3,σ2=1。可以绘制出P(x)=P(x1,μ1,σ1平方)*P(x2,μ2,σ2平方)的图像。图像在该点的高度就等于P(x)的值。我们令阈值等于0.02。
请添加图片描述

15-4 开发评估异常检测系统

为了开发评估异常检测的算法,用飞机引擎的例子来讲,令样本都是带标签的数据,假设有10000个好的引擎,20个异常的飞机引擎,我们用6000个正常的飞机引擎去拟合概率模型p(x),交叉验证集用2000和正常的飞机引擎和10个异常的飞机引擎。测试集用2000个正常的飞机引擎和10个异常的飞机引擎。有一种不好的做法是交叉验证集和测试集使用的是同一个数据集。
在这里插入图片描述
首先我们用训练集去拟合概率模型P(x ),然后用交叉验证集和测试集去预测y值。我们可以用真阳性,真阴性,假阳性,假阴性的比例来评价,或者用准确率和召回率来评价,也可以用代价函数来评价。通过这些方法来评估我们的异常检测算法。在异常检测中有阈值ε,这个ε是由我们来决定的。
请添加图片描述

15-5 异常检测VS监督学习

在上节用我们用带标签的数据去做异常检测,那么我们为什么不直接用监督学习算法呢, 用逻辑回归或者神经网络算法来尝试直接学习我们的带标签数据,来预测y等于1还是0。
如果我们的数据中正常样本数量很小,异常样本数量很多,这时候我们通常用异常检测算法。
而又很大的正样本和负样本时,我们通常用监督学习。
对于异常检测来说,通常有些应用会有不同种类下的异常,例如航天发动机,有很多途径会导致发动机异常。这种情况下,我们有很少数量的正样本,那么我们就很难去学习异常是什么,这时候我们可以用负样本去进行高斯建模,而不是用正样本。
请添加图片描述
对于欺诈行为,发动机,计算机的检测等等,可以用异常检测算法。
对于垃圾邮件分类,天气预测,癌症的区分,这些可以用监督学习。
在这里插入图片描述

15-6 选择要使用的特征

在我们的异常检测算法中,我们所要做的一件事情是使用高斯分布来对特征建模,假设其函数P(xi,μi,σi平方)。 如果我们的特征比较接近去高斯分布的话,我们是很乐意把这个特征假如模型中。如果有特征不是高斯分布的话,我们会对特征进行转化,使它看上去更接近高斯分布。讲特征转化为高斯分布的话能使算法运行得更好。
在这里插入图片描述
还有一个问题,我们是怎么得到异常检测算法的特征。我通常用的办法是通过一个误差分析步骤。我们先完整的训练出一个算法,然后再一组交叉验证集上运行算法,然后找出那些预测出错的样本,并看看我们是否找到一些其它的特征来帮助学习算法,让那些在交叉验证集中判断出错的样本表现得更好。
在异常检测中我们希望P(x)在正常样本中大一些,在异常样本中小一些。但大众多情况来说,无论是正常样本还是异常样本,P(X)的值都比较大。
假如有一个特征变量符合高斯分布,但有一个异常样本淹没在正常样本中,而且它的概率很高,所以我们的异常检测算法没有把它标记为异常。那这个样本能不能启示我们想出一个新的特征X2,来帮助算法找到异常样本。
在这里插入图片描述
在数据中心中检测计算机,其中有四个特征。现在我怀疑其中一台计算机的CPU负载升高,但网络流量没有升高。这种情况下,我可以建立一个新特征X5=CPU Load/network traffic。也可以创建X6=CPU Load的平方/network traffic去捕捉异常样本。
请添加图片描述

15-7 多变量高斯分布

这一节和下一节,我们将一起讨论目前位置学习的异常检测算法的一种可能的延伸,这个延申会用到多元高斯分布。它有一些优势,也有一些劣势。
还是用数据中心的计算机的例子。有两个特征,一个是CPU Load,还有一个是内存使用量,我们将两个特征变量进行高斯拟合。假如有一个异常样本,距离所有样本都很远。但单独看这个样本的两个特征分别的高斯分布,无法检测异常,而且在二维中,也没有检测出异常。为了解决这个问题
请添加图片描述
为了解决这个问题。我们要开发一种改良版的异常检测算法,即多元高斯分布或者叫多元正态分布。假如有数据集X,我们不再为p(x1)和p(x2)单独建模,而是要建立整体的p(x)模型。多元高斯分布的参数是μ和Σ(nn的协方差矩阵)。
P(x,μ,Σ)公式:请添加图片描述
请添加图片描述
我们来看三个例子的图像,一个是μ是一个2
1的0矩阵,Σ是一个22的单位矩阵,另一个是μ是一个21的0矩阵,Σ是一个22的对角线上的值为0.6的矩阵,另一个是μ是一个21的0矩阵,Σ是一个2*2的对角线上的值为2的矩阵。
请添加图片描述
可以改变他们的值,看看图像的变化情况。
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

15-8 使用多变量高斯分布的异常检测

上一节我们谈到了多元高斯分布,并且看到了一些通过改变参数μ和Σ对这些分布进行建模的例子。这节我们将采用这些思想,并应用于开发一个不同的异常检测算法。
我们有数据集X,X是n维向量,而且每个数据服从多元高斯分布。根据公式去求出μ和Σ
请添加图片描述
用算出来的μ和Σ去拟合概率函数P(x),当我们有一个新样本即测试样本的时候,我们需要将新样本带入P(x)中去计算,如果P(x)很小的话,就认为是异常样本。
请添加图片描述
有必要说一下多元高斯模型和原模型的关系。
P(x)=P(x1;μ1;σ1平方)*P(x2;μ2;σ2平方)**…*P(xn;μn;σn平方)
在这里插入图片描述
原始的高斯模型会用的较多,而多元高斯模型用的较少。你想用组合特征值捕捉异常时,需要根据特征值创建一个新的特征值。而多元高斯模型会自动捕捉到不同特征值之间的关系。原始高斯模型的计算成本较低,能实应巨大规模的n,相比之下,多元高斯模型的运算成本较高。另外即使你有一定相关性的训练集也能顺利运行原始高斯模型。对于多元高斯模型,这个算法有一些数学性质,必须保证样本数量大于特征值的数量而且不能有冗余的数据,这些都会导致Σ不可逆。
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值