1. 程式人生 > >RBF高斯徑向基核函式-libsvm

RBF高斯徑向基核函式-libsvm


XVec表示X向量。||XVec||表示向量長度。
r表示兩點距離。r^2表示r的平方。
k(XVec,YVec) = exp(-1/(2*sigma^2)*(r^2))
             = exp(-gamma*r^2)...... 公式-1
這裡, gamma=1/(2*sigma^2)是引數, r=||XVec-YVec||
實際上,可看作是計算2個點X與Y的相似性。很多參考書上,把YVec寫作XVec',即 k(XVec, XVec'),也是一樣的含義:兩點相似性。由於Matlab上面XVec'代表XVec的轉置向量(XVec)T,所以,為規避歧義,我記作k(XVec,YVec)。如:LibSVM程式碼,機器學習經典教材《Pattern Recognition and Machine Learning -Bishop》P312.(三大牛人鉅著: Michael I. Jordan,加州大學伯克利分校計算機系/Jon Kleinberg,康奈爾大學計算機系/Bernhard Schölkopf德國蒂賓根馬普所)。
r是半徑(radial),這也是徑向基核函式(radial basis function)名稱的由來。


很容易,寫出高斯RBF matlab程式碼:
r = norm(XVec-YVec, 2); % L2範數嘛
或者: r = sum((XVec-YVec).^2)^(1/2);
k = exp(-gamma*r^2);


假設X與Y矩陣的每一行是一個樣本,如何求得K(X,Y)?
假若X = train_data是訓練資料, K(X,X)是訓練核矩陣,可拿去LibSVM做自定義核訓練。當然,這裡只是童鞋們的一個練習。LibSVM svmtrain有RBF核(-t 2)。
假若X = test_data 是測試資料, Y = train_data 是訓練資料, 那麼 K(X,Y)是測試核矩陣了。(svmpredict)


MatLab下,核矩陣怎麼求更高效?去掉for迴圈!
推導下。
MatLab下,X'代表X的轉置矩陣。
r^2 = ||XVec - YVec||^2
    = ||XVec||^2 + ||YVec||^2 - 2*XVec*YVec'
    = XVec*XVec' + YVec*YVec' - 2*XVec*YVec'
r^2 = repmat( sum(X.^2,2), 1, size(Y,1) ) ...
+ repmat( sum(Y.^2,2), 1, size(X,1) )' ...
- 2*X*Y' ;
代入公式-1, 得到高斯徑向基RBF核矩陣KRBF = K(X, Y):
KRBF = exp(-gamma*r^2); % RBF核矩陣
在LibSVM中,gamma預設是:1/num_features , 即X與Y的列數。
假若X是m×d矩陣, Y是n×d矩陣,則KRBF = K(X, Y)是m×n矩陣;
則KRBF = K(Y, Y)是n×n矩陣。
例如:Corel5k圖片庫,提取出Gist全域性視覺特徵,訓練資料4500×512矩陣Y,測試資料499×512矩陣X,特徵數num_features = 512,那麼 預設值 gamma = 1/512;


高斯徑向基RBF核矩陣KRBF 寫成MatLab函式:
function KMatrix = getKRBF(X, Y, gamma)
r2 = repmat( sum(X.^2,2), 1, size(Y,1) ) ...
+ repmat( sum(Y.^2,2), 1, size(X,1) )' ...
- 2*X*Y' ; % r^2(r的平方)
KMatrix = exp(-gamma*r2);

相關推薦

RBF徑向函式-libsvm

XVec表示X向量。||XVec||表示向量長度。 r表示兩點距離。r^2表示r的平方。 k(XVec,YVec) = exp(-1/(2*sigma^2)*(r^2))              = exp(-gamma*r^2)...... 公式-1這裡, gamma

RBF徑向函式

實際上,可看作是計算2個點X與Y的相似性。很多參考書上,把YVec寫作XVec',即 k(XVec, XVec'),也是一樣的含義:兩點相似性。由於Matlab上面XVec'代表XVec的轉置向量(XVec)T,所以,為規避歧義,我記作k(XVec,YVec)。如:LibSVM程式碼,機器學習經典教材《Pat

函式&徑向函式 (Radial Basis Function)--RBF

1.核函式 1.1核函式的由來 -----------還記得為何要選用核函式麼?----------- 對於這個問題,在Jasper's Java Jacal部落格《SVM入門(七)為何需要核函式

【雜談】RBF徑向函式&徑向網路

徑向基函式 徑向基函式(Radical Basis Function,RBF)方法是Powell在1985年提出的。所謂徑向基函式,其實就是某種”沿徑向對稱”的標量函式。通常定義為空間中任一點x到某一中心c之間歐氏距離的單調函式,可記作k(||x-c||),其

機器學習基礎(二十九)—— 徑向函式RBF

