該子模塊包含近似于與某些內(nèi)核對(duì)應(yīng)的特征映射的函數(shù),例如在支持向量機(jī)中使用它們(請(qǐng)參閱Support Vector Machines)。以下功能函數(shù)執(zhí)行輸入的非線(xiàn)性轉(zhuǎn)換,可以用作線(xiàn)性分類(lèi)或其他算法的基礎(chǔ)。
與使用隱式特征圖的內(nèi)核技巧相比,使用近似顯式特征圖的優(yōu)勢(shì)在于顯式映射更適合在線(xiàn)學(xué)習(xí),并且可以極大地減少超大型數(shù)據(jù)集的學(xué)習(xí)成本。標(biāo)準(zhǔn)的內(nèi)核化SVM不能很好地適應(yīng)大型數(shù)據(jù)集,但是使用近似的內(nèi)核圖,可以使用效率更高的線(xiàn)性SVM。特別是,內(nèi)核映射近似與 SGDClassifier
的組合使用,使在大型數(shù)據(jù)集上進(jìn)行非線(xiàn)性學(xué)習(xí)成為可能。
由于沒(méi)有太多使用近似嵌入工作的經(jīng)驗(yàn),因此建議盡可能將結(jié)果與精確內(nèi)核方法進(jìn)行比較。
另請(qǐng)參閱: 多項(xiàng)式回歸:使用基本函數(shù)擴(kuò)展線(xiàn)性模型以進(jìn)行精確的多項(xiàng)式轉(zhuǎn)換。
Nystroem
中實(shí)現(xiàn)的Nystroem方法是用于內(nèi)核的低秩近似的通用方法。它實(shí)質(zhì)上通過(guò)對(duì)評(píng)估內(nèi)核的數(shù)據(jù)進(jìn)行二次采樣來(lái)實(shí)現(xiàn)。默認(rèn)情況下Nystroem
使用rbf
內(nèi)核,但是它可以使用任何內(nèi)核函數(shù)或預(yù)先計(jì)算的內(nèi)核矩陣。n_components
參數(shù)給出了所用的樣本數(shù)-也是計(jì)算的特征的維數(shù)。
RBFSampler
為徑向基函數(shù)核構(gòu)造一個(gè)近似映射,也稱(chēng)為Random Kitchen Sinks [RR2007]。在應(yīng)用線(xiàn)性算法(例如線(xiàn)性SVM)之前,此轉(zhuǎn)換可用于顯式建模內(nèi)核映射:
>>> from sklearn.kernel_approximation import RBFSampler
>>> from sklearn.linear_model import SGDClassifier
>>> X = [[0, 0], [1, 1], [1, 0], [0, 1]]
>>> y = [0, 0, 1, 1]
>>> rbf_feature = RBFSampler(gamma=1, random_state=1)
>>> X_features = rbf_feature.fit_transform(X)
>>> clf = SGDClassifier(max_iter=5)
>>> clf.fit(X_features, y)
SGDClassifier(max_iter=5)
>>> clf.score(X_features, y)
1.0
這個(gè)映射依賴(lài)于對(duì)內(nèi)核值的蒙特卡洛近似。該fit
函數(shù)執(zhí)行蒙特卡洛采樣,而該transform
方法執(zhí)行數(shù)據(jù)映射。由于過(guò)程固有的隨機(jī)性,結(jié)果在fit
函數(shù)的不同調(diào)用之間可能會(huì)有所不同。
fit
函數(shù)有兩個(gè)參數(shù): n_components
,是特征變換的目標(biāo)維數(shù);以及gamma
,是RBF內(nèi)核的參數(shù)。n_components
越高,得到越好的內(nèi)核近似,并將產(chǎn)生與內(nèi)核SVM更相似的結(jié)果。請(qǐng)注意,“擬合”特征函數(shù)實(shí)際上并不取決于賦予fit
函數(shù)的數(shù)據(jù),僅使用數(shù)據(jù)的維數(shù)。有關(guān)該方法的詳細(xì)信息,請(qǐng)參見(jiàn)[RR2007]。
對(duì)于n_components
的給定值,RBFSampler
通常不如Nystroem
準(zhǔn)確。不過(guò),RBFSampler
這種方法的計(jì)算成本較低,因此在較大的特征空間上更有效。
?將精確的RBF內(nèi)核(左)與近似值(右)進(jìn)行比較
例子:
加性卡方核是直方圖上的核,通常在計(jì)算機(jī)視覺(jué)中使用。
此處使用的加性卡方核為
這與sklearn.metrics.additive_chi2_kernel
并不完全相同。[VZ2010]的作者更喜歡上面的版本,因?yàn)樗冀K是肯定的。由于內(nèi)核是可添加的,因此可以將所有成分 分別處理進(jìn)行嵌入。這使得有可能以規(guī)則的間隔對(duì)傅立葉變換進(jìn)行采樣,而不是使用蒙特卡洛采樣進(jìn)行近似。
AdditiveChi2Sampler
類(lèi)實(shí)施此組件合理的確定性采樣。每個(gè)組件都采樣 次,每個(gè)輸入維數(shù)生成 個(gè)維數(shù)(兩個(gè)傅立葉變換的實(shí)數(shù)和復(fù)數(shù)部分的倍數(shù))。在文獻(xiàn)中,通常將選擇為1或2,將數(shù)據(jù)集轉(zhuǎn)換為大小n_samples * 5 * n_features
(在的情況下)。
AdditiveChi2Sampler
所提供的近似特征映射可與RBFSampler
所提供的近似的特征映射相結(jié)合以產(chǎn)生一個(gè)近似特征映射的求冪的卡方內(nèi)核。有關(guān)詳細(xì)信息請(qǐng)參閱[VZ2010]和[VVZ2010]中的RBFSampler
部分。
偏斜卡方核由以下公式給出:
它具有與計(jì)算機(jī)視覺(jué)中經(jīng)常使用的指數(shù)卡方核相似的屬性,但允許對(duì)特征映射進(jìn)行簡(jiǎn)單的蒙特卡洛近似。
SkewedChi2Sampler
的用法與上述RBFSampler
的用法相同。唯一的區(qū)別在于free參數(shù),稱(chēng)之為c。有關(guān)此映射的理念和數(shù)學(xué)細(xì)節(jié),請(qǐng)參見(jiàn)[LS2010]。
支持向量機(jī)或內(nèi)核化的PCA之類(lèi)的內(nèi)核方法依賴(lài)于再現(xiàn)內(nèi)核Hilbert空間的屬性。對(duì)于任何正定核函數(shù)(即所謂的Mercer內(nèi)核),可以確保存在映射進(jìn)入希爾伯特空間 ,如下
其中 ??,?? 表示希爾伯特空間中的內(nèi)積。
如果一個(gè)算法(例如線(xiàn)性支持向量機(jī)或PCA)僅依賴(lài)于數(shù)據(jù)點(diǎn)的標(biāo)量積,則可以使用的值,這對(duì)應(yīng)于將算法應(yīng)用于映射的數(shù)據(jù)點(diǎn) 。使用 的優(yōu)勢(shì)在于無(wú)需顯式計(jì)算映射 ,從而允許任意大特征(甚至無(wú)限大)。
內(nèi)核方法的一個(gè)缺點(diǎn)是,在優(yōu)化過(guò)程中可能有必要存儲(chǔ)許多內(nèi)核值。如果將內(nèi)核分類(lèi)器應(yīng)用于新數(shù)據(jù),則需要進(jìn)行計(jì)算 以做出預(yù)測(cè),可能是針對(duì)訓(xùn)練集中許多不同的 。
該子模塊中的類(lèi)允許近似嵌入,從而與 一起顯式生效,從而無(wú)需應(yīng)用內(nèi)核或存儲(chǔ)訓(xùn)練示例。
參考文獻(xiàn):
“Random features for large-scale kernel machines” Rahimi, A. and Recht, B. - Advances in neural information processing 2007,
“Random Fourier approximations for skewed multiplicative histogram kernels” Random Fourier approximations for skewed multiplicative histogram kernels - Lecture Notes for Computer Sciencd (DAGM)
“Efficient additive kernels via explicit feature maps” Vedaldi, A. and Zisserman, A. - Computer Vision and Pattern Recognition 2010
“Generalized RBF feature maps for Efficient Detection” Vempati, S. and Vedaldi, A. and Zisserman, A. and Jawahar, CV - 2010
更多建議: