机器学习中的两大核心算法:k 均值聚类与集成学习

一、聚类算法:从 "物以类聚" 到 k 均值

1. 聚类:无监督学习的 "分类术"

聚类是无监督学习的典型任务 ------ 当我们面对没有标签的数据时,如何根据数据的 "相似性" 将其自动分组?简单来说,聚类的核心思想就是 "相似的东西放在一起"。

但聚类并非易事,它的难点在于两点:一是如何评估聚类结果的好坏,二是如何调整参数以获得更优分组。

2. 距离度量:判断 "相似性" 的标尺

要判断数据是否相似,首先需要定义 "距离"。常用的距离度量有两种:

欧式距离 :最直观的距离度量,即多维空间中两点的直线距离。

二维空间公式:d=(x1​−x2​)2+(y1​−y2​)2​

n 维空间中,它是各维度差值平方和的平方根,衡量的是两点的绝对距离。

曼哈顿距离 :也叫 "出租车距离",指两点在坐标轴上的绝对轴距总和。

平面上公式:d=∣x1​−x2​∣+∣y1​−y2​∣,类似出租车在城市网格中行驶的路径长度。

3. k 均值算法:聚类中的 "快手"

k 均值(k-means)是最经典的聚类算法之一,以简单快速著称。它的核心步骤如下:

初始化:随机选择 k 个样本作为初始聚类中心;

分配样本:计算每个样本到 k 个中心的距离,将样本分到最近的中心所在的组;

更新中心:计算每个组内所有样本的均值,作为新的聚类中心;

迭代收敛:重复步骤 2 和 3,直到聚类中心不再明显变化,输出最终分组。

4. 如何评估聚类效果?CH 指标来帮忙

聚类结果的好坏需要量化评估,CH 指标是常用工具:

它通过计算 "类内紧密度"(类中样本与中心的距离平方和)和 "类间分离度"(各类中心与总中心的距离平方和)来综合判断;

CH 值越大,说明类内越紧密、类间越分散,聚类效果越好。

5. k 均值的优缺点与实践

优点:简单易实现,计算速度快,适合处理常规规模的数据集;

缺点:需要提前确定 k 值(这往往是个难题),对初始聚类中心敏感,难以识别非凸形状的簇。

代码小示例

sklearnmake_blobs生成聚类数据集,再用KMeans聚类:

python运行

复制代码
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans

# 生成数据集:100个样本,2个特征,3个簇
X, y = make_blobs(n_samples=100, n_features=2, centers=3, random_state=42)

# k均值聚类
kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(X)

二、集成学习:"三个臭皮匠顶个诸葛亮"

1. 集成学习的核心思想

集成学习的灵感来自生活:面对复杂问题,多个专家的综合判断往往比单个专家更可靠。在机器学习中,它通过构建并组合多个 "个体学习器",实现比单个模型更好的性能。

2. 如何组合多个学习器?三大策略

简单平均法 :直接对多个学习器的预测结果取平均(适用于回归);加权平均法 :给性能更好的学习器分配更高权重,再计算加权平均;投票法:分类任务中,"少数服从多数",以多数学习器的预测结果作为最终输出。

3. 集成学习的三大流派

根据个体学习器的生成方式,集成学习可分为三类:Bagging:并行 "投票" 的代表

Bagging 的核心是 "并行训练多个分类器,再取平均 / 投票"。它通过bootstrap 抽样(有放回地随机采样)生成不同的训练集,让每个学习器在不同数据上训练,最后综合结果。

随机森林是 Bagging 的典型代表:

"随机" 体现在两点:数据采样随机、特征选择随机;

"森林" 指由多个决策树组成,最终通过多数投票(分类)或平均(回归)输出结果。

随机森林的优势:

能处理高维数据,无需手动特征选择;

可评估特征重要性,便于分析;

并行化训练,速度快。

代码中常用RandomForestClassifier(分类)和RandomForestRegressor(回归),关键参数包括树的数量n_estimators、是否使用袋外数据评估oob_score等。

Boosting:串行 "纠错" 的高手

Boosting 与 Bagging 不同,它的个体学习器串行生成,后一个学习器会 "纠正" 前一个的错误。

AdaBoost是 Boosting 的经典算法,步骤如下:

初始化所有样本的权重(相同);

训练第一个弱分类器,根据分类结果调整样本权重:分错的样本权重提高,分对的降低;

用新权重的样本集训练下一个弱分类器,重复步骤 2;

所有弱分类器训练完成后,按其性能(误差率越低,权重越高)组合成强分类器。

Stacking:"暴力组合" 的策略

Stacking 更 "简单粗暴"------ 直接组合多种不同类型的分类器(如 KNN、SVM、随机森林等),分两阶段训练:

第一阶段:用多个基础分类器对数据预测,得到各自结果;

第二阶段:用第一阶段的结果作为新特征,训练一个 "元分类器",输出最终预测。

三、总结:算法的选择与实践

k 均值聚类是无监督学习中处理 "分组" 问题的利器,适合快速挖掘数据的内在结构,但需注意 k 值的选择和数据分布;集成学习则通过组合多个模型提升性能,Bagging 的随机森林适合并行高效场景,Boosting 的 AdaBoost 擅长处理不平衡数据,Stacking 则适合需要 "强强联合" 的复杂任务。