儘管最佳核函式的選擇一般與問題自身有關,但對普遍問題還是有規律可循的,建議初學者在通常情況下,優先考慮徑向基核函式(RBF): K(x,y)=exp(−γ∥x−y∥2) 主要基於以下考慮: (1

徑向函式 (Radial Basis Function)–RBF

論文中又提到了RBF,雖然是個簡單的核函式,但是也再總結一下。關於SVM中的核函式的選擇,比較簡單和應用比較廣的是RBF。 所謂徑向基函式 (Radial Basis Function 簡稱 RBF), 就是某種沿徑向對稱的標量函式。 通常定義為空間中任一點x到某一中心x

機器學習--支援向量機(六)徑向函式RBF)詳解

前面講解了什麼是核函式,以及有效核函式的要求,到這裡基本上就結束了,很多部落格也是如此,但是呢這些只是理解支援向量機的原理,如何使用它講解的卻很少,尤其是如何選擇核函式更沒有人講,不講也是有原因的,因為核函式的選擇沒有統一的定論,這需要使用人根據不同場合或者不同問題選擇核函式

python實現徑向函式

1、生成資料集(雙月資料集) class moon_data_class(object): def __init__(self,N,d,r,w): self.N=N self.w=w self.d=d

機器學習-RBF函式處理

SVM高斯核函式-RBF優化 重要了解數學的部分: 協方差矩陣,高斯核函式公式。 個人建議具體的求法還是看下面的核心程式碼吧,更好理解,反正就我個人而言,煩躁的公式,還不如一段程式碼來的實際。本來想用java的一個叫jblas的矩陣包,但是想了想,還是自己

方框濾波、均值濾波、濾波及濾波函式

方框濾波、均值濾波、高斯濾波及濾波函式相關函式如下: void cv::boxFilter( InputArray _src,OutputArray _dst, int ddepth, Size ksize, Point anchor,

OpenCV(一)——卷積原理及程式碼實現

貼出getGaussianKernel原始碼 在smooth.cpp中 提示:Gaussian核基於 正態分佈函式設計 μ是均值,σ^2是方差 正態函式(即一維Gaussian卷積核)如下 二維卷積核通過對一維積分得到,並且μ = 0 根據如下原始碼可知

卷積濾波的實現

轉載地址  http://blog.csdn.net/dcrmg/article/details/52304446#reply http://blog.csdn.net/yangyangyang20092010/article/details/48576007  也對高斯權值

matlab 模糊非庫函式實現方式

簡單講一下原理和思路:   高斯模糊就是讓一個高斯矩陣和所要模糊的矩陣相點乘(即兩個矩陣對應位置的兩個數相乘),然後把所得矩陣的各項之和相加,即為模糊中心點的值。   所謂高斯矩陣就是由高斯函式(即

分佈概率密度函式(PDF)和累積分佈函式(CDF)

正態分佈(Normal distribution)又名高斯分佈(Gaussian distribution),是一個在數學、物理及工程等領域都非常重要的概率分佈,在統計學的許多方面有著重大的影響力。 若隨機變數X服從一個數學期望為μ、標準方差為σ2的高斯分佈,記為:X∼

二維正態分佈函式(轉)

二維高斯正態分佈函式(原創) 二維高斯正態分佈函式在很多地方都用的到,比如說在濾波中,自己編了個,但感覺IDL中應該有現成的函式??(我沒找到)。如有,請高手指點。 ;------------

matlab2D模糊的函式

function [ f_blurring ] = Func_GaussianBlurring2D( I,FWHM, Method,Pixel_Size,Pad) %   Pixel_Size = 1e-6;     %   Pixel Size [m] %   FWHM

matlab練習程式(生成多維分佈概率密度函式

clear all; close all; clc; randn('seed',0); %%一維高斯函式 mu=0; sigma=1; x=-6:0.1:6; y=normpdf(x,mu,sigma); plot(x,y); figure; %%二維或多維高斯函式 m

函式徑向函式

數學表示所謂徑向基函式 (Radial Basis Function 簡稱 RBF), 就是某種沿徑向對稱的標量函式。 通常定義為空間中任一點x到某一中心xc之間歐氏距離的單調函式 , 可記作 k(||x-xc||), 其作用往往是區域性的 , 即當x遠離xc時函式取值很

函式徑向函式 (Radial Basis Function 簡稱 RBF)詳解

轉載於 :http://blog.csdn.net/huang1024rui/article/details/51510611 1.核函式 1.1核函式的由來 -----------還記得為何要選用核函式麼?--

機器學習 徑向(Radial basis function)與RBF函式 淺析

徑向基函式(RBF)在神經網路領域扮演著重要的角色,如 RBF神經網路具有唯一最佳逼近的特性,徑向基作為核函式在SVM中能將輸入樣本對映到高維特徵空間,解決一些原本線性不可分的問題。       本文主要討論:        1. 先討論核函式是如何把資料對映到高維空