質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

541閲覧

2値分類 予測確率の精度

aheshiyu_tt

総合スコア11

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/16 07:17

編集2020/11/16 11:40

前提・実現したいこと

2値分類において,予測する確率が最も良い2値分類アルゴリズムを教えてください.

一般的な2値分類

一般的な2値分類では正解ラベルに「0」と「1」が割り当てられており,学習モデルが入力データに対する2値の予測値を確率0%~100%で算出します.
そして,算出された確率を見て「50%以上ならば1」「50%未満ならば0」というように分類し,初めて2値分類をするモデルが完成します.
さらに評価の段階では,0と予測した回数と1と予測した回数を集計し,混同行列から正解率を導き出すという流れになっています.

ここでの2値分類

ここでの2値分類は上記で示した一般的な2値分類とほとんど同じですが,異なる点は注目するポイントが予測する「確率」である点です.

例を挙げます.

example

1前提: 2・学習データを学習したモデルAがあり,これからテストデータを用いて評価する段階. 3 4テストデータ全体を通してモデルAが「1である確率は30%」と予測した回数が「100回」あったとします. 5このとき,【モデルが30%と予測したうち】正解ラベルが「1」である回数は「26回」でした. 6すなわち,このモデルAが予測する30%という数値の精度は 26/100=26% ということになります.

この例では,モデルAは「30%」と予測しているにも関わらず,【モデルが30%と予測したうち】の「1」の割合を見ると「26%」となり,30%という予測としては精度が良くない(本当はより30%に近い値が良い)と言えます.

実現したいこと

上記のように,同じ2値分類でも予測した確率を「0」と「1」に丸めて混同行列で評価するのとは違い,予測した確率の確率を計算して評価したいと考えています.
このような評価方法において,最も精度が良くなる2値分類は何でしょうか.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tabuu

2020/11/16 08:34

1の確率が30%であれば、0の確率は70%ということでしょうか? であれば精度は74%ともいえますが。
toast-uz

2020/11/16 10:37

「すなわち,このモデルAが予測する30%という数値の精度は 26/100=26% ということになります」 これは質問者様の独自の考えでしょうか?何か参考となるものがありますか? (主張が理解できませんでした)
TakaiY

2020/11/16 10:57 編集

1である確率が30%と判定して、実際 26/100 = 26%だったのであれば、予測の誤差は4% なので、それほど悪くはなさそうですけど。
aheshiyu_tt

2020/11/16 11:39

質問内容が分かりにくくて申し訳ありません. (2人目の修正依頼者様) ここでの例をもう一度説明しますと, 学習モデルが「1である確率は30%です」という予測を100回したとします. そのとき,実際に「1」である回数を数えると「26回」でした. 「1である確率は30%です」という予測をしたのだから,「1である確率は30%です」と予測した回数(100回)に対して,本来は「30回」だけ「1」があるべきだということです.(29回でも31回でもダメ→30%から離れるから) これはその他の確率0~100%にも言えることです. 同じく,別の例を挙げると, 「1である確率は60%です」という予測を354回したとします. この場合は,「1である確率は60%です」と予測した回数(354回)に対して,実際に「1」であるべき回数は「213回」となります(213/354=0.601...で最も60%に近い) (1人目の修正依頼者様) 上記の考え方を「0」に適用するならば, 「0である確率は70%です」という予測を100回したとき,ということで考えることができます. この場合ですと,「0である確率は70%です」と予測したうち70回だけ0があればよいということになります. (3人目の修正依頼者様) 26%という数値は本当に悪いのかということですが,「悪い」という表現が良くなかったと思います. これは例として挙げた数値ですが,現状では26%という数値が出ているため,これをより30%に近い値が出せるような2値分類モデルはないだろうかということです.
toast-uz

2020/11/16 11:43

万能な予測モデルは無く、具体的なテーマ領域やデータによって、よりよいと思われる手法は千差万別なのですが、そういったことはご理解いただけていますでしょうか?
jcs502ulf

2020/12/05 05:12

まず、予測した確率を丸める際の「50%以上は1」の50%というスレッシュホールド値は、人が決めるものであり、40%でも45%でも良いと思います。 40%にすると綺麗に分類できるのであれば、そのモデルのスレッシュホールドは40%であると決めれば良いわけです。 この丸め処理の前段である「1である確率は30%」という30%を評価したいようですが、結局これは、最適なスレッシュホールド値を見つけたいということではないでしょうか? 最適なスレッシュホールド値はF値、ROC曲線、AUCなどで求められると思いますが、これを自動的に求める方法は私も知りたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問