2

dlib を使い始めたのですが、カーネルの実装方法を理解するのに苦労しています。このクラスタリング方法を知っているので、k-kmeans アルゴリズムから始めました。ただし、カーネルがどこで計算されているかわかりません。入力データは行列 (カーネルではない) であり、アルゴリズムがデータをカーネルに変換することはありません。正方行列を返すカーネル クラスを期待します。しかし、私はこのようなものを見たことがありません!dlib を使用して、カーネルを使用したクラスタリング アルゴリズムを実装したいと考えています。dlib は、そのための優れたソリューションに思えます。それがどのように実装されているか、またはそれがどのように機能するかを説明できるドキュメントを持っている人はいますか?

ご協力いただきありがとうございます!

4

2 に答える 2

1

カーネルは基本的に、2 つの入力サンプルを取り、1 つの数値を出力する単なる関数です。そうです、N 個のサンプルに対して可能なすべてのカーネル関数出力の N 行 N 列の行列を計算するコードが表示されることがあります。ただし、これは O(N^2) RAM を必要とするため、やや単純な実装戦略です。そのため、実際のカーネル メソッド ソフトウェアのほとんどは、この問題を回避するために、何らかの遅延評価またはキャッシュ戦略を使用しています。

dlib のカーネル K-means 実装では、これはkcentroidオブジェクトで行われます。kcentroid の内部では、多くの場所でカーネル関数を呼び出し、すべての「カーネル関連」を実行していることがわかります。kcentroid のドキュメントを読んで、その機能を理解することができます。ただし、カーネル メソッドを使い始めたばかりの場合は、このテーマに関する本を入手する必要があります。次のいずれかを選択することを強くお勧めします。

  • カーネルによる学習: サポート ベクター マシン、正則化、最適化、およびその先 (Bernhard Schlkopf および Alexander J. Smola 著)
  • John Shawe-Taylor と Nello Cristianini によるパターン分析のためのカーネル メソッド
于 2014-02-05T19:42:21.163 に答える