聚类算法

  • k-means聚类
    • k-means的基本概念
    • 不稳定结果
    • 评价指标
    • 参数k如何选择
    • 基于kmeans的图像分割
    • 基于kmeans的半监督学习
  • DBSCAN聚类
    • DBSCAN的基本概念
    • 如何选择参数
    • 优点和缺点

k-means聚类

相比于之前的线性回归和逻辑回归,k-means聚类算法属于无监督问题,因为没有标签,所以评估比较困难。

k-means的基本概念

  1. 要得到簇的个数,需要指定k值
  2. 质心:均值,即向量各维的平均
  3. 距离的度量:常用欧氏距离得距离和余弦相似度(先标准化)
  4. 优化目标:每一簇内所有点离质心的距离最短。
    优点和缺点:
    优点,简单,快速,适合常规数据集。
    缺点,k难确定,复杂度与样本呈线性关系,很难发现任意形状的簇(就是形状比较随意的那种)。

不稳定结果

k-means每次分类的结果不一定完全一样

评价指标

  1. **inertia:**所有样本点到各自所属类的距离的平方,越小越好。可以设置多次迭代,计算inertia,取inertia最小聚类结果。
  2. 轮廓系数
    轮廓系数的参数有两个:
    (1)ai:计算样本i到同簇其他样本的平均距离ai,ai乘坐样本的簇内不相似度,越小越好
    (2)bi:计算样本i到其他簇的所有样本的距离,称为样本与簇Cj的不相似度,bi是其中所有距离的最小值,称为样本的簇间不相似度。
    结论:a. si越接近于1,说明样本聚类合理
    b. si接近-1,说明样本更应该分在其他簇
    c. si接近0,说明样本在两个簇的边界上。

    转自:https://www.bilibili.com/video/BV1rq4y1p7nJ?p=80

参数k如何选择

参数k的选择方法是与评价指标相对应的。
参考一:inertia
当k越大时,对应的评价指标inertia越小,取个极限,假如每个点都自成一个类别,那么inertia就是0了,但是显然k并不是越大越好。
可以做一个“for i in range(1,k+1)”的迭代,观察它的inertia结果,如下图,当k = 4时,它前面的曲线下降很快,后面的曲线下降比较缓慢,因此可以将该点看做是一个转折点,也可以当做是k取值的一个参考。之所以说参考是因为这个结果并不一定是最佳的k,还要结合聚类的散点图,具体情况具体分析。

转自:https://www.bilibili.com/video/BV1rq4y1p7nJ?p=79
参考二:si
根据轮廓系数si的评判方法,si越接近1聚类越合理。但是不管是inertia还是si都只是一个参考,并非是绝对的最佳选项。

转自:https://www.bilibili.com/video/BV1rq4y1p7nJ?p=80

基于kmeans的图像分割

以前只用kmeans做数据分类,从来没考虑过他还能做图像分割。用kmeans做图像分割的原理就是对图像的每个像素进行分类,不同颜色的像素属于不同的类别,我的理解,这个和之前的数据分割不一样的是,类别稍微多一些,可能效果越好,毕竟将颜色区分到每个像素上时,它的分辨率会高一些,就好像家里的电视显示器一样,分辨率越高越清晰。

转自:https://www.bilibili.com/video/BV1rq4y1p7nJ?p=82

基于kmeans的半监督学习

半监督学习的概念:
有监督学习需要获取大量有标记的数据,是一种成本较高的学习方法,而无监督学习不依赖数据的标记,但是对解决分类和回归的问题有一些难度。所以通过对样本进行部分标记,再使用机器学习的算法,就是半监督学习。
方法:
先使用kmeans聚类得到n个cluster,取每个cluster中最靠近中心的数据,这样可以得到n个数据,将n个带标签的数据代入LR中,得到theta。或者可以取距离中心最近的m(m<n)个数据进行LR。

DBSCAN聚类

DBSCAN的基本概念

  1. 核心对象:若某个点的密度达到算法设定的阈值则其为核心点(即r邻域内点的数量不小于minPts)
  2. e邻域的距离阈值:设定的半径r
  3. 直接密度可达:若某点p在点q的r邻域内,且q是核心点,则p-q直接密度可达。
  4. 密度可达:若有一个点序列q0,q1,…,qk,对任意qi - (qi-1)是直接密度可达,则称从q0到qk密度可达,这实际上时直接密度可达的传播
  5. 噪声点:不属于任何一个类簇的点。

如何选择参数

  1. 半径r,可以根据k距离来设定,找突变点
    k距离:给定数据集P,计算Pi到集合D的子集S中所有点之间的距离,按照距离从小到大的顺序排序,d(k)就被称为k距离
  2. minPts:k距离中k的值,一般取得小一些,多次尝试。

