【机器学习笔记 Ⅲ】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. 总结
- 无监督学习是探索数据内在结构的强大工具,尤其适用于标签缺失的场景。
- 核心方法包括聚类、降维、关联规则和异常检测。
- 关键挑战在于结果评估和解释,需结合业务知识验证模式合理性。
- 进阶方向:半监督学习(结合少量标注数据)和自监督学习(自动生成标签)。