Udacity课程机器学习方向笔记(3) 非监督学习

课程3:非监督学习

lesson 1 

聚类

  • 在大多数情况下,从现实世界获取的数据并不附有标记,在这种情况下,机器学习要做些什么,就要使用非监督学习。

  • 聚类算法:K-均值

K-均值分为两步:1.分配 2.优化(移动自由聚类中心,使自由聚类中心到点的二次距离降到最小)

可在此处亲自尝试 K-均值聚类:http://www.naftaliharris.com/blog/visualizing-k-means-clustering/

  K-均值既是爬山算法,非常依赖初始聚类中心所处的位置。

 

 

 

 

 

 

lesson 2 

聚类迷你项目

电影评分项目

项目大部分数据预处理过程都隐藏在了辅助函数中,并重点研究聚类概念。在完成此 notebook 后,建议快速浏览下 helper.py,了解这些辅助函数是如何实现的。

 

我们可以将数据点拆分为任何数量的聚类。对于此数据集来说,正确的聚类数量是多少?

可以通过多种方式选择聚类 k。我们将研究一种简单的方式,叫做“肘部方法”。肘部方法会绘制 k 的上升值与使用该 k 值计算的总误差分布情况。

如何计算总误差? 一种方法是计算平方误差。假设我们要计算 k=2 时的误差。有两个聚类,每个聚类有一个“图心”点。对于数据集中的每个点,我们将其坐标减去所属聚类的图心。然后将差值结果取平方(以便消除负值),并对结果求和。这样就可以获得每个点的误差值。如果将这些误差值求和,就会获得 k=2 时所有点的总误差。

现在的一个任务是对每个 k(介于 1 到数据集中的元素数量之间)执行相同的操作。

lesson 3 

层次聚类法与密度聚类

 

  • 层次聚类:了解类之间的关系,先假设每个点是一个类,然后由此建立其他的类。

单连接聚类法(scikit-learn中没有这个,是查看与聚类最近的点);scikit-learn中有凝聚聚类法(包含全连接聚类,衡量距离的方法是两类中最远的两点之间的距离,与单连接聚类法相反,其中离差平方和法确实会最小化在每个合并步骤中的方差。)

优点:得到的层次表达信息丰富,帮我们把数据集的聚类结构视觉化,特别是当数据内部有层次关系时;

缺点:对噪音和离群值很敏感,要提前清理数据集中的噪音和离群值;数据计算慢 

相关文献: Using Hierarchical Clustering of Secreted Protein Families to Classify and Rank Candidate Effectors of Rust Fungi

 

数据集标准化:在数据集中,当某列值比其他值小,它的方差对聚类处理流程会有影响(因为聚类是基于距离),对数据可进行标准化,使维度都位于0到1之间,以便市每列数据有相等的权重,方法是让每列减去最小值,然后除以范围,sklearn中提供了 preprocessing.normalize()方法

 

  • 密度聚类:对有噪音的数据很有用,对双月牙数据很有用

           DBSCAN(具有噪声的基于密度的空间聚类,使用该方法一定要传递的参数:Epsilon-定义每一点近邻的距离,MinPts-在一点被视为核心点的邻域中的点数):不会把所有点归为类,对处理有噪声的数据集很有用。

优点:不需要指明类的数量,DBSCAN能根据点的分布密度,以及我们设置的参数,从而找到类;能灵活找到并分离各种形状和大小的类;能够很好的处理数据集中的噪声和离群值。

缺点:找到不同密度的类方面有一定困难,可以利用DBSCAN的变体HDBSCAN解决该问题

 

文献: Traffic Classification Using Clustering Algorithms 论文研究的是网络流量,试图用聚类算法将其分类,假如你是一个网络管理员,发现人们在你的网络上运行比特流,你想对流量进行分类,一类是比特流,一类是常规网络流量,特别是你没有办法看到实际的包从而得到判断。这篇论文比较了在这个分类下K-均值聚类法和DBSCAN,即网络流量的非监督分类。这篇论文用完整的思维过程,从头到尾完整地展示了聚类方法的流程。

          Anomaly detection in temperature data using dbscan algorithm 这篇论文利用DBSCAN对温度数据做一场检测,方法是设定点的最小数量以及邻域值,从而让数据集中的大多数数据能分成一个或几个类,对于被标记为噪声的点,我们把它看作离群值或异常,通过改变点的最小数量和邻域值,能够改变这个异常检测的许可度或攻击性。

lesson 4 

高斯混合模型与聚类验证

一种温和的聚类算法,可以检查到所有点,以隶属度区分彼此。

  • GMM(高斯混合模型)聚类假定每个类都遵循特定的统计分布,一个高斯混合模型可由个高斯分布组成。

优点:提供软聚类,软聚类时多个聚类的实例性隶属度,比如对文档分类,希望文档可以属于多个类别,GMM聚类对于这种场景很有用。

缺点:GMM聚类对初始化值很敏感,可能收敛到局部最优,但收敛速度慢

 

相关文献: Nonparametric discovery of human routines from sensor data

 

Adaptive background mixture models for real-time tracking

 Application of the Gaussian mixture model in pulsar astronomy

 

Speaker Verification Using Adapted Gaussian Mixture Models

 https://www.youtube.com/watch?v=lLt9H6RFO6A

  • 期望最大化是一种迭代算法,初始选择高斯参数时要注意,对EM的结果质量都有影响

用于GMM聚类的期望最大化算法:1.初始化高斯分布(K均值);2.对数据集进行软聚类,期望步骤,算出所有点的隶属度;3. 利用软聚类来估计新的高斯模型;4.评估对数似然,值越大越好

  • 聚类分析过程:1.特征选择以及特征提取;2.选择聚类算法;3.聚类评价;4.聚类结果解释

  • 聚类评价:是客观和定量评估聚类结果的过程,

