Python数据分析与机器学习32-聚类算法

文章目录

  • 一. 聚类概念
  • 二. K-MEANS算法
    • 2.1 基本概念
    • 2.2 工作流程
    • 2.3 优势和劣势
  • 三. DBSCAN算法
    • 3.1 基本概念
    • 3.2 工作流程
    • 3.3 参数选择
    • 3.4 优势和劣势
      • 3.4.1 优势
      • 3.4.2 劣势
  • 四. 算法可视化
  • 参考:

一. 聚类概念

无监督问题:
我们手里没有标签了

聚类:
相似的东西分到一组

难点:
如何评估,如何调参

Python数据分析与机器学习32-聚类算法_第1张图片

二. K-MEANS算法

2.1 基本概念

K值:
要得到簇的个数,需要指定K值
(我们需要将数据分为几类,K值就指定为该数值)

质心:
均值,即向量各维取平均即可

距离的度量:
常用欧几里得距离和余弦相似度(先标准化)

优化目标:
Python数据分析与机器学习32-聚类算法_第2张图片

2.2 工作流程

Python数据分析与机器学习32-聚类算法_第3张图片

图a:
原始的数据集

图b:
随机指定了两个初始的点

图c-e:
改变x点的位置 或者调整参数来改变

2.3 优势和劣势

优势:
简单,快速,适合常规数据集

劣势:

  1. K值难确定
  2. 复杂度与样本呈线性关系
  3. 很难发现任意形状的簇

Python数据分析与机器学习32-聚类算法_第4张图片

三. DBSCAN算法

3.1 基本概念

密度相连:
若从某核心点p出发,点q和点k都是密度可达的,则称点q和点k是密度相连的。

边界点:
属于某一个类的非核心点,不能发展下线了

直接密度可达:
若某点p在点q的r 邻域内,且q是核心点则p-q直接密度可达。

噪声点:
不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的

图解:
A:核心对象
B,C:边界点
N:离群点

Python数据分析与机器学习32-聚类算法_第5张图片

3.2 工作流程

参数D:
输入数据集

参数ϵ:
指定半径

MinPts:
密度阈值

Python数据分析与机器学习32-聚类算法_第6张图片

3.3 参数选择

半径ϵ:
可以根据K距离来设定:找突变点K距离:给定数据集P={p(i); i=0,1,…n},计算点P(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序,d(k)就被称为k-距离。

MinPts:
k-距离中k的值,一般取的小一些,多次尝试。

3.4 优势和劣势

3.4.1 优势

  1. 不需要指定簇个数
  2. 可以发现任意形状的簇
  3. 擅长找到离群点(检测任务)
  4. 两个参数就够了

这类通过K-means方法是没办法聚类的,但是通过DBSCAN算法是可以出色的完成
Python数据分析与机器学习32-聚类算法_第7张图片
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-44YqRof6-1658896626594)(https://upload-images.jianshu.io/upload_images/2638478-58ca185e6d18962b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
Python数据分析与机器学习32-聚类算法_第8张图片

3.4.2 劣势

  1. 高维数据有些困难(可以做降维)
  2. 参数难以选择(参数对结果的影响非常大)
  3. Sklearn中效率很慢(数据削减策略)

四. 算法可视化

官方提供了一个可视化的算法动态演示,真的很给力。

K-Means:
https://www.naftaliharris.com/blog/visualizing-k-means-clustering/
Python数据分析与机器学习32-聚类算法_第9张图片

DBSCAN:
https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/
Python数据分析与机器学习32-聚类算法_第10张图片

参考:

  1. https://study.163.com/course/introduction.htm?courseId=1003590004#/courseDetail?tab=1

你可能感兴趣的:(数据分析,+,机器学习,Python,#,Python数据分析与机器学习,机器学习,python,算法)