You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复机器学习中随机森林与决策树的完美得分异常

训练集全满分(过拟合)+ KNN表现差的排查与解决方法

一、决策树/随机森林训练集全满分的核心原因

决策树默认不限制树的深度,会完全拟合训练数据的所有细节(包括噪声),自然会出现训练集指标全1.0的情况;随机森林作为集成模型,默认参数下若单棵树无复杂度限制,也会趋近于完全拟合训练数据,本质都是过拟合。

二、针对性解决步骤

1. 给树模型添加正则化约束(解决过拟合)

通过限制树的复杂度,避免模型过度拟合训练数据:

  • 决策树:设置最大深度、叶节点最小样本数等参数
dtc = DecisionTreeClassifier(max_depth=5, min_samples_split=10, min_samples_leaf=5, random_state=7)
  • 随机森林:除了上述参数,还可限制单棵树使用的特征数量
rfc = RandomForestClassifier(max_depth=8, min_samples_split=10, max_features='sqrt', n_estimators=100, random_state=7)

调整后训练集指标会降到合理范围,同时测试集的泛化表现大概率会提升。

2. 修正数据预处理流程(解决KNN表现差+数据泄露)

你的代码里存在几个预处理错误,直接影响模型效果:

  • 插补器拟合逻辑错误:不能用整个数据集拟合插补器,会导致数据泄露,正确流程是拆分数据集后,只在训练集上拟合插补器,再转换训练集和测试集:
# 先拆分数据集
features = data.drop(["Status"], axis=1)
outcome_variable = data["Status"]
x_train, x_test, y_train, y_test = train_test_split(features, outcome_variable, test_size=0.20, random_state=7)

# 仅在训练集拟合插补器
imp_median.fit(x_train)
x_train_median = imp_median.transform(x_train)
x_test_median = imp_median.transform(x_test)
  • 缩放步骤重复:minmaxScale.fit_transform(data_median.values)后又重复调用transform,导致数据范围异常,KNN对特征尺度极度敏感,这会直接破坏其距离计算逻辑。正确缩放流程:
minmaxScale = MinMaxScaler()
x_train_scaled = minmaxScale.fit_transform(x_train_median)
x_test_scaled = minmaxScale.transform(x_test_median)
  • 列名不一致:代码中把T Stage改成了T Stage (多了空格),可能导致后续特征匹配混乱,需统一所有列名。

3. 规范类别不平衡处理(结合SMOTE)

从KNN极低的召回率来看,数据集大概率存在类别不平衡(比如存活样本远多于死亡样本)。你用了SMOTE,但要注意:

  • SMOTE只能应用在训练集上,绝对不能碰测试集,避免数据泄露;
  • 应用SMOTE后,需重新训练所有模型,此时KNN的少数类召回率会得到改善,树模型也需要重新调整正则化参数。

三、额外排查点

  1. 确认目标变量Status是二分类编码(如0/1),无异常值;
  2. 检查是否存在与Status完全相关的特征(比如某特征的取值直接决定目标变量),这种情况会导致树模型直接拟合该特征,出现训练集全满分;
  3. 调整KNN的n_neighbors参数(比如尝试3、7、10),KNN默认值未必适配你的数据集。

四、验证效果的正确流程

  1. 先修正预处理逻辑,确保无数据泄露;
  2. 调整树模型的正则化参数,观察训练集与测试集的指标差距;
  3. 在训练集上应用SMOTE后,重新训练所有模型,对比指标变化;
  4. 用10折交叉验证的结果评估模型稳定性,而非单次拆分的测试集结果。

内容的提问来源于stack exchange,提问作者Kat_9213

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:20:49