zoukankan      html  css  js  c++  java
  • 无监督学习方法

    学习资料:吴恩达机器学习课程

    一. K-means算法

    1. 算法思想

    • K-均值算法是无监督学习中聚类算法中的一个

    截屏2020-01-28下午4.40.12

    1. 初始化k个聚类中心
    2. 循环:
      • 将每个训练样本归类到最近的聚类中心组成一个个聚类
      • 移动聚类中心到本身聚类的中心(平均值)

    2. 目标优化

    截屏2020-01-28下午8.28.18

    3. 随机初始化

    K-均值的一个问题在于,它有可能会停留在一个局部最小值处,而这取决于初始化的情况。

    • 解决方法:通常需要多次运行(50-1000次)K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行K-均值的结果,选择代价函数最小的结果。
      初始化时随机选择训练样本作为聚类中心

    • 这种方法在较小的时候(K)较小时(2-10)还是可行的,但是(K)如果较大,就没有必要多次随机初始化了。

    4. 选择聚类的数目K

    • 根据“肘部法则”
    • 根据聚类算法分类后的目的来决定数量

    二. 主成分分析PCA

    1. Dimensionality reduction降维

    • 主成分分析是降维的一种方法,将高纬数据压缩成较低维度数据。比如将两个维度的压缩成一个维度时:就是指将两个特征压缩成一个新的特征。
    • 降纬的作用:
      • 压缩数据,减少数据存储空间;
      • 加快学习算法速度;
      • 可视化数据:降到2D、3D可以可视化数据。

    2. PCA步骤

    首先进行数据预处理,均值标准化

    [frac{X^{[i]}-x_{平均值}}{s_{标准差}/x_{max}-x_{min}} ]

    n维度(X^{[i]}) 降到k维度$Z^{[i]} $,PCA算法找到k维度:能够最小化投影距离的平方

    SVD 奇异值分解

    截屏2020-01-28下午9.07.26

    截屏2020-01-28下午9.04.12

    3. 压缩重构

    压缩后的维度K重新变回之前的维度n

    之前是 (Z = U_{reduce} ^T*X) 矩阵维度分析: kn * n1 = k*1

    现在可以用 (X = U_{reduce}*Z) 变回之前的维度 矩阵维度分析: nk * k1 = n*1

    4. 选择K的大小

    使得平均最小投影距离/平均距离原点的距离<=0.01,即保留99%方差,降维后的数据更接近原数据。

    截屏2020-01-28下午9.31.51

    截屏2020-01-28下午9.32.18

    仅仅通过SVD中的S就可以得到k的最优值

    5. PCA的误用

    • 虽然PCA可以降维,但是PCA不是避免过拟合的方法,过拟合最好还是用正则化。
    • 在刚开始进行建立一个学习模型时,不要把PCA作为刚开始就做的步骤。而是要先用$X^{[i]} $ ,只有当确实需要用到时才去用PCA。

    三. 异常检测Anomaly detection

    • 主要用在非监督学习,但是也可以用在监督学习里。

    1. 高斯分布异常检测

    参数估计:一些参数分布满足高斯分布的时候,可以求出这些参数的平均值和方差用来表示这些参数的分布情况

    1. 选择需要进行异常检测的特征
    2. 求出这些特征对应高斯分布的平均值和方差
    3. 所有这些特征的高斯分布累积如果很小(小于一个阈值),就判定为异常

    截屏2020-01-29上午8.35.58

    2. Anomaly detection vs supervised learning

    • 异常检测大多用于非监督学习。因为无监督学习中特征没有label,所以可以根据这些特征的分布情况来建立一个模型,当有新的样本进来时检测样本的这些特征是否符合模型,不符合则代表异常

    • 异常检测也可以用于监督学习。这时候异常检测与监督学习算法类似,异常样本有对应的label=0,正常样本对应的label=1。两种算法都是建立模型来区分异常和正常样本。

    • 两种算法的应用情况:

      • 当异常样本很少时,用异常检测算法:对大量正常样本建立模型,测试样本符合模型则表示正常,不符合则表示异常。
      • 当异常样本数量较多时,则可以用监督学习算法:同时对两种样本建立分类模型。

    3. 如何选择特征

    对于一个样本(无论正常还是异常),有许多特征可以选择来判断是否一个样本是异常。例如:对于电脑是否损坏,有大量正常电脑和很少的异常电脑样本。我们可以选择的特征有CPU load,network traffc等。如下图:

    截屏2020-01-29上午9.17.16

    那么如何选择合适的特征:

    1. 选择的特征应该符合高斯分布,如果不符合对特征进行一些处理转换使其大致符合高斯分布。(比如对于特征:(x)可以用(x*0.5)(log(x))试一试)
    2. 根据误差分析建立设计特征,比如(x_1/x_2)(x_1^2/x_3)

    4. 多元高斯分布

    截屏2020-01-29上午9.36.18

    截屏2020-01-29上午9.38.15

    x个特征的高斯分布直接累积有个缺点是不能反映2个特征之间相互关系的影响。

    多元高斯分布降特征合在一起建立一个高斯分布模型

    5. Original model vs Multivariate Gaussian

    截屏2020-01-29上午9.44.56

    • 原始高斯分布和多元高斯分布最大的区别是是否捕捉相关性的特征

    • 两种分布在可视化图中的区别是:原始高斯分布得到的椭圆是轴对齐的(轴与x轴或y轴平行),而多元高斯分布椭圆轴可以是任意方向。所以原始高斯分布是多元的一种特殊情况。

    • 多元高斯分布优点:可以自动寻找特征间的关系,其实原始高斯分布中手动设计特征就是在找特征之间的关系

    • 多元高斯分布缺点:需要训练样本远大于特征值,而且计算要求更高。反之原始高斯分布不需要

  • 相关阅读:
    LeetCode-Search a 2D Matrix
    Cocos2d-x 学习(1)—— 通过Cocos Studio创建第一个Demo
    SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】
    poj 2126 Factoring a Polynomial 数学多项式分解
    [每天读书半小时] 2015-6-8 设计模式
    LeetCode_Path Sum II
    MySql截取DateTime字段的日期值
    Fiddler2 中文手册
    fiddler2抓包工具使用图文教程
    Fiddler2 抓取手机APP数据包
  • 原文地址:https://www.cnblogs.com/z1xiang/p/12675650.html
Copyright © 2011-2022 走看看