三种指数:

外部指标:处理有标签数据时使用的评分;调整兰德系数的计算: 调整兰德系数并不关心实际标签是否匹配。 它只关心聚类结果中聚集在一起的点一起保留在聚类中,而不管聚类算法是否给这个聚类标记为'0' 或 '1'。

内部指标:数据集没标签时,仅使用数据来衡量数据和结构之间的吻合度 finding K (轮廓系数, 我们可以计算每个点的轮廓系数,我们也可以计算它们在一个聚类或整个数据集中的平均值。) 

相对指标:表明两个聚类结构中哪一个在某种意义上更好

lesson 5

特征缩放

特征缩放是执行非监督式学习时的一个重要预处理步骤,以允许同时(平等地)分析多个特征。

  • 通过缩放公式将数据缩放到[0,1]间,优点:预估输出稳定;缺点:如果输入特征有异常数值,会影响缩放结果

MinMaxScalser缩放器(sklearn导入)

  • K-均值聚类和使用RBF核函数的SVM算法会受到特征缩放的影响,这两个算法都利用到了点与点之间的距离;

  • 决策树不受影响,因为决策树不会呈现对角线,只是在不同方向上进行切割,不需要考虑两个维度间的关系

  • 线性回归的系数与所有特征有关,也不会受影响

leeson 6

PCA(主成成分分析)

PCA是一套全面应用于各类数据分析的分析方法(包括特征集压缩)

  • 收到任何形状的数据,PCA从旧坐标系统仅通过转化和轮换获得新坐标系统,它根据数据中心,将坐标系的中心移至此处,将X轴移至变化的主轴,在整个数据集中找寻它最大方差的位置,它将进一步把轴一直移至正交处重要性较低的变化方向。PCA为你找到这些轴,并告诉你轴的重要性。

  • 当有多个特征时,但假设只有一小部分特征在驱动这个数据模式,所以要试着找出一个组合特征,这些组合特征被称为主要成分,一个非常强大的算法,现在主要在特征降维的情况中讨论它,如何使用PCA来降低特征的维度,从而将一大堆特征缩减至几个特征。

  • PCA沿着最大方差维度进行映射时,能够保留原始数据中最多的信息

  • PCA总结:

  1. PCA是将输入特征转化为其主成分的系统化方式;

  2. 主成分可供之后使用,不是原始输入特征,可以将其用作回归或分类任务中的新特征;

  3. 主成分的定义是数据中会使方差最大化的方向,可以在对主成分执行投影或压缩时,将出现信息丢失的可能性降至最低;

  4. 还可以对主成分划分等级,数据因特定主成分而产生的方差越大,因此产生方差最大的主成分即为第一个主成分,产生方差第二大的则为第二个主成分;

  5. 主成分在某种意义上时相互垂直的,因此从数学角度出发,第二个主成分绝不会与第一个主成分重叠,第三个也不会跟第二个重叠,某种意义上,可以将它们当作单独的特征

  6. 主成分的数量是有上限的,最大值时数据集中输入特征数量,但如果一样,PCA就没什么意义了。

  • 何时使用PCA:1.如果你想要访问隐藏的特征,而你认为这些特征可能显示在你的数据的图案中,你尝试想要确定是否有隐藏的特征,也就是说,想要知道第一个主成分的大小;2.降维(可以可视化高纬数据;数据中存在噪音,可以去除噪音;利用PCA做预处理)

  • 利用PCA人脸识别:人脸照片通常有很高的输入维度(很多像素);人脸具有一些一般性形态,这些形态可以以较小维数的方式捕捉,比如人一般都有两只眼睛,眼睛基本都位于接近脸的顶部的位置

项目: https://github.com/udacity/ud120-projects/blob/master/pca/eigenfaces.py

数据: https://scikit-learn.org/0.15/auto_examples/applications/face_recognition.html

lesson 7

随机投影与ICA

降维的方法

  • 降维上随机投影比PCA效率更高,应用在维度太多,主成分分析无法直接计算的情景下。

  • 虽然我们可以选择维度的数量来随机地进行数据投影,但它只是可选的,不是必须的。 随机投影可以通过设置多个组件,或通过指定 epsilon 的值并使算法计算维数的保守值,来运行的。

  • ICA(独立成分分析),假定这些特征时独立源的混合,并尝试分离混合再该数据集里的独立源,例子: 一段对话的两个录音是 ICA 的理想选择,特别是如果两个麦克风能够成功捕捉两个对话人各自声音的情况下。 对于能够拆分观测数据集的 ICA,观测数量必须等于或超过原始独立数据源(例如,为了区别五个独立的仪器,我们至少需要五个记录)。

相关论文: https://s3.cn-north-1.amazonaws.com.cn/static-documents/nd101/MLND+documents/10.1.1.322.679.pdf

ICA应用:医学扫描仪、财务数据(尝试)

总结Summary

  • 监督学习需要训练标记的数据,我们可以知道我们预测的结果。 在无监督算法中数据点未被标记,我们不一定知道我们预测的结果。

  • 注意不要混淆K-近邻算法和K均值聚类。 K-近邻算法是一种分类算法,是监督学习的一个子集。 K-means是一种聚类算法,是非监督学习的一个子集。K均值聚类中K表示聚类的数目,我们可以使用如 Elbow Method 或 Silhouette Method 等多种方式来确定它的值。

 

 

你可能感兴趣的:(学习笔记)