6

異なる分類器(LDA、SVM、KNN)を使用して2つのクラスを含むデータセットを分類しようとしていますが、それらのパフォーマンスを比較したいと思います。事前確率を変更して、LDAのROC曲線を作成しました。

しかし、KNN分類器に対して同じことをどのように行うことができますか?

ドキュメントを検索して、いくつかの関数を見つけました。

  1. Class = knnclassify(Sample, Training, Group, k)
  2. mdl = ClassificationKNN.fit(X,Y,'NumNeighbors',i,'leaveout','On')

(a)を実行し、leave-one-out交差検定を使用して混同行列を取得できますが、ROCを作成するために事前確率を変更することはできませんか?

これまで(b)を試したことはありませんが、これにより、mdl.Priorを変更できるモデルが作成されます。しかし、混同行列を取得する方法がわかりません。

私が見逃したオプションや、ROCを取得するためにそれらの機能を完全に使用する方法を説明できる人はいますか?

4

1 に答える 1

0

k-nn 分類器の出力は、しきい値処理によって決定が導かれるスコアではなく、多数決に基づく決定のみであるため、これは確かに簡単ではありません。

私の提案: 近隣のクラスの比率に基づいてスコアを定義し、このスコアにしきい値を設定して ROC を計算します。大まかに言えば、スコアはアルゴリズムの確実性を表します。-1 (クラス -1 の最大確実性) から +1 (クラス +1 の最大確実性) の範囲です。

例: k=6 の場合、スコアは

  • 6 つの近傍すべてがクラス +1 の場合は 1。
  • 6 つの隣接ノードすべてがクラス -1 の場合は -1。
  • 半分の隣人がクラス +1 で、半分の隣人がクラス -1 の場合は 0。

各データポイントのこのスコアを計算したら、それを標準の ROC 関数に入力できます。

于 2013-01-11T16:06:39.550 に答える