当前位置: 首页 > news >正文

「机器学习笔记13」无监督学习全面解析:从聚类算法到Python实战

没有标签的数据中,如何让机器自己发现规律?

一、什么是无监督学习?

想象你面前有一大堆没有标签的水果,你的任务是根据它们的特征(颜色、形状、大小)自动分成几组。这个过程就是无监督学习的核心思想——让机器在没有明确指导(标签)的情况下,自主发现数据中的内在结构和规律。

1.1 监督学习 vs 无监督学习 vs 半监督学习

监督学习就像有参考答案的学习:

  • 输入:数据 + 标签(如:图片 + “猫”/"狗"标签)
  • 目标:学习条件分布 P(Y|X),建立预测模型
  • 典型任务:分类、回归

无监督学习则是自主探索的学习:

  • 输入:只有数据,没有标签
  • 目标:发现数据本身的联合分布 P(X),找到内在结构
  • 典型任务:聚类、降维、异常检测

半监督学习介于两者之间,使用少量标注数据和大量未标注数据。

1.2 为什么数据结构如此重要?

数据的内在结构蕴含着关键信息。考虑下面这个例子:

一篇有意义的文章 vs 随机打乱单词顺序后的“文章”

虽然两篇“文章”的单词数量完全相同,但只有有结构的原始文章才包含有用信息。无监督学习就是要发现这种隐藏的结构模式。

二、无监督学习的三大核心任务

2.1 聚类分析

将相似的数据点分组,形成自然的类别。这是无监督学习最经典的应用。

2.2 降维处理

在保留关键信息的前提下,减少数据特征维度,解决"维度灾难"问题。

2.3 异常检测

识别与主流数据模式显著不同的异常点,如欺诈检测、故障诊断。

三、聚类算法详解

聚类的基本准则是:类内相似度最大化,类间相似度最小化

3.1 层次聚类:构建数据家族树

层次聚类生成树状的聚类结构,让你可以从不同粒度观察数据关系。

凝聚式层次聚类(自下而上)
# 伪代码演示凝聚式聚类过程
def agglomerative_clustering(data, k):# 1. 开始时每个点自成一类clusters = [{point} for point in data]while len(clusters) > k:# 2. 找到最相似的两个类i, j = find_most_similar_clusters(clusters)# 3. 合并这两个类new_cluster = clusters[i] | clusters[j]clusters = [c for idx, c in enumerate(clusters) if idx not in [i, j]] + [new_cluster]return clusters

类间相似度度量方法:

  • 单链接:用两类间最近点的距离代表类间距离 sim(ci,cj)=max⁡x∈ci,y∈cjsim(x,y)\text{sim}(c_i, c_j) = \max_{x\in c_i, y\in c_j} \text{sim}(x, y)sim(ci,cj)=maxxci,ycjsim(x,y)

  • 全链接:用两类间最远点的距离代表类间距离
    sim(ci,cj)=min⁡x∈ci,y∈cjsim(x,y)\text{sim}(c_i, c_j) = \min_{x\in c_i, y\in c_j} \text{sim}(x, y)sim(ci,cj)=minxci,ycjsim(x,y)

  • 平均链接:用两类所有点对的平均距离 sim(ci,cj)=1∣ci∣∣cj∣∑x∈ci,y∈cjsim(x,y)\text{sim}(c_i, c_j) = \frac{1}{|c_i||c_j|}\sum_{x\in c_i, y\in c_j} \text{sim}(x, y)sim(ci,cj)=ci∣∣cj1xci,ycjsim(x,y)

分裂式层次聚类(自上而下)

与凝聚式相反,从一个大类开始不断分裂。

层次聚类对比:

特性 凝聚式 分裂式
计算方式 自下而上合并 自上而下分裂
信息利用 局部信息 全局信息
计算效率 相对较高 相对较低

3.2 K-means聚类:经典高效的划分方法

K-means是最常用的聚类算法,通过迭代优化找到K个聚类中心。

算法数学原理

目标函数(最小化类内平方误差): J=1N∑n=1N∑v=1Krnv∥un−gv∥2J = \frac{1}{N}\sum_{n=1}^N\sum_{v=1}^K r_{nv} \|u_n - g_v\|^2J=

http://www.dtcms.com/a/478286.html

相关文章:

  • 计算机视觉(opencv)——基于MediaPipe与机器学习的手势识别系统
  • 建设网站的请示如何做漂亮的网站
  • 【C++ 学习】单词统计器:从 “代码乱炖” 到 “清晰可品” 的复习笔记
  • STL分解:从定义到实战
  • 自己写算法(九)网页数字动画函数——东方仙盟化神期
  • 郑州市科协网站小程序可以用手机网站吗
  • 创建一个 Vue3项目
  • 使用远程模拟器开发调试安卓APP
  • Java外功精要(3)——Spring配置文件和mybatis
  • 深圳网站建设服务商万创网为女足世界杯创建一个网站
  • Vmware Workstation虚拟机不能拖动复制文件到宿主机的Bug原因探究过程
  • 嵌入式Linux开发环境学习(一)
  • 三种解法(数组、栈、快慢指针)全面解析——力扣234.回文链表全解析
  • linux 系统压力测试工具stress使用
  • 铜川做网站电话西安模板网站建设
  • 基于单片机大棚浇水灌溉控制系统Proteus仿真(含全部资料)
  • SQL Server 2019实验 │ 数据库和表的创建、修改与删除
  • 服装制造企业痛点解决方案:EFISH-SBC-RK3588 预测性维护方案
  • 怎么利用自媒体做网站优化招聘网站制作公司
  • 每天五分钟深度学习:基于dropout(随机失活)解决神经网络过拟合
  • 自然语言处理(NLP)之分词
  • 双向数据绑定是什么
  • 全链路智能运维中的业务交易粒度资源消耗追踪技术
  • 开源程序网站百度识图在线网页版
  • 【LABVIEW软件】NI-VISA模块安装教程
  • 【完整源码+数据集+部署教程】害虫识别与分类图像分割系统源码和数据集:改进yolo11-MSBlock
  • 建设部网站公告注册成功怎样自己创造网站
  • 婚纱摄影网站毕业设计php汽车网站建设策划方案
  • mysql实战
  • OpenResty + Lua + Redis 鉴权案例,适用于 x86 和 ARM 架构的 Docker 环境。