zoukankan      html  css  js  c++  java
  • 机器学习(6)- 无监督学习

    根据Andrew Ng在斯坦福的《机器学习》视频做笔记,已经通过李航《统计学习方法》获得的知识不赘述,仅列出提纲。

    1 聚类算法

    1.1 K-Means算法

    步骤

    随机初始化k个簇类中心(cluster centroids)[n维向量],然后迭代

    1. 簇分配:遍历样本,判断其距离哪个簇类中心更近,然后分配
    2. 移动簇类中心:计算每个簇的样本均值,然后更新簇类中心的位置(如果簇内没有样本,则移除该簇;如果确实需要,则随机初始化)

    直至簇类中心不再改变

    可以用于分类不佳的簇

    优化目标

    (c^{(i)}):样本(x^{(i)})所属的簇类index

    (mu_k):簇类中心k

    (mu_{c^{(i)}}):样本(x^{(i)})所属的簇类中心

    [J(c^{(i)},cdots,c^{(m)},mu_1,cdots,mu_K)=frac{1}{m}sum_{i=1}^m||x^{(i)}-mu_{c^{(i)}}||^2 ]

    随机初始化:随机选择K个训练样本

    局部最优:多次运行K-means算法(对于K值较小的聚类效果较好)

    K值的选择

    • “肘部法则”:绘制J-K曲线(实际并不好用)
    • 根据后续目的选择

    1.2 降维

    1.2.1 目标Ⅰ:数据压缩

    问题:数据冗余/特征高度相关

    1.2.2 目标Ⅱ:可视化数据

    问题:高维度数据无法绘制

    1.2.3 主成分分析PCA(Principal Component Analysis)

    试图找到一个低维的平面来最小化投射误差

    2D→1D:找到一个向量能够最小化投射误差

    nD→kD:找到k个向量能够最小化投射误差

    PCA vs. 线性回归

    PCA:最小化投射误差,不预测

    线性回归:x→y,最小化预测误差,预测结果

    数据预处理

    特征缩放/均值归一化

    计算协方差矩阵

    (Sigma=frac{1}{m}sum_{i=1}^n(x^{(i)})(x^{(i)})^T=frac{1}{m}X^TX)

    计算协方差矩阵(Sigma)的特征向量

    ([U,S,V]=svd(Sigma))

    U:n×n矩阵,即([u^{(1)} u^{(2)} u^{(3)} cdots u^{(m)}]),取前k列,得到n×k的矩阵

    (z^{(i)}=U_{reduce}^Tx^{(i)}=[u^{(1)} u^{(2)} cdots u^{(k)}]^Tx^{(i)}),是k维向量

    选择主成分的数量

    比例:(frac{frac{1}{m}sum_{i=1}^m||x^{(i)}-x_{approx}^{(i)}||^2}{frac{1}{m}sum_{i=1}^m||x^{(i)}||^2})

    分子表示原始点与投影点之间的距离之和。

    误差越小,说明降维后的数据越能完整表示降维前的数据。

    如果比例小于0.01,说明降维后的数据能保留99%的信息。

    实际应用中,选择能使误差小于0.01(99%的信息都被保留)或0.05(95%的信息都被保留)的k值。

    对于可视化数据,通常选择k=2或k=3

    压缩重现

    (x_{approx}^{(i)}=U_{reduce}z^{(i)})

    应用建议

    加速学习算法:提取输入(x^{(i)})→PCA→低维表示(z^{(i)})→新训练集

    防止过拟合:Bad!

    设计机器学习系统:只有在不用PCA但是不行的时候,才考虑。

  • 相关阅读:
    Minecraft我的世界如何联机
    关于我的博客地址jvav的由来
    ThreadLocal使用
    使用免费tk域名
    MVC的request,response流程
    TiDB原理与集群架构
    net5 自定义 中间件
    net5 Autofac支持
    net5 Autofac 支持AOP (1)
    mysql 索引优化
  • 原文地址:https://www.cnblogs.com/angelica-duhurica/p/10958085.html
Copyright © 2011-2022 走看看