我准备了一个简短的脚本来展示我认为应该是正确的直觉。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import ensemble
from sklearn.model_selection import train_test_split
def create_dataset(location, scale, N):
class_zero = pd.DataFrame({
'x': np.random.normal(location, scale, size=N),
'y': np.random.normal(location, scale, size=N),
'C': [0.0] * N
})
class_one = pd.DataFrame({
'x': np.random.normal(-location, scale, size=N),
'y': np.random.normal(-location, scale, size=N),
'C': [1.0] * N
})
return class_one.append(class_zero, ignore_index=True)
def preditions(values):
X_train, X_test, tgt_train, tgt_test = train_test_split(values[["x", "y"]], values["C"], test_size=0.5, random_state=9)
clf = ensemble.GradientBoostingRegressor()
clf.fit(X_train, tgt_train)
y_hat = clf.predict(X_test)
return y_hat
N = 10000
scale = 1.0
locations = [0.0, 1.0, 1.5, 2.0]
f, axarr = plt.subplots(2, len(locations))
for i in range(0, len(locations)):
print(i)
values = create_dataset(locations[i], scale, N)
axarr[0, i].set_title("location: " + str(locations[i]))
d = values[values.C==0]
axarr[0, i].scatter(d.x, d.y, c="#0000FF", alpha=0.7, edgecolor="none")
d = values[values.C==1]
axarr[0, i].scatter(d.x, d.y, c="#00FF00", alpha=0.7, edgecolor="none")
y_hats = preditions(values)
axarr[1, i].hist(y_hats, bins=50)
axarr[1, i].set_xlim((0, 1))
脚本的作用:
- 它创建了不同的场景,其中两个类逐渐变得越来越可分离——我可以在这里提供一个更正式的定义,但我想你应该得到直觉
- 它在测试数据上拟合一个 GBM 回归器,并将预测值输出给训练模型
生成的图表显示了每个场景中生成的数据的外观,并显示了预测值的分布。解释:缺乏可分离性意味着预测的等于或正好在 0.5 左右。y
所有这些都显示了直觉,我想以更正式的方式证明这一点应该不难,尽管我将从逻辑回归开始——这将使数学变得更容易。

编辑 1
我猜在最左边的例子中,两个类是不可分离的,如果你设置模型的参数来过度拟合数据(例如深度树,大量的树和特征,相对较高的学习率),你仍然会得到预测极端结果的模型,对吗?换句话说,预测的分布表明模型最终拟合数据的接近程度?
假设我们有一个超深的决策树。在这种情况下,我们会看到预测值的分布在 0 和 1 处达到峰值。我们还会看到较低的训练误差。我们可以使训练误差任意小,我们可以让深度树过度拟合到树的每个叶子对应于训练集中的一个数据点,并且训练集中的每个数据点对应于树中的一个叶子的点。在训练集上非常准确的模型在测试集上表现不佳,这是过度拟合的明显迹象。请注意,在我的图表中,我确实展示了对测试集的预测,它们提供的信息要多得多。
另一个注意事项:让我们使用最左边的示例。让我们在圆圈上半部分的所有 A 类数据点和圆圈下半部分的所有 B 类数据点上训练模型。我们将有一个非常准确的模型,预测值的分布在 0 和 1 处达到峰值。测试集上的预测(下半圆中的所有 A 类点,上半圆中的 B 类点)也将是在 0 和 1 达到峰值——但它们是完全不正确的。这是一些令人讨厌的“对抗性”训练策略。尽管如此,总而言之:分布在可分离程度上有所不同,但这并不是真正重要的。