私は Orange パッケージを使用しており、利用可能なチュートリアルに基づいて次のコードを作成しました。
import orange,orngTest,orngStat,orngTree,Orange
bayes = orange.BayesLearner()
tree=orngTree.TreeLearner(mForPruning=2)
bayes.name="bayes"
tree.name="tree"
data = Orange.data.Table("iris.tab")
learners=[bayes,tree]
results=orngTest.crossValidation(learners,data,folds=10)
print "Learner CA IS Brier AUC"
for i in range(len(learners)):
print "%-8s %5.3f %5.3f %5.3f %5.3f" %\
(learners[i].name,\
orngStat.CA(results)[i],\
orngStat.IS(results)[i],\
orngStat.BrierScore(results)[i],\
orngStat.AUC(results)[i])
これにより、次の出力が得られます。
Running script:
Learner CA IS Brier AUC
bayes 0.920 1.402 0.098 0.993
tree 0.940 1.447 0.120 0.967
Information Scoreの以下の説明に基づく
インスタンスの正しいクラスを C とします。P(C) はクラス C の事前確率であり、P'(C) は分類器によって返される事後確率であることを思い出してください。2 つのケースを考えます: (a) P'(C) > P(C) ここで、クラス C の確率が正しい方向に変化したため、そのような答えを有用と呼びます。正のスコアが与えられるべきです。Co) P'(C) < P(C) ここで、クラス C の確率が間違った方向に変化したため、そのような答えを誤解を招くものと呼びます。負のスコアを割り当てる必要があります。
続く:
Suppose the classifier in 1950 answered:
P'(Bush) = 0.45
P'(Dukakis) = 0.55
P'(all others) = 0
情報スコアとして 1.0 より大きい値は無効ですか? それとも、このタイプのデータ セットで不適切な分類子を使用したためでしょうか。データ セットには 3 つの異なるデータ カテゴリがありますiris.tab
。