优点和缺点

**优点:**不需要指定簇的个数;可以发现任意形状的簇;擅长找到离群点;超参数只有两个;
**缺点:**高维数据困难(可以降维);参数难选(参数对结果影响较大);sklearn中效率很慢(数据削减)

机器学习算法笔记-聚类相关推荐

  1. 图解机器学习算法(13) | 聚类算法详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  2. 白话机器学习算法——笔记

    白话机器学习算法--笔记 第一章 1 数据准备 数据格式 (一般为表格) 变量类型 变量选择 特征工程 降维 缺失数据的处理 2 选择算法 3 参数调优 4 评价模型 总结 第二章 k均值聚类 1 迭 ...

  3. 机器学习算法笔记(零)

    机器学习算法笔记(零) 简介 机器学习的定义:对于某类任务 T 和性能度量 P,一个计算机程序被认为可以从经验 E 中学习是指,通过经验 E 改进后,它在任务 T 上由性能度量 P 衡量的性能有所提升 ...

  4. python决策树 value_机器学习 | 算法笔记(四)- 决策树算法以及代码实现

    概述 上一篇讲述了<机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现>,本篇讲述机器学习算法决策树,内容包括模型介绍及代码实现. 决策树 决策树(Decision Tree)在机 ...

  5. 机器学习算法-KMeans聚类算法解析及伪代码实现。

    机器学习算法-KMeans聚类算法解析及伪代码实现. 徐小狗在文末附上了几条大神们关于KMeans聚类算法的博文,欲详细研究请前往浏览~ 作为初学者,许多地方可能笨拙或有误,希望有大神看到后给予优化和 ...

  6. 机器学习算法笔记——P22 sklearn—LASSO算法

    机器学习算法笔记--P22 sklearn-LASSO算法 #!/usr/bin/env python # coding: utf-8# In[1]:import numpy as np from n ...

  7. 【Java应用】使用Java实现机器学习算法:聚类、分类、预测

    一.引言 1.机器学习算法概述 机器学习是一种人工智能技术,旨在通过使用数据和统计分析来让计算机系统自动改进性能.机器学习算法可分为三大类:聚类.分类和预测.聚类算法用于将数据集分成不同的群组:分类算 ...

  8. 机器学习算法-k-means聚类算法介绍

    聚类算法介绍: 在"无监督学习"(unsupervised learning)中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的 ...

  9. 机器学习 | 算法笔记- 集成学习(Ensemble Learning)

    前言 本系列为机器学习算法的总结和归纳,目的为了清晰阐述算法原理,同时附带上手代码实例,便于理解. 目录 k近邻(KNN) 决策树 线性回归 逻辑斯蒂回归 朴素贝叶斯 支持向量机(SVM) 组合算法( ...

最新文章

  1. C# winform中MouseDoubleClick与DoubleClick的区别
  2. SDWebImage使用,图片加载和缓存
  3. JS基础 -- 枚举对象中的属性
  4. Linux编程简介——动态链接库
  5. 2转单通道 python_机器学习用Python—Python集成工具包Anaconda安装步骤
  6. python怎么显示求余的除数_Python算术运算符及用法详解
  7. django模板系统(上)
  8. 我的技术心病(转贴)
  9. 【干货】李航老师《统计学习方法》(第2版)清华PPT课件分享
  10. AC日记——丢瓶盖 洛谷 P1316
  11. 常用的科研论文作图软件
  12. javascript轮播图超详细
  13. Git之(一)Git是什么
  14. 正弦余弦优化算法[记录]
  15. Qt读写Excel--QXlsx设置字体格式、样式8
  16. SpringMVC视图及如何在域对象中共享数据
  17. 如何将markdown文件转成word
  18. Python性能分析利器pyinstrument讲解
  19. 大数据的数据库设计原则有哪些
  20. AWS灾难恢复的重要参考指标

热门文章

  1. 小区公共广播系统设备接线_广播系统常见四种故障分析
  2. 当linux中的所有指令突然不能使用的时候
  3. 微信小程序实战之快递查询
  4. MFC实现从一个窗口向另一个窗口发送消息的两种方法
  5. 那些年使用appium-Uiautomator2遇到的问题解决方法!
  6. 腾讯视频web端如何去水印?学会这招你想去啥就去啥
  7. Wek9 B - Brand type judgment
  8. 【论文译文】Few-Shot Unsupervised Image-to-Image Translation(FUNIT)
  9. which的用法总结c语言,which的用法
  10. [Debug] printf undefined reference to `putchar‘