机器学习核心算法笔记:集成学习与聚类算法
一、集成学习(Ensemble Learning)
1. 集成学习概述
集成学习的核心思想源于 “集体智慧”:对于复杂任务,多个学习器的综合判断通常优于单个学习器。其本质是通过构建并结合多个个体学习器,提升模型的泛化能力和稳定性。
结合策略主要包括:
- 简单平均法:对多个学习器的输出取算术平均(适用于回归任务)。
- 加权平均法:根据学习器的性能分配权重,权重非负且总和为 1,公式为 \(H(x) = \sum_{i=1}^{T} w_i h_i(x)\)(\(w_i\)为权重,\(h_i(x)\)为个体学习器输出)。
- 投票法:分类任务中采用 “少数服从多数” 原则,多数学习器预测的类别作为最终结果。
2. 集成学习分类
根据个体学习器的生成方式,集成学习可分为三类:
分类 | 核心特点 | 代表算法 | 生成方式 |
---|---|---|---|
Bagging | 个体学习器无强依赖,可并行生成 | 随机森林 | 通过 bootstrap 抽样(有放回采样)生成不同训练集,并行训练多个学习器 |
Boosting | 个体学习器强依赖,需串行生成 | AdaBoost | 根据前一轮学习器的误差调整样本权重,串行训练学习器,最终加权组合 |
Stacking | 分阶段聚合多模型 | 无固定代表 | 第一阶段用多个基础模型生成预测结果,第二阶段用新模型学习这些结果与真实标签的关系 |
3. 核心算法详解
(1)Bagging 与随机森林
Bagging 原理:全称 “Bootstrap Aggregation”,通过对原始数据集进行有放回抽样(bootstrap),生成多个不同的训练集,并行训练多个同质学习器,最终通过投票(分类)或平均(分类)输出结果,公式为 \(f(x) = \frac{1}{M} \sum_{m=1}^{M} f_m(x)\)(M为学习器数量)。
随机森林(Random Forest):
- “随机” 体现:数据采样随机(bootstrap 抽样)、特征选择随机(每个节点分裂时随机选择部分特征)。
- “森林” 体现:由多个决策树并行组成,通过多数投票确定最终分类结果。
- 优势:
- 可处理高维数据,无需预处理特征选择;
- 能评估特征重要性;
- 支持并行计算,训练速度快;
- 结果可可视化,便于分析。
- 关键参数:
n_estimators
:树的数量(默认 100);oob_score
:是否用袋外数据评估(默认 False,True 时等效交叉验证);bootstrap
:是否有放回抽样(默认 True)。
(2)Boosting 与 AdaBoost
Boosting 原理:从弱学习器(性能略优于随机猜测)开始,通过迭代调整样本权重和学习器权重,逐步强化模型性能。
AdaBoost 步骤:
- 初始化所有样本权重相等;
- 训练弱学习器,对分类错误的样本提高权重,正确样本降低权重;
- 基于更新后的样本集训练下一个弱学习器;
- 最终组合所有弱学习器,误差率低的学习器赋予更高权重。
二、k 均值聚类(k-means Clustering)
1. 聚类概述
聚类是无监督学习的核心任务,目标是将相似样本自动归为一类,核心挑战是距离度量和聚类评估。
2. 距离度量方法
- 欧式距离:衡量多维空间中两点的绝对距离,n 维空间公式为 \(d = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}\)(二维空间为 \(d = \sqrt{(x_1-x_2)^2 + (y_1-y_2)^2}\))。
- 曼哈顿距离:衡量两点在标准坐标系中的轴距总和,平面公式为 \(d(i,j) = |x_1 - x_2| + |y_1 - y_2|\)。
3. k 均值算法流程
k 均值是最经典的聚类算法,核心是通过迭代优化聚类中心实现样本分组:
- 初始化:随机选择 k 个样本作为初始聚类中心;
- 聚类分配:计算每个样本到各中心的距离,将样本指派到最近的中心所在簇;
- 更新中心:计算每个簇的样本均值,作为新的聚类中心;
- 迭代收敛:重复步骤 2-3,直至中心不再变化或达到最大迭代次数,输出最终聚类结果。
4. 聚类评估与算法特性
CH 指标:评估聚类质量的核心指标,通过类内紧密度(样本与簇中心距离平方和)和类间分离度(簇中心与总中心距离平方和)计算,值越大表示聚类效果越好(类内越密、类间越散)。
优点:
- 简单高效,时间复杂度与样本量呈线性关系,适合大规模数据集;
- 易于实现和理解。
缺点:
- 需手动指定 k 值,且对初始中心敏感;
- 难以处理非凸形状或密度差异大的簇;
- 对噪声和异常值较敏感。
5. 关键函数与参数
- 数据生成:
make_blobs()
用于生成聚类数据集,关键参数包括n_samples
(样本数)、n_features
(特征数)、centers
(类别数)、cluster_std
(类别方差)。 - 聚类实现:
KMeans()
用于执行 k 均值聚类,关键参数包括n_clusters
(簇数量)、max_iter
(最大迭代次数)、n_init
(算法运行次数)、random_state
(随机种子)。
三、总结
- 集成学习通过组合多个学习器提升监督学习性能,Bagging(随机森林)适合并行高效场景,Boosting(AdaBoost)适合逐步优化误差,Stacking 适合复杂场景的多模型融合。
- k 均值聚类是无监督学习的基础算法,通过距离度量和中心迭代实现样本分组,适合简单分布数据集,但需注意 k 值选择和聚类形状限制。