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

【机器学习笔记 Ⅲ】1 无监督学习

无监督学习(Unsupervised Learning)详解

无监督学习是机器学习的一个核心分支,其特点是从无标签数据中自动发现隐藏的模式或结构。与监督学习不同,它不依赖预先标注的输出结果,而是通过数据本身的分布特性进行学习。


1. 核心特点
  • 输入数据:只有特征(X),没有标签(y)。
  • 目标:发现数据的内在规律,如聚类、降维、异常检测等。
  • 典型应用
    • 客户分群(聚类)
    • 数据压缩(降维)
    • 推荐系统(关联规则)

2. 主要任务与方法
(1) 聚类(Clustering)

将数据分组为相似的簇(Cluster),同一簇内样本相似度高,不同簇间差异大。
常用算法

  • K-Means:基于距离的划分聚类。
    from sklearn.cluster import KMeans
    kmeans = KMeans(n_clusters=3).fit(X)
    labels = kmeans.labels_
    
  • DBSCAN:基于密度的聚类(可发现任意形状簇)。
  • 层次聚类:通过树状图(Dendrogram)展示簇的层次关系。

聚类效果图

(2) 降维(Dimensionality Reduction)

减少特征数量,保留关键信息,用于可视化或去噪。
常用算法

  • PCA(主成分分析):线性投影到低维空间。
    from sklearn.decomposition import PCA
    pca = PCA(n_components=2)
    X_reduced = pca.fit_transform(X)
    
  • t-SNE:非线性降维(适合可视化高维数据)。
  • UMAP:保留全局和局部结构的降维方法。
(3) 关联规则学习(Association Rule Learning)

发现数据中的频繁项集和关联规则(如购物篮分析)。
经典算法:Apriori、FP-Growth。
示例规则:{尿布} → {啤酒}(顾客买尿布时很可能买啤酒)。

(4) 异常检测(Anomaly Detection)

识别数据中的离群点或异常模式。
常用方法

  • Isolation Forest:通过随机划分隔离异常点。
  • One-Class SVM:学习正常数据的边界。

3. 无监督学习的数学基础
(1) 聚类:最小化类内距离

K-Means的目标函数:

(2) 降维:最大化方差(PCA)

PCA通过特征值分解协方差矩阵,选择最大特征值对应的特征向量作为主成分。


4. 代码实战示例
(1) K-Means聚类
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs# 生成模拟数据
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)# 聚类
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)# 可视化
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=200, c='red')
plt.show()
(2) PCA降维
from sklearn.datasets import load_digits# 加载手写数字数据集(8x8图像,64维)
digits = load_digits()
X = digits.data# 降维到2D
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)# 可视化
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=digits.target, cmap='Spectral')
plt.colorbar()
plt.show()

5. 评估无监督学习
(1) 聚类评估
  • 有标签时:调整兰德指数(ARI)、归一化互信息(NMI)。
    from sklearn.metrics import adjusted_rand_score
    ari = adjusted_rand_score(true_labels, cluster_labels)
    
  • 无标签时:轮廓系数(Silhouette Score)、Calinski-Harabasz指数。
(2) 降维评估
  • 保留方差比例(PCA的explained_variance_ratio_)。
    print(pca.explained_variance_ratio_.sum())  # 前2个主成分的累计方差
    

6. 优缺点对比
优点缺点
1. 无需标注数据:节省标注成本。1. 结果主观性:无明确评估标准。
2. 发现隐藏模式:如客户细分。2. 解释性差:需人工验证模式合理性。
3. 数据预处理:为监督学习提供特征。3. 参数敏感:如K-Means的簇数需预设。

7. 实际应用场景
  • 市场分析:通过聚类识别用户群体。
  • 图像压缩:PCA减少图像维度。
  • 异常检测:监控服务器日志中的异常行为。
  • 推荐系统:关联规则挖掘商品组合。

8. 与监督学习的对比
特性无监督学习监督学习
输入数据只有特征(X)特征(X)和标签(y)
目标发现数据内在结构预测标签或数值
典型任务聚类、降维、异常检测分类、回归
评估难度较难(依赖人工解释)明确(通过标签计算准确率等)

9. 总结
  • 无监督学习是探索数据内在结构的强大工具,尤其适用于标签缺失的场景。
  • 核心方法包括聚类、降维、关联规则和异常检测。
  • 关键挑战在于结果评估和解释,需结合业务知识验证模式合理性。
  • 进阶方向:半监督学习(结合少量标注数据)和自监督学习(自动生成标签)。
http://www.dtcms.com/a/268999.html

相关文章:

  • 讯飞结合kimi辅助文章博客写作
  • 如何解决微信小程序出现两个下拉刷新样式?
  • 【论文阅读】Dynamic Few-Shot Visual Learning without Forgetting
  • 科目一小述(二之前)
  • Git安装避坑指南
  • 深入理解 React 单向数据流:构建高效、可维护的组件架构
  • 石子入水波纹效果:UV扰动着色器实现
  • Vue 配置打包后可编辑的变量
  • UI前端大数据处理性能提升:分布式架构下的数据处理优化
  • 数字人源码部署流程分享--- PC+小程序融合方案
  • 【MyBatis】XML实现,配置方法和增、删、改、查
  • 深入解析密集矩阵与稀疏矩阵:概念、应用与代码实战
  • 【人工智能】ChatGPT、DeepSeek-R1、DeepSeek-V3 辨析
  • 音频信号的预加重:提升语音清晰度
  • 【Netty进阶】Netty的进阶与实战
  • 【C语言】const、volatile、restrict、static四大关键字学习笔记
  • 沉浸式视频的未来:MV-HEVC与3D-HEVC技术深度解析
  • 图像处理基础:镜像、缩放与矫正
  • 语音交互新纪元:Hugging Face LeRobot如何让机器人真正“懂你”
  • C++基础问题
  • GTA(传承/增强)1.71-3570环境补丁
  • 前端工程化设计详解
  • 摄影后期:使用Photoshop进行暗角控制
  • JavaSE -- 集合详细介绍(中篇)
  • 回溯题解——电话号码的字母组合【LeetCode】
  • C++ 虚函数(多态,多重继承,菱形继承)
  • Windows 7 环境下发布Python程序的 _socket 模块加载错误
  • jdk11安装详细教程window版和linux版
  • Node.js特训专栏-实战进阶:14.JWT令牌认证原理与实现
  • GitHub Actions自动化部署Vue项目到宝塔服务器