2014-01-30 57 views
1

我開始使用dlib,並且很難理解內核的實現方式。我開始使用k-kmeans算法,因爲我知道這種聚類方法。但是我不知道內核的計算位置。輸入數據是一個矩陣(不是內核),算法從不將數據轉換爲內核。 我期望一個內核類返回一個方形矩陣。但我沒有看到這樣的事情! 我想使用dlib實現使用內核的集羣算法,並且dlib聽起來是一個很好的解決方案。有沒有人有關於它如何實現的文檔或者可以向我解釋它如何工作?瞭解Dlib內核實現

感謝您的幫助!

回答

0

對於一組N個數據點,內核通常由NxN矩陣指定,其第(i,j)個條目給出數據點i和數據點j之間的內核值。只要矩陣是對稱的且正定的,這對內核方法是有效的,對於真實的內核來說這保證是真實的。

+0

好的,如果我明白你說的話,在提供的例子中,k-kmeans並沒有用作內核,但如果提供了內核,它的工作原理是一樣的嗎?那麼我怎麼才能從輸入的數據中獲取內核呢? – user1595929

1

內核基本上只是一個函數,它接受兩個輸入樣本並輸出一個數字。所以是的,有時你會看到代碼,然後計算N個樣本的所有可能的核函數輸出的N×N矩陣。然而,這是一個有點幼稚的實現策略,因爲它需要O(N^2)RAM。所以大多數現實世界的內核方法軟件都使用某種延遲評估或緩存策略來避免這個問題。

在dlib中的內核K-means實現中,這是通過kcentroid對象完成的。在kcentroid中,你可以看到它在很多地方調用了內核函數,並執行所有「內核函數」。您可以閱讀kcentroid的文檔以瞭解其功能。雖然,如果你剛開始使用內核方法,那麼你真的需要得到一本關於這個主題的書。我強烈建議選擇其中之一:由伯恩哈德Schlkopf和Alexander J.斯莫拉島

  • 內核方法模式分析由約翰·肖 - 泰勒和支持向量機,規範化,優化和超越:

    • 與內核學習Nello Cristianini