sklearn.metrics.classification_reportの結果の読み方を簡単に解説する
python
>>> from sklearn.metrics import classification_report
>>> print(classification_report([0, 0, 0, 1, 1, 1], [0, 0, 1, 1, 1, 1]))
precision recall f1-score support
0 1.00 0.67 0.80 3
1 0.75 1.00 0.86 3
avg / total 0.88 0.83 0.83 6
第1引数y_true(正解)が[0, 0, 0, 1, 1, 1]
, 第2引数y_pred(予測値)が[0, 0, 1, 1, 1, 1]
の場合
- 0だと予想したもの2つはすべて正解: 0のprecision(適合率)が1.00
- 1だと予想したもの4つは、うち3つが正解: 1のprecisionが0.75
- 正解が0だった3つのうち、正しく0だと予想されたものは2個: 0のrecall(再現率)が0.67
- 正解が1だった3つのうち、すべてが正しく1だと予想されていた: 1のrecallが1.00
- f1-scoreはprecisionとrecallの調和平均 see F値
不均衡データ python
>>> print(classification_report([0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 1, 1, 1]))
precision recall f1-score support
0 1.00 0.88 0.93 8
1 0.67 1.00 0.80 2
avg / total 0.93 0.90 0.91 10
>>> print(classification_report([0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1]))
precision recall f1-score support
0 0.89 1.00 0.94 8
1 1.00 0.50 0.67 2
avg / total 0.91 0.90 0.89 10
-
実際には10個の内2個だけが1
-
前半
- 3つ1だと予想した、うち2つが正解
- 顧客が「本当は1のものを取りこぼしたくない」と思っているならこれは良い方法
- それは「1のrecallが1.00であるから」と表現できる
- 逆に「1だと予測したものは全部1であってほしい」と思っているならこれは悪い方法
- それは「1のprecisionが0.67しかないから」と表現できる
-
後半
- 1個だけ1だと予想した
- 顧客が「本当は1のものを取りこぼしたくない」と思っているならこれは悪い方法
- それは「1のrecallが0.50しかないから」と表現できる
- 逆に「1だと予測したものは全部1であってほしい」と思っているならこれは良い方法
- それは「1のprecisionが1.00しかないから」と表現できる
-
「本当は1のものを取りこぼしたくない」
- 「1の石を割ると宝石が出て来て、10万で売れる。仕入れに1万掛かる」
- 多少間違えてでも1の石を割ったらガッポリ儲かる
- だから1っぽいものはどんどん教えてほしい
- 3個1だと予想して2個が正解→3万払って、20万手に入れる。17万の儲け。
- 1個1だと予想して1個正解→1万払って、10万手に入れる。9万の儲け。
- 「1の石を割ると宝石が出て来て、10万で売れる。仕入れに1万掛かる」
-
「1だと予測したものは全部1であってほしい」
- 「1の石を割ると宝石が出て来て、10万で売れる。仕入れに9万掛かる」
- ギリギリの商売なんで下手を打つと赤字になる
- だから確実に1なものだけ教えてほしい
- 3個1だと予想して2個が正解→27万払って、20万手に入れる。7万の損。
- 1個1だと予想して1個正解→9万払って、10万手に入れる。1万の儲け。
- 「1の石を割ると宝石が出て来て、10万で売れる。仕入れに9万掛かる」
-
- ロジスティック回帰ならデフォルト0.5の閾値を上下させることによって精度や再現率を調整できる。精度と再現率は逆方向に動く。閾値を調整して精度と再現率の値を一致させた場合の、精度のことをプレシジョン-リコール ブレイクイーブンポイントと呼ぶ。(情報検索の分野における用語)
- 単にブレイクイーブンポイントと言った場合、経営上の損益分岐点のことを指すことが多い。損益分岐点 - Wikipedia
- ロジスティック回帰ならデフォルト0.5の閾値を上下させることによって精度や再現率を調整できる。精度と再現率は逆方向に動く。閾値を調整して精度と再現率の値を一致させた場合の、精度のことをプレシジョン-リコール ブレイクイーブンポイントと呼ぶ。(情報検索の分野における用語)
#機械学習 #TODO ブレイクイーブンポイントについて書く http://ibisforest.org/index.php?F%E5%80%A4