核回归
核回归(kernel regression)利用预测位置附近的数据估计条件均值,而不预先规定整条回归曲线必须是直线或某个固定次数的多项式。附近样本得到较大权重,远处样本得到较小权重;带宽控制“附近”的范围。这里重点讨论局部常数的Nadaraya–Watson估计,并与边界处更灵活的局部线性方法比较。
局部加权平均
设观测对 独立同分布,研究目标为 ;需要相应条件期望存在。给定非负核函数 和带宽 ,定义 分母须为正。通常核的积分归一化为一,但在这个比值中,共同的正常数和 会约掉;不能据此省略核密度估计中的归一化。这里估计的是响应条件均值;核密度估计根据样本位置构造概率密度,曲线下的区间面积对应概率,目标与核回归不同。[1]
高斯核采用 。它处处为正,因此在精确算术下,非空有限样本的分母总正;紧支撑核在远离数据的地方可能分母为零,应报告无有效邻域而非擅自填零。
由局部最小二乘得到公式
在目标点 附近,暂用一个常数 近似条件均值,最小化 求导得到 。若权重和为正,二阶导数 ,所以唯一最小点就是上面的加权平均。这一推导解释了“局部常数”的含义:在每一个目标点重新拟合常数,不是用一个常数描述全部样本。
由于 ,估计值位于观测响应的最小值与最大值之间。这个性质有利于稳定,却也说明它不会自动外推一条在数据之外持续上升的直线。
三个点的带宽比较
取输入 ,响应 ,估计 处的条件均值。令 ,三个未归一化权重为 ,故 当 ,,得到约一点五四八一;当 ,,得到约一点二一三零。带宽减小,使中心点权重更大;带宽很大时,三个权重趋于相等,预测趋于样本均值 。
变式。 将中心响应从一改成二,保持 ,则 。两端平均也是二,所以此时中心预测恰好等于二;这来自本例的对称平衡,不表示任意样本都能被核回归精确插值。
边界偏差与局部线性修正
另取无噪声直线数据 ,预测最左端 ,带宽为一。局部常数估计为 真实直线在零处等于零,但右侧邻居把局部平均拉高。数据支持边界缺少另一侧样本,正是这种误差的来源。
局部线性方法在每个 处改为最小化 并以 作为该点预测。令 ,正规方程是 若加权设计满秩,且数据恰为 ,选 就使每项残差为零;唯一性保证预测精确重现这条直线。前面的边界例由此得到零。局部线性估计改善边界表现,但可能产生负的等价权重,预测也不再一定落在响应范围内。[1]
稳定权重的Python实现
下面计算一维高斯核局部常数预测。先减去最大对数权重,再取指数,避免所有权重同时下溢到零;对极端到不能形成有限平方距离的输入,明确拒绝计算。原始单位差异极大时,应先作合适的尺度变换。
import math
def gaussian_kernel_mean(xs, ys, point, bandwidth):
x, y = list(map(float, xs)), list(map(float, ys))
if not (len(x) == len(y) and len(x) > 0
and all(math.isfinite(v) for v in x+y+[point, bandwidth])
and bandwidth > 0):
raise ValueError("finite paired data and positive bandwidth required")
log_weights = []
for xi in x:
z = (point-xi)/bandwidth
value = -0.5*z*z
if not math.isfinite(value):
raise ValueError("rescale coordinates before computing distances")
log_weights.append(value)
largest = max(log_weights)
weights = [math.exp(v-largest) for v in log_weights]
total = math.fsum(weights)
return math.fsum((w/total)*yi for w, yi in zip(weights, y))
print(gaussian_kernel_mean([0, 1, 2], [0, 1, 4], 1, 1))
print(gaussian_kernel_mean([0, 1, 2], [0, 1, 4], 1, 0.5))
输出约一点五四八一和一点二一三零。单个目标点时间和附加存储均为 ;对 个点逐个调用需 时间,原输入不会修改。高斯核处处为正不表示远离训练数据的预测可靠,稳定的浮点运算也不能创造数据支持。
带宽选择与适用范围
小带宽能保留局部变化,也会使预测更多依赖少量带噪声观测;大带宽降低局部波动,却会抹平峰、谷及边界结构。这是偏差和方差之间的取舍。可用训练折内部的交叉验证选择带宽;时间序列或同组记录不能不加区分地随机拆分,前面的独立抽样解释也需相应修改。
多维核可把每个坐标的距离组合起来,但维数增加后,局部邻域很快变得稀疏。核回归不适合把缺少相似样本的高维预测包装成精确估计,也不能仅凭平滑曲线认定因果关系。先检查散点、数据覆盖、带宽敏感性和留出误差,通常比只展示一条平滑线更有信息。