美文网首页
斯坦福机器学习(8)

斯坦福机器学习(8)

作者: 西部小笼包 | 来源:发表于2020-11-26 21:56 被阅读0次

    前情回顾

    我们之前都是在介绍监督学习。也就是用了带标记的数据,每一组X都会有一组Y。接下来我们会开始介绍只有X没有Y的数据,应该怎么学习。在此之前,前面有很多知识点希望你还记得。

    1. 回归和分类,梯度下降,代价函数,偏导,正则化
    2. 神经网络,后向传播算法
    3. 学习曲线,误差分析,查全率,查准率,F1分数,大数据对机器学习意义

    监督学习算法应用分类

    n 为特征数, m 为样本数。

    n >> m;

    因为数据不足够我们训练一个复杂的非线性模型,所以选用逻辑回归或不带核函数的SVM

    m > n, m 大小适中

    使用高斯函数的支持向量机最好

    m >> n, m 很大

    这时用高斯核函数的支持向量机会非常慢。我们需要创造更多特征,然后使用逻辑回归或者不带核函数的SVM。

    上述三类情况都可以用神经网络,缺点是神经网络训练起来会慢一些。

    非监督学习

    我们需要将一系列无标签的训练数据,输入到一个算法中,算法为我们找找这个数据的内在结构给定数据。
    而聚类算法就是为我们圈出一些分开的点集的算法。

    应用场景如市场分割。在数据库中存储了许多客户的信息,将他们分成不同的客户群,这样可以对不同类型的客户分别销售产品。

    社交网络分析:例如Facebook,找到你经常跟哪些人联系,而这些人又经常给哪些人发邮件,由此找到关系密切的人群。

    还有可以用聚类算法更好的组织计算机集群,找到哪些机器更有可能给哪些通讯。优化数据中心,优化数据通信。

    K-均值算法

    这个算法是个迭代算法,我们首先随机选取K个点。然后算每个样本点到这K个点的距离。每个样本都选择到K个点最近的那个点的那个类里。随后K个点,会每个点都有一些样本数据。根据他们各自的样本数据,重新计算这个数据的中心,挪动K的位置。然后重复上述过程,因为K的位置挪动了,所以可能新复杂的样本集也会发生变化。直到迭代次数满。

    迭代1次


    image.png

    迭代3次


    image.png
    迭代10次
    image.png

    我们会发现,想要代码落地,我们就会有一个优化目标。这个目标往往就是求最小或最大。在K均值的算法里, 也有这样一个代价函数。

    image.png

    这个公式里涉及到2个值,C和U。其实最终要最小化的代价是U,UK的含义是K这个聚类负责的样本到UK这个点的距离和,U1里面的一个值就是该样本选择类1这个聚类的距离
    所以C1...CM,就是M个样本选择了哪个聚类。随后根据每个类做1次统计,等价于上面2个步骤。
    每一次迭代,这个值是应该不会上升的。

    如何选取初始的K个点

    另外算法的结果还取决于一开始聚类的散落情况。所以一般我们会随机撒多次聚类点,然后去代价最小的那次。

    如何选取K

    最核心的是,要思考我们运用K-均值这个算法去做聚类,是为什么服务的。然后选择最适合的服务这个目标的聚类数。

    1. 肘部法则


      image.png

      你会发现这种模式,它的畸变值会迅速下降,从1到2,从2到3之后,会在3的时候达到一个肘点。在此之后,畸变值就下降的非常慢,看起来就像使用3个聚类来进行聚类是正确的,这是因为那个点是曲线的肘点,畸变值下降得很快。所以选K=3,是性价比比较好的。

    但是实际还是要结合业务,比如我们是为了聚类T恤的尺寸。那么把尺寸分的过细,虽然能更好的SERVE用户,但是生产成本也会上升。所以要找到一个最合适的点又能满足用户需求,又不过与昂贵。

    降维

    下面是第二类无监督叙问题,降维。有多个原因使你想做降维。
    一般降维都会有一些目的。
    一是数据压缩,数据压缩使用较少的计算机内存或磁盘空间,但它也让我们加快我们的学习算法

    下面2张图分别是把数据降了一个维度,目标是尽力拟合住高维的数据的基础上找到低维最适合的容器。最适合表示就是数据投影上去,彼此间间隔最大。也就是投上去的方差大。


    image.png
    image.png

    另外一个显著的作用就是低维的数据,一般是2-3维可以很好的数据可视化。

    PCA,降维法

    主成分分析(PCA)是最常见的降维算法。
    根据我们上面的思路,就是找到一个方向向量,把所有数据都投射到该向量上,使得误差尽可能小。找的这个过程就是主成分分析算法。这里和线性回归略有不同。


    image.png

    上图中,左边的是线性回归的误差(垂直于横轴投影),右边则是主要成分分析的误差(垂直于红线投影)。


    image.png

    一个常见错误使用主要成分分析的情况是,将其用于减少过拟合(减少了特征的数量)。这样做非常不好,不如尝试正则化处理。原因在于主要成分分析只是近似地丢弃掉一些特征,它并不考虑任何与结果变量有关的信息,因此可能会丢失非常重要的特征。然而当我们进行正则化处理时,会考虑到结果变量,不会丢掉重要的数据。

    另一个常见的错误是,默认地将主要成分分析作为学习过程中的一部分,这虽然很多时候有效果,最好还是从所有原始特征开始,只在有必要的时候(算法运行太慢或者占用太多内存)才考虑采用主要成分分析。

    异常检测

    根据一组数组,算出数据在各特征下的高斯分布情况。如果一类数据出现的概率非常低,并且出现了,我们会把它标记为异常点。


    image.png

    异常检测主要用来识别欺骗。例如在线采集而来的有关用户的数据,一个特征向量中可能会包含如:用户多久登录一次,访问过的页面,在论坛发布的帖子数量,甚至是打字速度等。尝试根据这些特征构建一个模型,可以用这个模型来识别那些不符合该模式的用户。

    算法就是根据数据集,分别求出高斯函数里的2个参数。然后把要预测数据代入公式,看是否 < 一个误差允许范围。


    image.png

    当我们有一些异常数据的时候,我们可以使这些异常数据一半放进验证集,一半放进测试集。

    例如:我们有10000台正常引擎的数据,有20台异常引擎的数据。 我们这样分配数据:

    6000台正常引擎的数据作为训练集

    2000台正常引擎和10台异常引擎的数据作为交叉检验集

    2000台正常引擎和10台异常引擎的数据作为测试集

    具体的评价方法如下:

    根据训练集数据,我们估计特征的平均值和方差并构建函数
    对交叉检验集,我们尝试使用不同的epsilon值作为阀值,并预测数据是否异常,根据F1值或者查准率与查全率的比例来选择
    选出 epsilon后,针对测试集进行预测,计算异常检验系统的F1值

    下面是异常检测和监督学习的对比

    image.png

    在异常检测系统里,最好的特征就是有异常和没异常的数据在这个特征下有很好的区分度。比如,在检测数据中心的计算机状况的例子中,我们可以用CPU负载与网络通信量的比例作为一个新的特征,如果该值异常地大,便有可能意味着该服务器是陷入了一些问题中。

    多元高斯分布

    在一般的高斯分布模型中,我们计算 p(x)的方法是: 通过分别计算每个特征对应的几率然后将其累乘起来,在多元高斯分布模型中,我们将构建特征的协方差矩阵,用所有的特征一起来计算p(x) 。


    image.png

    粉色的圈是一般高斯分布的效果,会错误的把绿色的点标记为正常值。
    蓝色的圈是多元高斯分布做到的效果,可以让那2个圈外的绿色点为异常值。


    image.png

    上图是5个不同的模型,从左往右依次分析:

    1. 是一个一般的高斯分布模型
    2. 通过协方差矩阵,令特征1拥有较小的偏差,同时保持特征2的偏差
    3. 通过协方差矩阵,令特征2拥有较大的偏差,同时保持特征1的偏差
    4. 通过协方差矩阵,在不改变两个特征的原有偏差的基础上,增加两者之间的正相关性
    5. 通过协方差矩阵,在不改变两个特征的原有偏差的基础上,增加两者之间的负相关性


      image.png

    一般的模型和多元高斯模型的比较:

    image.png

    总结

    在监督学习领域,我们了解了几个技术。k聚类算法,PCA降维,和基于高斯函数的异常分析。
    k聚类算法的核心是最小化每组点集的中心到点集里的点的距离和。那么就要求我们先贪心点,再调整中心。多次迭代。
    为了防止局部最优,我们会以随机的方式散多次点。找到一次最好的情况。
    在选取K的时候,我们可以结合业务的目标来思考,也可以使用肘部法则。

    下面我们又学习了降维,知道降维可以节约计算的时间和空间成本,还可以很好的可视化。用主成分分析法,原则是尽可能保留多的特征信息。其实目标是最大化样本在投影空间的方差。
    我们需要对数据做归一化,和消除冗余特征的预处理。

    最后我们结合高斯函数的正态分布,对数据总归集,好对一些低概率出现的数据标注为异常,起到异常检测的目标。如何分配异常值,以及引入更好的特征。最后介绍了多元高斯的异常检测模型的优缺点。

    相关文章

      网友评论

          本文标题:斯坦福机器学习(8)

          本文链接:https://www.haomeiwen.com/subject/ckowiktx.html