2

好的。現在這個問題很難。我會給你一個例子。如何計算分類錯誤率

現在左邊的數字是我的算法,分類和權數是原班數

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成一個班級。那麼以上例子中的錯誤是什麼?

或者這裏另一個例子

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

在上面的例子中左側的數字是我的算法,分類和正確的數字是原來的類ID。從上面可以看出,它錯過了分類3產品(我正在分類相同的商業產品)。那麼在這個例子中,錯誤率是多少?你會如何計算。

這個問題相當困難和複雜。我們已經完成了分類,但我們無法找到正確的算法計算成功率:D

回答

3

這裏的一個稍長的例子,具有10級輸入的類 「0」 的實confuson矩陣 - 「9」 (手寫體數字), 和10個輸出簇標記的A - J.

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
但是這裏丟棄有用的信息— 在這裏,E和J都說「6」,沒有集羣說「9」。

因此,將混淆矩陣的每一列中的最大數字加起來除以總數。
但是,如何計算重疊/丟失簇, 像2「6」,沒有「9」在這裏?
我不知道通常商定的方式 (懷疑在實際中使用Hungarian algorithm )。

底線:不要丟棄信息;看看整個混淆矩陣。

NB這樣的「成功率」對於新數據會很樂觀!習慣上將數據分成說2/3「訓練組」和1/3「測試組」, 訓練例如僅2/3的k-means,
然後測量測試集—上的混淆/成功率,通常比單獨訓練集更差。
可以說更多;見例如 Cross-validation

0

如果您想評估算法的性能,您必須定義錯誤標準,所以我不確定究竟是什麼你問。在某些聚類和機器學習算法中,您可以定義錯誤度量並將其最小化。

看看這個 https://en.wikipedia.org/wiki/Confusion_matrix 得到一些想法

+0

我要求的標準。 – MonsterMMORPG 2012-04-08 23:10:56

0

你必須定義指標來衡量自己的錯誤。在你的情況,一個簡單的方法應該是找到你的產品的屬性映射爲

p = properties(id) 

其中id是產品ID,並p很可能是不同性質的每個條目的向量。然後,可以定義兩種產品之間的誤差函數e(或距離)作爲

e = d(p1, p2) 

當然,每個屬性必須進行評估,以在該功能的一個數字。那麼這個錯誤函數可以用於分類算法和學習。

在你的第二個例子中,你認爲你將這對(203 7)視爲成功的分類,所以我認爲你自己已經有了一個指標。你可能會更具體地獲得更好的答案。

+0

其實我在問這個問題的指標。我們需要用我們的術語來定義我們的錯誤成功率,並且我正在詢問你的想法如何定義。 – MonsterMMORPG 2012-04-08 23:10:42

+0

所以,我只在這裏描述了一般的想法。產品的屬性可以是其類型或價格。如果人們青睞相同價格的產品,則可以簡單地使用d(price1,price2) – unsym 2012-04-08 23:13:37

+0

我認爲您不能正確理解問題。想象一下,你有100種不同的產品,每種產品都在10個不同的商家銷售,總共生產1000種產品。因此,您正在嘗試對每個產品進行正確分組,但將算法歸類爲上述示例。那麼你如何計算算法分類成功率。 – MonsterMMORPG 2012-04-08 23:17:10