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

无监督学习-Complete Guide (较长)

无监督学习是机器学习的一个分支,其数据没有明确的标签或目标。目标是发现数据中的隐藏模式、分组或结构。与有监督学习(模型从带标签的样本中学习)不同,无监督学习处理的是原始、无标签的数据。

为什么要用无监督学习?

  • 无标签数据丰富: 现实世界中大多数数据都是无标签的(如图片、文本、传感器数据)。
  • 探索性数据分析: 有助于在应用其他方法前理解数据的结构和分布。
  • 数据压缩: 降低维度以便存储、可视化或加速计算。
  • 降噪: 去除无关或冗余特征。
  • 预处理: 通过提取有用特征或降噪提升有监督学习的效果。
  • 新颖/异常检测: 发现异常模式或离群点。
  • 生成建模: 学习生成与输入数据相似的新样本。

无监督学习的类型

  • 聚类: 将相似的数据点分组(如客户细分)。
  • 降维: 在保留重要信息的前提下减少特征数量(如 PCA、t-SNE)。
  • 异常检测: 识别罕见或异常的数据点(如欺诈检测)。
  • 关联规则挖掘: 发现变量间有趣的关系(如购物篮分析)。
  • 密度估计: 估计数据的概率分布(如高斯混合模型)。
  • 生成建模: 学习生成新数据(如 GAN、VAE)。

有监督 vs. 无监督学习

  • 有监督学习:
    • 带标签观测:每个观测是 (x, y) 的元组,x 为特征向量,y 为输出标签,两者通过未知函数 f(x) = y 关联。
    • 训练时:利用带标签观测学习 x 与 y 的关系,即找到最适合观测的函数(或模型)h(x)
    • 目标:确保学到的模型 h(x) 能准确预测未见过的测试输入的输出标签(泛化能力)
    • 标签:训练时是"老师",测试时是"验证者"
  • 无监督学习:
    • 无标签特征向量数据集
    • 目标:在无明确标签的情况下发现数据中的结构、模式或分组

聚类

聚类是将一组对象分组的任务,使得同一组(簇)中的对象彼此更相似,而不同组之间的对象差异更大。

  • 目标: 找到观测/对象/特征向量之间的自然分组
  • 应用:
    • 市场细分
    • 社交网络分析
    • 文档或图片组织
    • 异常检测
    • 推荐系统

常见聚类算法

K-Means(K均值)
  • 通过最小化组内方差将数据分为 k 个簇。
  • 快速且可扩展,但需指定 k,且假设簇为球形。
  • 对初始化和异常值敏感。
层次聚类
  • 通过合并(自底向上)或分裂(自顶向下)簇构建聚类树(树状图)。
  • 不需要提前指定簇数。
  • 能捕捉嵌套簇,但大数据集下扩展性较差。
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
import numpy as np# 生成合成数据
np.random.seed(42)
X = np.random.rand(10, 2)# 执行层次聚类
Z = linkage(X, 'ward')# 绘制树状图
plt.figure(figsize=(6, 3))
dendrogram(Z)
plt.title('层次聚类树状图')
plt.xlabel('样本索引')
plt.ylabel('距离')
plt.show()

在这里插入图片描述

DBSCAN(基于密度的空间聚类)
  • 将密集点分为一组,将孤立点标记为离群点。
  • 不需要指定簇数。
  • 能发现任意形状的簇,对异常值鲁棒。
from sklearn.cluster import DBSCAN
import numpy as np
import matplotlib.pyplot as plt# 生成合成数据
X = np.random.rand(100, 2)# 应用 DBSCAN
db = DBSCAN(eps=0.1, min_samples=5).fit(X)
labels = db.labels_plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='rainbow')
plt.title('DBSCAN 聚类')
plt.show()

在这里插入图片描述

高斯混合模型(GMM)
  • 假设数据由多个高斯分布混合生成。
  • 能拟合椭圆形簇,提供软分配(概率)。
  • 适用于密度估计和聚类。
from sklearn.mixture import GaussianMixture
import numpy as np
import matplotlib.pyplot as plt# 生成合成数据
X = np.random.rand(300, 2)# 拟合 GMM
gmm = GaussianMixture(n_components=3, random_state=42)
gmm.fit(X)
labels = gmm.predict(X)plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.title('高斯混合模型聚类')
plt.show()

在这里插入图片描述


相似性度量(距离指标)

用于量化任意两个特征向量之间关系的强度。

  • 连续值特征
    • 例如 x = (0.1, 11, 15, 1.5),可计算任意两点的"距离"

欧氏距离

测量 n 维空间中两点的最短直线距离。可看作多维毕达哥拉斯定理。

D euclidean ( a , b ) = ∑ i = 1 n ( a i − b i ) 2 D_{\text{euclidean}}(a, b) = \sqrt{ \sum_{i=1}^{n} (a_i - b_i)^2 } Deuclidean(a,b)=i=1n(a

http://www.xdnf.cn/news/11745.html

相关文章:

  • yum更换阿里云的镜像源
  • 十六、【前端强化篇】完善 TestCase 编辑器:支持 API 结构化定义与断言配置
  • 极客大挑战 2019 EasySQL 1(万能账号密码,SQL注入,HackBar)
  • c++ stl常用算法
  • Seata 分布式事务 XA 模式
  • iTunes 无法备份 iPhone:10 种解决方法
  • [Java 基础]对象,膜具倒出来的
  • Python训练第四十四天
  • Ubuntu24.04 交叉编译 aarch64 ffmpeg
  • 多分辨率 LCD 的 GUI 架构设计与实现
  • AI基础知识(LLM、prompt、rag、embedding、rerank、mcp、agent、多模态)
  • 【Qt开发】文件
  • 【Linux仓库】冯诺依曼体系结构与操作系统【进程·壹】
  • 一台电脑联网如何共享另一台电脑?网线方式
  • Mermaid 绘图--以企业权限视图为例
  • 【后端开发】goland分布式锁的几种实现方式(mysql,redis,etcd,zookeeper,mq,s3)
  • WordPress子主题RiPro-V5van无授权全开源版(源码下载)
  • 实践篇:利用ragas在自己RAG上实现LLM评估②
  • 【Pandas】pandas DataFrame sample
  • sql server如何创建表导入excel的数据
  • 虚拟斯德哥尔摩症候群:用户为何为缺陷AI辩护?
  • 搭建强化推荐的决策服务架构
  • 【深度学习优化算法】02:凸性
  • 深度探索:如何用DeepSeek重构你的工作流
  • HTML5 网页设计 基础
  • 网页加密/解密( ecode方式)
  • UVM糖果爱好者教程 - 27.打印消息冗余度
  • 使用ExtendSim进行水管理、可持续性和环境仿真建模
  • 推荐5个免费的字体转换网站工具
  • iOS开发_常用的正则表达式