2014-10-31 117 views
0

我试图在MATLAB中实现内核平滑。代码是从Alpaydin的机器学习教科书中实现的。这个公式中x的含义是什么? (内核平滑)

enter image description here

在第一for循环中,我计算从教科书第二式“这个表达式的k的总和”。问题是我不知道什么是x。据我了解,我的数据点是正确的?我见过(不幸的是我失去了链接),x是垃圾桶的一半。它是否正确?任何提示都会有帮助。以防万一我附上我的代码的一部分,其中'输入'是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; 

回答

0
  1. 的XT的是你的数据点。

  2. x是查询点,即其概率(松散 说)你想使用你的数据点来估计点。注意 x和xt具有相同的尺寸。

查看wiki link了解详情。

0

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

符号&进一步解释: 鉴于x1,...xN这是从要估计潜在概率密度函数(PDF)一些未知分布数据样本。所以你选择一个带宽h内核K和使用核估计p(概率密度函数)来估计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