聚类分析
有监督学习和无监督学习 如何选择?
1、是否有标签(主要):(是否可人工标注标签)
有监督学习-“有老师的学习”,有已知的训练的样本,通过已知的训练样本(如已知输入和对应的输出)来训练,从而得到一个最优模型,再将这个模型应用在新的数据上,映射为输出结果。再经过这样的过程后,模型就有了预知能力。
无监督学习-“没有老师的学习”,即没有训练的过程,直接对数据进行建模。
2、分类和聚类
有监督学习-分类
无监督学习-聚类
3、数据的独立性
数据和数据之间存在联系,不能很好很明确的分类,总有些混淆。有监督和无监督都不能彻底解决这个现象。
独立的数据适合有监督学习。
非独立的数据适合无监督学习。
聚类分析分类
- 划分法(k-means)
基于划分的聚类方法的优点是,收敛速度快,缺点是,它要求类别数目 k 可以合理地估计,并且初始中心的选择和噪声会对聚类结果产生很大影响。
- 层次法
1)自底向上法。
首先,每个数据对象都是一个簇,计算数据对象之间的距离,每次将距离最近的点合并到同一个簇。然后,计算簇与簇之间的距离,将距离最近的簇合并为一个大簇。不停地合并,直到合成了一个簇,或者达到某个终止条件为止。
簇与簇的距离的计算方法有最短距离法、中间距离法、类平均法等,其中,最短距离法是将簇与簇的距离定义为簇与簇之间数据对象的最短距离。自底向上法的代表算法是AGNES(AGglomerativeNESing)算法。
2)自顶向下法。
该方法在一开始所有个体都属于一个簇,然后逐渐细分为更小的簇,直到最终每个数据对象都在不同的簇中,或者达到某个终止条件为止。自顶向下法的代表算法是 DIANA(DivisiveANAlysis)算法。
基于层次的聚类算法的主要优点包括,距离和规则的相似度容易定义,限制少,不需要预先制定簇的个数,可以发现簇的层次关系。基于层次的聚类算法的主要缺点包括,计算复杂度太高,奇异值也能产生很大影响,算法很可能聚类成链状。
- 基于密度聚类
基于密度的聚类方法是从数据对象分布区域的密度着手的。如果给定类中的数据对象在给定的范围区域中,则数据对象的密度超过某一阈值就继续聚类。
这种方法通过连接密度较大的区域,能够形成不同形状的簇,而且可以消除孤立点和噪声对聚类质量的影响,以及发现任意形状的簇,如图 3 所示。
基于密度的聚类方法中最具代表性的是 DBSAN 算法、OPTICS 算法和 DENCLUE 算法。 图 2 是基于层次的聚类算法的示意图,上方是显示的是 AGNES 算法的步骤,下方是 DIANA 算法的步骤。这两种方法没有优劣之分,只是在实际应用的时候要根据数据特点及想要的簇的个数,来考虑是自底而上更快还是自顶而下更快。
- 基于图/网格聚类
基于网格的聚类方法的主要优点是处理速度快,其处理时间独立于数据对象数,而仅依赖于量化空间中的每一维的单元数。这类算法的缺点是只能发现边界是水平或垂直的簇,而不能检测到斜边界。另外,在处理高维数据时,网格单元的数目会随着属性维数的增长而成指数级增长。
- 基于模型聚类
图 5 对基于划分的聚类方法和基于模型的聚类方法进行了对比。左侧给出的结果是基于距离的聚类方法,核心原则就是将距离近的点聚在一起。右侧给出的基于概率分布模型的聚类方法,这里采用的概率分布模型是有一定弧度的椭圆。
图 5 中标出了两个实心的点,这两点的距离很近,在基于距离的聚类方法中,它们聚在一个簇中,但基于概率分布模型的聚类方法则将它们分在不同的簇中,这是为了满足特定的概率分布模型。
在基于模型的聚类方法中,簇的数目是基于标准的统计数字自动决定的,噪声或孤立点也是通过统计数字来分析的。基于模型的聚类方法试图优化给定的数据和某些数据模型之间的适应性。
聚类方法性能评估 有分类标签的数据集:
? 使用兰德指数(ARI,Adjusted Rand Index)
? 计算真实标签与聚类标签两种分布相似性之间的相似性,取值范围为[0,1]
? 1表示最好的结果,即聚类类别和真实类别的分布完全一致
//鸢尾花数据集带有标签
from sklearn import metrics
metrics.adjusted_rand_score(y, kmeans.labels_) ARI为0.73
没有分类标签的数据集:
? 使用轮廓系数(Silhouette Coefficient)来度量聚类的质量
? 轮廓系数同时考虑聚类结果的簇内凝聚度和簇间分离度
? 取值范围:[-1,1],轮廓系数越大,聚类效果越好
from sklearn import metrics
metrics.silhouette_score( X,kmeans.labels_,metric='euclidean' )
//忽略鸢尾花数据集的分类标签,计算聚类的轮廓系数,为0.553
回归模型-有监督学习 基于连续型数据的预测建模分析技术
常用方法:
? 线性回归(Linear Regression)
? 逻辑回归(Logistic Regression)
? 多项式回归(Polynomial Regression)
【人工智能大数据|聚类模型、聚类分析】回归模型性能评估
? 采用均方根误差(Root Mean Squared Error,RMSE)来表示误差
回归模型的预测误差越小越好,当样本数非常多时,随着n的增长,均方根
误差也会增长,不同数据集训练得到的模型效果不能横向比较
文章图片
? 统计学上,使用模型的决定系数^2来衡量模型预测能力
文章图片
推荐阅读
- 机器学习|吴恩达机器学习课后作业1——单变量线性回归(Linear regression with one variable)
- #|【机器学习-样例】聚类模型
- 吴恩达机器学习笔记|吴恩达机器学习课后作业——支持向量机
- 吴恩达机器学习笔记|吴恩达机器学习课后作业——KMeans和PCA
- 机器学习|吴恩达机器学习课后作业——多元分类
- 机器学习算法入门|机器学习算法入门梳理——逻辑回归的分类预测详解
- 机器学习|机器学习碎碎念之逻辑回归
- PyQt5 实现状态栏(statusBar)显示和隐藏功能
- python|基于Python实现损失函数的参数估计