这个公式中x的含义是什么? (内核平滑)

时间:2014-10-31 06:01:06

标签: matlab

我试图在MATLAB中实现内核平滑。代码是在Alpaydin的机器学习教科书中实现的。

enter image description here

在第一个for循环中,我计算了这个表达式的k的总和'来自教科书中的第二个公式。问题是我不确定x是什么。据我所知,xt是我的数据点吗?我见过(不幸的是我丢失了链接)x是bin的一半。它是否正确?任何提示都会有所帮助。以防我附上我的部分代码,其中输入'是x。

for i=1:size(data,1)
SumKernel(i,1)=(1/sqrt(2*pi))*exp(-((((input(i,1)-data(i,1))/binsize)^2)/2));
end;

for i=1:size(data,1)
Kernel_histo(i,1) = (1/(binsize*size(data,1)))*SumKernel(i,1)
end;

2 个答案:

答案 0 :(得分:0)

  1. xt是您的数据点。

  2. x是你的查询点,即概率点(松散地)     说)您正在尝试使用您的数据点进行估算。注意     x和xt具有相同的尺寸。

  3. 有关详细信息,请参阅wiki link

答案 1 :(得分:0)

x是您想要估算平滑分布的位置。

符号&进一步解释: 鉴于x1,...xN是来自某个未知分布的数据样本,您需要估计基础概率密度函数(pdf)。因此,您选择带宽 h内核 K并使用内核估算器 p( parzen window)估算pdf。

Matlab中的示例:

%% get some samples from a random process
xt = [randn(1000,1)-2;2*randn(3000,1)+7];

%% choose kernel K and bandwith h
K = @(u) exp(-u.^2/2)/sqrt(2*pi);
h = 0.4;

%% pdf estimation (implemented in an easy-to-read way)
x = -10:0.001:30;
N = length(xt);
p = 0*x;
for t = 1:N
    p = p + K((x - xt(t))/h);
end
p = p/(N*h);

%% plot result
figure;
hold on;
histBinWidth = 1;
[histY,histX] = hist(xt,-10:histBinWidth:30);
bar(histX,histY/(N*histBinWidth));
plot(x,p,'r');

example result