2014-10-31 121 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