吴恩达机器学习笔记六
1、随机森林
1.1 概念
随机森林(Random Forest) 是一种基于 “集成学习” 思想的模型,核心是通过 “多棵决策树协同决策”,解决单棵决策树的缺陷
1.2 随机森林的构建逻辑
“两个随机”+“投票机制”
随机森林的 “随机” 体现在两个关键步骤,正是这两个随机保证了模型的稳定性:
样本随机(随机抽样)
从原始训练集中,通过 “有放回抽样”(即同一样本可能被多次选中),生成多个子训练集(通常子训练集大小与原始集相同)。每棵决策树仅用一个子训练集训练,避免单一样本对所有树的影响。
特征随机(随机特征子集)
训练每棵决策树时,不使用所有特征,而是随机选择一个特征子集(当样本数量多时采用总特征数的√n ),仅从这个子集里选择 “最优特征” 进行节点拆分。这避免了 “强特征”(如对预测结果影响极大的特征)主导所有树的结构,让每棵树更具 “多样性”。
决策机制:少数服从多数
分类任务:所有决策树分别输出预测类别,最终结果为 “得票最多的类别”(硬投票)。
回归任务:所有决策树分别输出预测值,最终结果为 “所有预测值的平均值”。1.3鲁棒性
1.3 随机森林的鲁棒性
随机森林的鲁棒性强
鲁棒性强:扰动后预测结果变化小,模型 “抗干扰”;
鲁棒性弱:扰动后预测结果剧烈变化,模型 “敏感脆弱”。
鲁棒性的定义:在机器学习中,鲁棒性指模型对 “干扰因素” 的 “抵抗能力”—— 即当输入数据(或模型参数)发生微小扰动(如噪声、异常值、数据缺失)时,模型预测结果的变化程度。
举个例子:
若用单棵决策树预测 “客户是否贷款违约”,若训练集中混入 1 个 “收入极高但故意违约” 的异常样本,决策树可能会将 “高收入” 与 “违约” 错误关联,导致后续高收入客户被误判;
而随机森林中,这个异常样本仅会进入部分子训练集,多数树仍会基于正常数据学习 “高收入→低违约” 的规律,最终投票结果仍会倾向正确判断,抗干扰能力更强。
2、XGBoost
XGBoost 是 eXtreme Gradient Boosting(极端梯度提升)的缩写,名称中每个词都对应其核心特性:
eXtreme(极端):代表模型在 “效率、性能、泛化能力” 上的极致优化(如并行计算、正则化、缺失值处理等),是对传统梯度提升树(GBDT)的强化;
Gradient(梯度):核心思想 —— 通过 “梯度下降” 的方式最小化模型误差,每棵新树都朝着 “误差减少最快的方向”(即损失函数的负梯度方向)学习;
Boosting(提升):集成学习的一种策略 —— 模型由多棵 “弱学习器”(通常是浅决策树)串行训练,后一棵树下意识地修正前一棵的预测误差,最终通过 “加权组合” 输出结果(区别于随机森林的 “并行独立训练 + 投票”)。针对问题进行修正。
3、k均值算法
3.1 概念
K-Means算法又称K均值算法,属于聚类(clustering)算法的一种。所谓聚类,是根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,相似度不同的数据对象划分至不同类簇聚类,是一种无监督的过程,即仅有输入的对象数据,无标签数据。对应的分类是有监督过程。
3.2 原理
1.随机选择k个样本的聚类中心
2. 遍历所有的样本点,均计算到k个不同聚类中心的距离,经比较后将每个样本点划分为距离它最近的聚类中心的簇。
2.移动聚类(将聚类中心移动到所属聚类点的均值范围内)之后再查看更新聚类点的位置,直到聚中心 不再更新为止。


3.3 优化J(c)
k均值算法的核心是最小化“簇内平方和(SSE)”——sse不断优化的过程视为优化成本函数(失真函数)

- K:预设的聚类数量;
- Ck:第k个簇(包含所有被分配到该簇的样本);
- xi:第i个样本(通常是多维特征向量);
- μk:第k个簇的中心(该簇所有样本的特征均值,即 “质心”);
- ∣∣xi−μk∣∣2:样本xi到簇中心μk的欧氏距离的平方(用平方距离可避免开方运算,简化计算,且与距离的优化目标一致)。
本质就是算法的成本函数(Cost Function),其核心作用是量化 “所有样本与其所属聚类中心的相似度差异”,算法的优化目标就是最小化这个失真函数。
失真函数J(C)直接反映了聚类结果的 “紧凑性”:
- 若J(C)值越小:说明每个聚类内的样本都越靠近其中心,聚类内部的 “相似度高、离散度低”,聚类效果越好;
- 若J(C)值越大:说明存在样本远离其聚类中心,聚类内部松散,甚至可能出现 “错分”(如本应属于 A 聚类的样本被分到了 B 聚类),聚类效果差。
关键注意点
- 与 “损失函数” 的关系:K 均值的失真函数就是其成本函数(或损失函数),但与监督学习的损失函数(如交叉熵)不同,它无 “真实标签”,而是基于 “聚类内紧凑性” 的无监督指标;
- 初始中心的影响:函数J(C)是 “非凸函数”,存在多个局部最小值。算法的最终结果依赖初始聚类中心的选择(随机初始化可能陷入局部最优),因此实践中常通过 “多次随机初始化 + 选择最小J(C)” 或 “K-Means++ 初始化”(优化初始中心)来提升效果;
3.4 聚类中心

