6.7 內核近似?
該子模塊包含近似于與某些內核對應的特征映射的函數,例如在支持向量機中使用它們(請參閱Support Vector Machines)。以下功能函數執行輸入的非線性轉換,可以用作線性分類或其他算法的基礎。
與使用隱式特征圖的內核技巧相比,使用近似顯式特征圖的優勢在于顯式映射更適合在線學習,并且可以極大地減少超大型數據集的學習成本。標準的內核化SVM不能很好地適應大型數據集,但是使用近似的內核圖,可以使用效率更高的線性SVM。特別是,內核映射近似與 SGDClassifier
的組合使用,使在大型數據集上進行非線性學習成為可能。
由于沒有太多使用近似嵌入工作的經驗,因此建議盡可能將結果與精確內核方法進行比較。
另請參閱: 多項式回歸:使用基本函數擴展線性模型以進行精確的多項式轉換。
6.7.1 內核近似的Nystroem方法
Nystroem
中實現的Nystroem方法是用于內核的低秩近似的通用方法。它實質上通過對評估內核的數據進行二次采樣來實現。默認情況下Nystroem
使用rbf
內核,但是它可以使用任何內核函數或預先計算的內核矩陣。n_components
參數給出了所用的樣本數-也是計算的特征的維數。
6.7.2 徑向基函數內核
RBFSampler
為徑向基函數核構造一個近似映射,也稱為Random Kitchen Sinks [RR2007]。在應用線性算法(例如線性SVM)之前,此轉換可用于顯式建模內核映射:
>>> 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
這個映射依賴于對內核值的蒙特卡洛近似。該fit
函數執行蒙特卡洛采樣,而該transform
方法執行數據映射。由于過程固有的隨機性,結果在fit
函數的不同調用之間可能會有所不同。
fit
函數有兩個參數: n_components
,是特征變換的目標維數;以及gamma
,是RBF內核的參數。n_components
越高,得到越好的內核近似,并將產生與內核SVM更相似的結果。請注意,“擬合”特征函數實際上并不取決于賦予fit
函數的數據,僅使用數據的維數。有關該方法的詳細信息,請參見[RR2007]。
對于n_components
的給定值,RBFSampler
通常不如Nystroem
準確。不過,RBFSampler
這種方法的計算成本較低,因此在較大的特征空間上更有效。

?將精確的RBF內核(左)與近似值(右)進行比較
例子:
6.7.3 加性卡方核
加性卡方核是直方圖上的核,通常在計算機視覺中使用。
此處使用的加性卡方核為
這與sklearn.metrics.additive_chi2_kernel
并不完全相同。[VZ2010]的作者更喜歡上面的版本,因為它始終是肯定的。由于內核是可添加的,因此可以將所有成分 分別處理進行嵌入。這使得有可能以規則的間隔對傅立葉變換進行采樣,而不是使用蒙特卡洛采樣進行近似。
AdditiveChi2Sampler
類實施此組件合理的確定性采樣。每個組件都采樣 次,每個輸入維數生成 個維數(兩個傅立葉變換的實數和復數部分的倍數)。在文獻中,通常將選擇為1或2,將數據集轉換為大小n_samples * 5 * n_features
(在的情況下)。
AdditiveChi2Sampler
所提供的近似特征映射可與RBFSampler
所提供的近似的特征映射相結合以產生一個近似特征映射的求冪的卡方內核。有關詳細信息請參閱[VZ2010]和[VVZ2010]中的RBFSampler
部分。
6.7.4 偏卡方核
偏斜卡方核由以下公式給出:
它具有與計算機視覺中經常使用的指數卡方核相似的屬性,但允許對特征映射進行簡單的蒙特卡洛近似。
SkewedChi2Sampler
的用法與上述RBFSampler
的用法相同。唯一的區別在于free參數,稱之為c。有關此映射的理念和數學細節,請參見[LS2010]。
6.7.5 數學細節
支持向量機或內核化的PCA之類的內核方法依賴于再現內核Hilbert空間的屬性。對于任何正定核函數(即所謂的Mercer內核),可以確保存在映射進入希爾伯特空間 ,如下
其中 ??,?? 表示希爾伯特空間中的內積。
如果一個算法(例如線性支持向量機或PCA)僅依賴于數據點的標量積,則可以使用的值,這對應于將算法應用于映射的數據點 。使用 的優勢在于無需顯式計算映射 ,從而允許任意大特征(甚至無限大)。
內核方法的一個缺點是,在優化過程中可能有必要存儲許多內核值。如果將內核分類器應用于新數據,則需要進行計算 以做出預測,可能是針對訓練集中許多不同的 。
該子模塊中的類允許近似嵌入,從而與 一起顯式生效,從而無需應用內核或存儲訓練示例。
參考文獻:
“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