人工智能之核心基础 机器学习 第八章 无监督学习概述

人工智能之核心基础 机器学习

第八章 无监督学习概述


文章目录

  • [人工智能之核心基础 机器学习](#人工智能之核心基础 机器学习)
    • [8.1 什么是无监督学习?](#8.1 什么是无监督学习?)
      • [📌 定义:从"没有答案"的数据中找规律](#📌 定义:从“没有答案”的数据中找规律)
    • [8.2 无监督学习的三大核心任务](#8.2 无监督学习的三大核心任务)
      • [1️⃣ 聚类(Clustering)------"物以类聚"](#1️⃣ 聚类(Clustering)——“物以类聚”)
      • [2️⃣ 降维(Dimensionality Reduction)------"压缩信息,保留精华"](#2️⃣ 降维(Dimensionality Reduction)——“压缩信息,保留精华”)
      • [3️⃣ 异常检测(Anomaly Detection)------"揪出不合群的家伙"](#3️⃣ 异常检测(Anomaly Detection)——“揪出不合群的家伙”)
    • [8.3 无监督学习的应用场景](#8.3 无监督学习的应用场景)
    • [8.4 配套代码实现(Scikit-learn)](#8.4 配套代码实现(Scikit-learn))
      • [🧪 示例数据准备](#🧪 示例数据准备)
      • [1️⃣ 聚类实战:K-Means 用户分群](#1️⃣ 聚类实战:K-Means 用户分群)
      • [2️⃣ 降维实战:PCA 数据压缩与可视化](#2️⃣ 降维实战:PCA 数据压缩与可视化)
      • [3️⃣ 异常检测实战:Isolation Forest 识别异常用户](#3️⃣ 异常检测实战:Isolation Forest 识别异常用户)
    • [🎯 本章总结](#🎯 本章总结)
      • [💡 无监督学习的核心价值:](#💡 无监督学习的核心价值:)
  • 资料关注

8.1 什么是无监督学习?

📌 定义:从"没有答案"的数据中找规律

监督学习 :老师告诉你每道题的正确答案(标签),你学着模仿。
无监督学习 :给你一堆试卷,但没有标准答案,你要自己发现题目之间的规律、分组或结构。

核心特点

  • 输入只有特征 X X X,没有标签 y y y
  • 目标不是预测,而是理解数据本身
  • 像"数据侦探"一样挖掘隐藏模式

💡 举个生活例子:

你收到一箱混装水果(苹果、橙子、香蕉),没人告诉你哪个是哪个。

你通过颜色、形状、大小 把它们分成几堆------这就是聚类


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

1️⃣ 聚类(Clustering)------"物以类聚"

目标:将相似的数据点分到同一组,不相似的分开。

✅ 输出:每个样本的"群组编号"(如用户A属于"高价值客户群")

典型算法

  • K-Means(最常用)
  • 层次聚类(Hierarchical Clustering)
  • DBSCAN(能发现任意形状簇)

2️⃣ 降维(Dimensionality Reduction)------"压缩信息,保留精华"

目标 :把高维数据(如1000个特征)压缩成低维(如2维),同时尽量不丢失重要信息

✅ 用途:

  • 可视化(2D/3D画图)
  • 去噪
  • 加速后续模型训练

典型算法

  • 主成分分析(PCA)--- 线性降维
  • t-SNE --- 非线性,适合可视化
  • UMAP --- 更快、更现代的非线性降维

3️⃣ 异常检测(Anomaly Detection)------"揪出不合群的家伙"

目标 :找出与大多数数据显著不同的异常点(Outliers)。

✅ 应用:信用卡欺诈、设备故障、网络入侵

典型方法

  • 基于统计(如3σ原则)
  • 基于聚类(离群点不属于任何簇)
  • Isolation Forest(专门为此设计)
  • One-Class SVM

8.3 无监督学习的应用场景

场景 任务类型 实际案例
用户分群 聚类 电商将用户分为"价格敏感型"、"品牌忠诚型"等
数据压缩 降维 将人脸图像从10,000维压缩到50维用于人脸识别
异常值识别 异常检测 银行系统自动标记可疑交易
推荐系统预处理 聚类+降维 先对用户聚类,再在群内做个性化推荐
探索性数据分析(EDA) 降维+聚类 快速了解数据分布和潜在结构

💡 关键价值:在没有标签的情况下,也能为业务提供洞察!


8.4 配套代码实现(Scikit-learn)

🧪 示例数据准备

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs, load_digits

# 生成模拟用户数据(收入 vs 消费)
X, _ = make_blobs(n_samples=300, centers=3, cluster_std=1.5, 
                  center_box=(-10, 10), random_state=42)

plt.scatter(X[:, 0], X[:, 1], s=30)
plt.title("用户收入 vs 月消费(无标签)")
plt.xlabel("标准化收入")
plt.ylabel("标准化月消费")
plt.show()

1️⃣ 聚类实战:K-Means 用户分群

python 复制代码
from sklearn.cluster import KMeans

# 使用K-Means聚类(假设分3群)
kmeans = KMeans(n_clusters=3, random_state=42)
y_pred = kmeans.fit_predict(X)

# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred, cmap='viridis', s=30)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], 
            c='red', marker='x', s=200, linewidths=3, label='聚类中心')
plt.title("K-Means 用户分群结果")
plt.legend()
plt.show()

# 输出:每个用户属于哪一类(0, 1, 或 2)
print("前5个用户的群组:", y_pred[:5])

🔍 业务解读

  • 群0:高收入高消费 → "高价值客户"
  • 群1:低收入低消费 → "价格敏感型"
  • 群2:高收入低消费 → "节俭型高净值客户"

2️⃣ 降维实战:PCA 数据压缩与可视化

python 复制代码
from sklearn.decomposition import PCA
from sklearn.datasets import load_digits

# 加载手写数字(64维 → 2维)
digits = load_digits()
X_digits = digits.data  # shape: (1797, 64)

# PCA降到2维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_digits)

# 可视化(按真实标签着色,仅用于观察效果)
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=digits.target, cmap='tab10', alpha=0.6)
plt.colorbar()
plt.title("手写数字PCA降维(2D可视化)")
plt.xlabel("第一主成分")
plt.ylabel("第二主成分")
plt.show()

# 查看信息保留率
print("前2个主成分保留方差比例:", pca.explained_variance_ratio_.sum())  # ≈ 28%

💡 提示:实际应用中可保留95%方差:

python 复制代码
pca = PCA(n_components=0.95)  # 自动选择维度

3️⃣ 异常检测实战:Isolation Forest 识别异常用户

python 复制代码
from sklearn.ensemble import IsolationForest

# 在用户数据中加入几个明显异常点
X_with_outliers = np.vstack([X, [[20, 20], [-15, -15], [18, -12]]])

# 使用Isolation Forest
iso_forest = IsolationForest(contamination=0.1, random_state=42)
outlier_labels = iso_forest.fit_predict(X_with_outliers)  # 1=正常, -1=异常

# 可视化
plt.scatter(X_with_outliers[outlier_labels == 1, 0], 
            X_with_outliers[outlier_labels == 1, 1], 
            c='blue', label='正常用户', s=30)
plt.scatter(X_with_outliers[outlier_labels == -1, 0], 
            X_with_outliers[outlier_labels == -1, 1], 
            c='red', label='异常用户', s=100, marker='x')
plt.title("异常用户检测(Isolation Forest)")
plt.legend()
plt.show()

优势:无需假设数据分布,对高维数据有效!


🎯 本章总结

任务 目标 关键算法 输出形式
聚类 分组相似样本 K-Means, DBSCAN 群组标签(0,1,2...)
降维 压缩特征维度 PCA, t-SNE 低维表示(如2D坐标)
异常检测 找出离群点 Isolation Forest, One-Class SVM 正常/异常标签

💡 无监督学习的核心价值:

  1. 探索未知:在没有先验知识时理解数据结构
  2. 预处理利器:为监督学习提供特征工程(如聚类ID作为新特征)
  3. 自动化洞察:无需人工标注,直接生成业务分群

🚀 建议

掌握K-Means和PCA后,可深入:

  • 聚类评估指标(轮廓系数、Calinski-Harabasz指数)
  • 非线性降维(t-SNE, UMAP)
  • 半监督学习(结合少量标签提升无监督效果)

资料关注

公众号:咚咚王

gitee:https://gitee.com/wy18585051844/ai_learning

《Python编程:从入门到实践》

《利用Python进行数据分析》

《算法导论中文第三版》

《概率论与数理统计(第四版) (盛骤) 》

《程序员的数学》

《线性代数应该这样学第3版》

《微积分和数学分析引论》

《(西瓜书)周志华-机器学习》

《TensorFlow机器学习实战指南》

《Sklearn与TensorFlow机器学习实用指南》

《模式识别(第四版)》

《深度学习 deep learning》伊恩·古德费洛著 花书

《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》

《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》

《自然语言处理综论 第2版》

《Natural-Language-Processing-with-PyTorch》

《计算机视觉-算法与应用(中文版)》

《Learning OpenCV 4》

《AIGC:智能创作时代》杜雨+&+张孜铭

《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》

《从零构建大语言模型(中文版)》

《实战AI大模型》

《AI 3.0》

相关推荐
智驱力人工智能5 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
qq_160144875 小时前
亲测!2026年零基础学AI的入门干货,新手照做就能上手
人工智能
Howie Zphile5 小时前
全面预算管理难以落地的核心真相:“完美模型幻觉”的认知误区
人工智能·全面预算
人工不智能5775 小时前
拆解 BERT:Output 中的 Hidden States 到底藏了什么秘密?
人工智能·深度学习·bert
盟接之桥5 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
kfyty7255 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
h64648564h5 小时前
CANN 性能剖析与调优全指南:从 Profiling 到 Kernel 级优化
人工智能·深度学习
数据与后端架构提升之路5 小时前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全
忆~遂愿5 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
Liue612312315 小时前
YOLO11-C3k2-MBRConv3改进提升金属表面缺陷检测与分类性能_焊接裂纹气孔飞溅物焊接线识别
人工智能·分类·数据挖掘