1. 程式人生 > >核模型(核密度估計)

核模型(核密度估計)

1、核模型(Kernel function)

線上性模型中,多項式或三角函式等基函式與訓練樣本{(xi,yi)}毫不相關的。下面我們介紹一種模型,在基函式設計的時候會使用到輸入樣本{xi}。

note:是在基函式設計的時候使用到樣本,那麼訓練的是什麼?下面看公式。

核模型,是以使用被稱為 核模型的 二元函式 K(.,.),
在這裡插入圖片描述
的線性結合方式加以定義的。
在這裡插入圖片描述
上面的theta就是我們要學習的物件 ,注意 theta為一個向量,可以表述為下面的形式。
在這裡插入圖片描述

可以把公式中的xi看做標記點(landmark),並將樣本x和標記點之間相似特徵;這裡面可以看成一種廣義的距離(相似程度),這種距離度量的方式就稱之為核函式。

最常見的核函式是高斯核函式:
在這裡插入圖片描述
上面的 xi(有的書中寫作c)就是核函式的 標記點,也可稱之為均值;
h稱為頻寬;一般的頻寬選擇有技巧,頻寬小怎麼樣?頻寬小,擬合的比較緊湊。具體Google。
xi稱之為均值,說是均值但是選取的時候怎麼選,還是從訓練樣本中選取
下面給出核函式是如何衡量距離的?
在這裡插入圖片描述
在高斯核模型中,對各個輸入的樣本{xi}進行高斯核的學習,並把其引數 theta進行學習。

2、KDE(核密度估計)

下面是上課時候的一個作業,直接貼出出來。
作業要求:
文件中將程式的執行結果貼出,結果應包括兩個部分,第一部分是一個維的彩色KDE估計圖三(最好用MATLAB畫);第二部分是測試圖片的運動目標二值影象檢測結果(運動員用白色畫素,背景用黑色)。
程式平臺:MATLAB R2018 ;處理器:Intel®Core™i5-4210M CPU 2.6GHZ;4G記憶體。
視屏序列來源:(1)課上提供資料
(2)從https://www.bilibili.com/video/av23096534?t=97下載視屏序列; 使用Kmplayer視屏播放軟體進行連續幀的擷取(1秒3幀)。
一、演算法
核密度估計(Kernel Destiny Estimation)不利用有關資料分佈的先驗知識,對資料分佈不附加任何假定,是一種從資料集樣本本身出發研究資料分佈特徵的方法。
核密度估計函式表示推導如下:

在這裡插入圖片描述
在這裡插入圖片描述
二、MATLAB程式碼

 %KDE,目標檢測
clc
close all
N=20;%訓練集數目
h=40;   %頻寬
thr=0.000002;%閾值
train_set=cell(1,N);
par=double(15/(8*pi*N*h^3));%核函式係數
%讀取並存儲訓練集
for i=1:N     
    train_set{i}=double(imread(strcat('frame_',num2str(i),'.jpg')));   
end
test=double(imread('frame_0777.jpg'));
[m,n,d]=size(test);%影象規格
KDE=zeros(m,n);   %儲存KDE值
%利用EP核函式計算概率
tic
for i=1:N         %N張圖片,計算每張圖片KDE 
    mul=1;
    for j=1:d %d通道計算
        current_frame=train_set{i};
        temp=((current_frame(:,:,j)-test(:,:,j))./h).^2;%EP核函式
        temp=max(1-temp,0);  %EP核函式
%temp=exp(-(current_frame(:,:,j)-test(:,:,j)).^2/2/h^2);%高斯核函式
mul=mul.*temp;
End
KDE=KDE+mul;%累加一張圖片KDE
End
KDE=KDE*par;%得到KDE
toc
%繪製三維KDE圖
mesh(KDE)
colorbar
title('道路 KDE 估計圖');
xlabel('X軸');
ylabel('Y軸');
zlabel('Z軸');
%目標檢測
motion=(KDE<thr);  %閾值比較
result=mat2gray(motion); %轉換為灰度影象
figure;imshow(result);
title('道路目標檢測結果圖')

二、執行結果
下列執行結果採用基於EP核函式的KDE;(1)中為所提供的訓練集,共20幀,頻寬h選擇為40;(2)中為自己在網際網路上找的連續幀,訓練集為15幀,頻寬h為40。
在這裡插入圖片描述
在這裡插入圖片描述