使用多次随机初始化,选择最小的成本函数J,从而找到最优的聚类中心。
ELBO——绘制成本函数J(k)的曲线,选取明显下降点作为聚类中心的数量。通常这种做法不可行,因为几乎J(K)总是随着聚类中心k的数量增多而下降。
通常选择——从需求目的出发确定聚类中心k的数量。
3.5 总结
综上所述,k均值算法属于无监督学习的一种聚类算法,无需人工标注,无 “监督反馈”,仅通过数据自我优化。让模型自己学习对样本进行聚类,输出是 “每个样本的簇归属标签”(如 1000 个用户被标记为簇 1、簇 2、簇 3),但这个标签是算法自主生成的 “伪标签”,而非真实的业务标签(如 “高价值客户”“潜力客户”)。
4、异常检测
4.1 概念
无监督学习的第二种方法——异常检测
首先输入正常数据集进行特征性学习,之后对新输入的数据进行异常判断。
4.2 密度估计
对输入的正常样本进行概率密度划分,概率越高的,可能性越大(图中分布密集的中心区域为概率最大区),并设置一个阈值,计算新样本Xtest的概率。若出现Xtest<
,则表明为异常事件。

4.3 正态分布法
使用正太分布进行概率密度估计。首先正太分布的性质如下:

其公式为:

由图像可知:正太分布的图像由均值和方差
确定。均值
时图像左右平移,方差
使图像变得高/矮。


4.4 异常检测算法步骤
首先使用正常样本分别对特征 X1、X2进行概率统计,获得整体的概率统计后,就可以直接计算 P(Xtest)判断其是否为异常事件:
1. 定义训练集,注意全部为正常样本。假设样本总数为m、特征总数为 n。
2. 对每个特征分别进行统计分析,然后将其相乘得到某样本的综合概率分布。这里假设所有特征都服从正太分布,并且相互独立。就算不独立,算法表现依旧良好:

3. 对于新的输入
,代入P()计算其概率。若P(
) <
则认为是异常事件.
如下图,将样本的数值划分到横轴上,
由公式找到值,
再由此公式找到样本与均值之间的方差,并绘制曲线。
用此图像来验证异常问题:离中心越近,越正常:离中心越远,为异常。

后面我们会来介绍如何选取合适的判断阈值 ε。
4.5 判断阈值 ε 的选取
“实数评估” 是衡量模型效果的核心方式,ε也是异常检测的模型参数。其选取直接影响模型对 "正常" 和 "异常" 的划分
【异常样本足够】三拆分:训练集、验证集、测试集。
原始训练集:10000正常样本 + 20异常样本。
训练集:6000正常样本。用于拟合正常样本的概率分布。
验证集:2000正常样本+10异常样本。用于挑选最合适的 或者改进特征。
测试集:2000正常样本+10异常样本。用于最后评估系统性能。
【异常样本极少】二拆分:训练集、验证集。
原始训练集:10000正常样本 + 2异常样本。
训练集:6000正常样本。用于拟合正常样本的概率分布。
验证集:4000正常样本+2异常样本。用于挑选最合适的 ε或者改进特征。
注1:上述“二拆分”没有“测试集”评估系统性能,可能会有“过拟合”的风险。
注2:由于训练集没有标签,所以上述依旧是“无监督学习”。
上述“验证集”、“训练集”都属于“倾斜数据集”(其本质是样本数量极端失衡的数据集,少数类往往是重点)。我们可以使用“准确率和召回率以及F1score”来判断验证集和测试集上的性能。
-
步骤:
- 用无监督模型对验证集计算每个样本的异常评分(如重构误差、密度值);
- 遍历多个候选阈值,对每个阈值计算预测结果(评分高于阈值为异常);
- 选择使 F1 分数(或其他业务关注指标)最高的阈值。
4.6 异常检测与有监督学习的对比
当引入验证集后,将异常样本标记为1、正常样本为0(即已有标签了可以用监督学习了)。但异常检测可以检测出“新异常”;有监督学习只能检测出“旧异常”。
4.7 选择恰当的特征
在“有监督学习”中,即使选取的特征没那么恰当也没关系,因为算法可以从数据集的标签中学到如何重新缩放特征。但“无监督学习”的训练集没有标签,这就意味着 相比于“有监督学习”,选择恰当的特征对于“无监督学习”来说更重要。和前面类似,改进特征的方法主要有“特征变换”、“误差分析”:
【特征变换】:寻找更合适的概率分布
若原始特征不是高斯分布,那显然会引入很大的误差,因此利用特征变化将其变为高斯分布:
见的改进方法有取对数 log ( x + c ),c 为常数;幂 x^n,n为任意实数。

【误差分析】
如果在“验证集”上表现不佳,那么也可以进行“误差分析”,分析出现错误的原因,对症下药进行改进:引入新特征、组合旧特征等。

参考博主:虎慕
更多推荐



所有评论(0)