使均方根误差最小化的均值往往不是实际情况
众所周知,均值 E(Y |X) 使均方根误差 (RMSE) 最小化。
你是对的,理论平均值E(Y|X)最小化预测的均方根误差(与分布无关)。因此,如果最小化预测的均方误差是您的目标并且您知道理论均值,那么您确实不需要关心分布(除了分布是否存在均值和方差)。
然而,这个理论平均值通常是未知的,我们使用一个估计值来代替。或者我们想要最小化除均方误差之外的其他东西。在这些情况下,您通常需要使用有关误差分布的假设来确定要使用的估计器(以确定哪个是最优的)。
所以一个典型的情况是
- 从人群中收集数据
- 根据数据计算人口分布的估计值
- 直接使用估计(例如根据估计做出一些决定)
- 或使用估计值进行预测(在这种情况下,由于总体随机性导致的误差高于对该总体估计值的随机性)
你所描绘的情况是通往最后一点的捷径,并假设我们知道人口。很多时候情况并非如此。(这仍然可以是一个实际的案例,例如如果我们有这么多的信息,一个大样本,这样我们就可以高精度地估计人口分布,而预测的最大误差是由于人口的随机性)
如果机器学习方法的预测值为E(y|x),为什么要为不同的成本函数烦恼y|x?
机器学习方法不提供E(y|x)它提供了一个估计E(y|x). 估计器和预测器的好坏取决于总体的基本分布(我们可以从中推断出估计器和预测器的样本分布)。
示例:假设我们希望估计拉普拉斯分布人口的位置参数(并将其用于预测)。在这种情况下,样本中位数是比样本均值更好的估计量(即,样本中位数的分布将比样本均值的分布更接近真实参数。估计的误差会更小)。

图片:展示样本中位数可以是比样本均值更好的估计量。请注意,分布更集中于真实位置参数(在此示例中为 0)。
因此,基于误差是拉普拉斯分布的假设,我们应该决定使用样本中位数作为估计器和预测器,而不是样本均值。
用于拟合的成本函数和用于评估的成本函数之间的差异。
另一个潜在问题是关于成本函数的差异。
用于执行拟合的成本函数可以不同于作为目标的成本函数。
在前面的拉普拉斯分布示例中,目标可能是最小化估计/预测的预期均方误差。但是,我们发现通过最小化残差的平均绝对误差来优化这个目标的估计。
一个相关的问题是:用于拟合与调整参数选择的损失函数之间的不匹配是否合理?在那个问题中,您通过交叉验证最小化(目标)成本函数,但在答案中证明,通过与误差分布相关的成本函数执行拟合(在训练期间)仍然是好的测量值。
从聊天中引用
“我的问题与如何选择一个估计器或另一个估计器有关(即一个损失函数而不是另一个损失函数)”
估计量可以表示为数据/样本的某些成本函数的 argmin(例如,样本均值使残差平方和最小化,样本中位数使绝对残差之和最小化)。
但是,这是与用于描述估计器性能的成本函数不同的成本函数。
所以这就是我们为成本函数而烦恼的原因。这些成本函数使我们能够评估估计器的性能。我们可以计算/估计估计器 X 产生特定错误的频率,并将其与估计器 Y 产生特定错误的频率进行比较。并且由于存在许多大小的错误,我们通过一些成本函数对所有可能性进行加权和。
例如,估计器 X 和 Y 的误差分布可能是(一个简单的例子)
Error size. -2 -1 0 1 2
frequency for estimator X 0.00 0.25 0.50 0.25 0.00
frequency for estimator Y 0.02 0.18 0.60 0.18 0.02
估计器 X 具有更高的平均绝对误差(误差为±1平均绝对误差为 0.5。对于估计量 Y,它是 0.44)。
然而,就预期均方误差而言,估计量 X(0.5)低于估计量 Y(预期均方误差 0.52)。
要计算这些比较,您需要能够知道/估计估计量的样本分布(就像在上面的示例中,这是针对拉普拉斯分布以及样本均值和样本中位数完成的)和一些成本函数来比较这些分布。
(在拉普拉斯分布和样本均值与样本中值的情况下,样本中值随机占优势,对于任何凸成本函数,样本中值都将优于样本均值,因此您并不总是需要知道评估成本函数的详细信息。相关问题:在所有合理损失(评估)函数下最优的估计器)
用于创建图形的 R 代码
### generate data
set.seed(1)
s <- 100000
n <- 5
x <- matrix(L1pack::rlaplace(s*n,0,1),s)
medians <- apply(x,1,median)
means <- apply(x,1,mean)
### compute frequency histogram
breaks <- seq(floor(min(medians,means)),ceiling(max(medians,means)), 0.02)
hmedians <- hist(medians, breaks = breaks)
hmeans <- hist(means, breaks = breaks)
### plot results
plot(hmedians$mids, hmedians$density, type = "l",
ylim=c(0,1.5), xlim = c(-1.4,1.4),
xlab = "estimate value", ylab = "density / histogram",
lty=2)
lines(hmeans$mids, hmeans$density)
lines(c(0,0),c(0,2),lty=1,col="gray")
title("samples of size 5 from Laplace distribution
comparision of sample distribution for different estimates", cex.main = 1)
legend(-1.4,1.5, c("sample median","sample mean"), lty = c(2,1), cex = 0.7)