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

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

新規登録して質問してみよう
ただいま回答率
85.48%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

1548閲覧

「クラス重み付け」の使い方に関する質問

oookabe

総合スコア126

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

1クリップ

投稿2018/02/22 10:27

訓練データのサイズが不均衡である場合の対策として、
**「クラス重み付け」という方法が良く見られますが、
この
「クラス重み付け」**を何処に、どのように作用させて、
訓練データサイズの不均衡による分類の不正確さを無くすのでしょうか。
(少し原理的な事を知りたいのです)

若し、一概に言えないなら、深層学習の例で宜しいです。

どうぞ宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

クラス重み付けの説明をする前に、imbalanced classificationが起こる原因についてまとめます。

基本的に機械学習(ニューラルネットワーク含む)の学習処理は(1)モデル、(2)コスト関数、(3)オプティマイザーで構成されます。このimbalanced classificationは、クラスの不均衡がコスト関数に起因してオプティマイザーがうまく機能させない状況のことをいいます。
このコスト関数ですが、2値分類におけるクロスエントロピー誤差を例にいうと、以下のようにコストが計算されます。
(1)クラス0を対象に1件づつコスト(精度の悪さ)を計算して合計を算出
(2)クラス1を対象に上記の同様の計算を実施
(3)上記の(1)と(2)を合算してコストの総計を算出
クラス間に大きな不均衡がある場合、少数派の1件あたりのコストの平均が多数派よりも大きくても件数の大きさに引きずられて総コストにあまり影響を与えません。オプティマイザーは、このコスト関数の出力をもとにパラメータの更新を行うことになるので、結果としてコストに大きな影響を与える多数派の精度を高めるようにパラメータの調整を進めることになります。
これが、imbalanced classificationが起きる原因です。

クラス重み付けとは、上記の説明におけるコスト関数そのものを調整することと同義です。
少数派の件数の少なさをウェイトによって調整することで、少数派のコストが総コストに与える影響をより大きくしようということです。こうすることでオプティマイザーは少数派と多数派をイーブンに扱ってパラメータ調整を進めるようになるとことです。先の処理の説明でいうと、(1)または(2)のうち少数派のほうに所定のウェイトを乗算すればいいことになります。
skitlearnの関数の場合、クラス重み付けはオプションパラメータを設定すれば、後は関数の内部でうまく処理してくれます。一方、tensorflowを使ったニューラルネットワークの場合は、コスト関数を自前で記述する必要がある(もしかすると関数があるかもしれませんが、私はコードを書いているので、そういうことにしておきます)ので、適宜、記述する必要があります。

なお、このクラス重み付けは必ずしも分類の不正確性をなくすものではありません。あくまでも少数派の分類精度を高めるようになるだけです。与えられたデータやウェイトのかけ方によっては多数派の分類精度を犠牲にすることも起こりえます。このあたりはやってみないと分からないというのが実態ではないでしょうか。

投稿2018/02/23 11:51

R.Shigemori

総合スコア3376

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

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

oookabe

2018/02/24 04:45

R.Shigemoriさま 本当に有難う御座います!! 自分がそれなりに調べましたが、これほど論理的に明晰で、具体性があって、言葉的にも分かりやすい文章が見当たりませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問