4

大丈夫。さて、この質問はかなり難しいです。例を挙げます。

左の数字は私のアルゴリズム分類で、右の数字は元のクラス番号です

177 86
177 86
177 86
177 86
177 86
177 86
177 86
177 86
177 86
177 89
177 89
177 89
177 89
177 89
177 89
177 89

したがって、ここで私のアルゴリズムは 2 つの異なるクラスを 1 つにマージしました。ご覧のとおり、クラス 86 と 89 を 1 つのクラスにマージしました。では、上記の例のエラーは何でしょうか?

またはここで別の例

203 7
203 7
203 7
203 7
16 7
203 7
17 7
16 7
203 7

上記の例で、左の数字はアルゴリズムの分類で、右の数字は元のクラス ID です。上に見られるように、分類された 3 つの製品がありません (私は同じ商品を分類しています)。この例では、エラー率はどうなるでしょうか? どのように計算しますか。

この質問はかなり難しく複雑です。分類は終了しましたが、成功率を計算するための正しいアルゴリズムを見つけることができません:D

4

4 に答える 4

5

10 個の入力クラス "0" から "9" (手書きの数字) と、A から J のラベルが付いた 10 個の出力クラスターをもつ実際の混同行列の長い例を次に示します。

Confusion matrix for 5620 optdigits:

True 0 - 9 down, clusters A - J across
-----------------------------------------------------
      A    B    C    D    E    F    G    H    I    J
-----------------------------------------------------
0:    2         4         1       546    1
1:   71  249        11    1    6            228    5
2:   13    5        64    1   13    1       460
3:   29    2       507        20         5    9
4:        33  483         4   38         5    3    2
5:    1    1    2   58    3            480   13
6:    2    1    2       294         1         1  257
7:    1    5    1            546         6    7
8:  415   15    2    5    3   12        13   87    2
9:   46   72    2  357        35    1   47    2
----------------------------------------------------
    580  383  496 1002  307  670  549  557  810  266  estimates in each cluster

y class sizes: [554 571 557 572 568 558 558 566 554 562]
kmeans cluster sizes: [ 580  383  496 1002  307  670  549  557  810  266]

たとえば、クラスタ A には 580 個のデータ ポイントがあり、そのうち 415 個は「8」です。クラスタ B には 383 個のデータ ポイントがあり、そのうち 249 個が「1」です。等々。

問題は、出力クラスがスクランブルされ、並べ替えられていることです。それらは、次の順序で対応しています。カウントは次のとおりです。

      A    B    C    D    E    F    G    H    I    J
      8    1    4    3    6    7    0    5    2    6
    415  249  483  507  294  546  546  480  460  257

「成功率」は 75 % = (415 + 249 + 483 + 507 + 294 + 546 + 546 + 480 + 460 + 257) / 5620 であると言えます
これは有用な情報を捨ててしまいます。 「6」と言って、「9」と言うクラスターはありません。

したがって、混同行列の各列の最大数を合計し、合計で割ります。
しかし、ここでは「6」が 2 つあり、「9」はありません。
私は、一般的に合意された方法を知りません (ハンガリーのアルゴリズム が実際に使用されていることに疑いがあります)。

結論: 情報を捨てないでください。混同行列全体を見てください。

注: このような「成功率」は、新しいデータに対して楽観的です!
データをたとえば 2/3 の「トレーニング セット」と 1/3 の「テスト セット」に分割し、たとえば 2/3 だけで k-means をトレーニングして
から、テスト セットで混乱/成功率を測定するのが通例です。トレーニングセットだけで。
さらに多くのことが言えます。たとえば 、相互検証を参照してください。

于 2012-04-11T13:17:11.160 に答える
0

アルゴリズムのパフォーマンスを評価したい場合は、エラー基準を定義する必要があるため、何を求めているのか正確にはわかりません。一部のクラスタリングおよび機械学習アルゴリズムでは、エラー メトリックを定義し、最小化します。

この https://en.wikipedia.org/wiki/Confusion_matrix を見て、いくつかのアイデアを得る

于 2012-04-08T22:50:04.303 に答える
0

自分自身を測定するには、エラー メトリックを定義する必要があります。あなたの場合、簡単な方法は、製品のプロパティマッピングを次のように見つけることです

p = properties(id)

ここidで、 は製品 ID でありp、異なるプロパティの各エントリを持つベクトルである可能性があります。e次に、2 つの製品間の誤差関数 (または距離) を次のように定義できます。

e = d(p1, p2)

確かに、この関数では各プロパティを数値として評価する必要があります。次に、このエラー関数を分類アルゴリズムと学習に使用できます。

2番目の例では、ペア(203 7)を分類の成功として扱っているように見えるので、すでにメトリックを自分で持っていると思います。より良い回答を得るために、より具体的にすることができます。

于 2012-04-08T23:08:18.740 に答える
-2

分類エラー率 (CER) は 1 - 純度 ( http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html )

ClusterPurity <- function(clusters, classes) {
    sum(apply(table(classes, clusters), 2, max)) / length(clusters)
}

@john-colby のコードまたは

CER <- function(clusters, classes) {
    1- sum(apply(table(classes, clusters), 2, max)) / length(clusters)
}
于 2014-11-18T21:07:24.457 に答える