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

无监督学习(Unsupervised Learning)详解

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


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

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

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

  • K-Means :基于距离的划分聚类。

    python 复制代码
    from sklearn.cluster import KMeans
    kmeans = KMeans(n_clusters=3).fit(X)
    labels = kmeans.labels_
  • DBSCAN:基于密度的聚类(可发现任意形状簇)。

  • 层次聚类:通过树状图(Dendrogram)展示簇的层次关系。

(2) 降维(Dimensionality Reduction)

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

  • PCA(主成分分析) :线性投影到低维空间。

    python 复制代码
    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聚类
python 复制代码
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降维
python 复制代码
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)。

    python 复制代码
    from sklearn.metrics import adjusted_rand_score
    ari = adjusted_rand_score(true_labels, cluster_labels)
  • 无标签时:轮廓系数(Silhouette Score)、Calinski-Harabasz指数。

(2) 降维评估
  • 保留方差比例(PCA的explained_variance_ratio_)。

    python 复制代码
    print(pca.explained_variance_ratio_.sum())  # 前2个主成分的累计方差

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

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

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

9. 总结
  • 无监督学习是探索数据内在结构的强大工具,尤其适用于标签缺失的场景。
  • 核心方法包括聚类、降维、关联规则和异常检测。
  • 关键挑战在于结果评估和解释,需结合业务知识验证模式合理性。
  • 进阶方向:半监督学习(结合少量标注数据)和自监督学习(自动生成标签)。
相关推荐
B1nna21 分钟前
Docker学习
学习·docker·容器
quant_19861 小时前
R语言如何接入实时行情接口
开发语言·经验分享·笔记·python·websocket·金融·r语言
小牛头#2 小时前
clickhouse 各个引擎适用的场景
大数据·clickhouse·机器学习
promising-w6 小时前
【运算放大器专题】基础篇
嵌入式硬件·学习
宝山哥哥6 小时前
网络信息安全学习笔记1----------网络信息安全概述
网络·笔记·学习·安全·网络安全
前端开发与ui设计的老司机6 小时前
从UI设计到数字孪生实战:构建智慧教育的个性化学习平台
学习·ui
X Y O7 小时前
神经网络初步学习3——数据与损失
人工智能·神经网络·学习
kngines7 小时前
【力扣(LeetCode)】数据挖掘面试题0002:当面对实时数据流时您如何设计和实现机器学习模型?
机器学习·数据挖掘·面试题·实时数据
网安INF7 小时前
深度学习中批标准化与神经网络调优
人工智能·深度学习·神经网络·机器学习
逼子格8 小时前
逻辑门电路Multisim电路仿真汇总——硬件工程师笔记
笔记·硬件工程师·multisim·电路仿真·逻辑门·硬件工程师学习·电路图