バイアス・バリアンス分離のまとめ

@niamさん、@shima__shimaさん、@wk77さんによるバイアス・バリアンス分離に関するディスカッション。「誰でも編集可」に設定してありますので、気軽に追加、修正お願いします。
1
イルカ人間 @niam

バイアス・バリアンス分解がちゃんと分かっていなかったので復習中(汗 極論すると、汎化誤差が下がらない場合には、モデルが悪い場合(バイアスが大きい)と、データが悪い(ノイズが乗りまくっている)場合(バリアンスが大きい)の2種類がある、としか言っていない気がするのだがこの理解でよい?

2010-09-16 02:16:34
イルカ人間 @niam

しかし、バイアス・バリアンス分解、「最初に「モデルの他にノイズがあるんだ!」と断った上に、ノイズが平均0分散σ^2の正規分布に従う、という仮定までおいたら、そりゃ、性能の悪さ(汎化誤差)はモデルのせいな部分とノイズなせいな部分の2つに分かれれて当然だろ」という気がする。

2010-09-16 02:25:37
イルカ人間 @niam

つまり、汎化誤差がバイアス・バリアンスの2つに分かれて「おー!」というよりも、「いや、あんたが分析しやすいように最初に「ノイズ」とはこういうものだ、と定義したんでしょ」という気もする。

2010-09-16 02:27:10
イルカ人間 @niam

なんか、アホなこと書いているような気がするが、誰かが突っ込んでくれると思うから、放置してみよう。

2010-09-16 02:35:02
イルカ人間 @niam

@kanojikajino ありがとうございます。てか、僕は中川研のはずなのですが…(汗

2010-09-16 02:48:48
しましま @shima__shima

.@niam 2点ほど違っていると思います.一つは,バリアンスはデータが悪いというより,同じ分布のデータからでも,サンプルしたデータ集合ごとにどれくらい敏感に反応するかということ.もう一つは,モデルが優先される高バイアスならデータに敏感には反応しない低バリアンスに,…

2010-09-16 03:18:33
しましま @shima__shima

.@niam モデルの自由度が大きい低バリアンスでは,データに過学習しやすく高バリアンスになり,同時に二つの要素を小さくするのは難しいというのがポイントかと.この二つのバランスがとれたところが,トータルで誤差が小さくなるということです.

2010-09-16 03:20:26
wk @wk77

@shima__shima 「.@niam モデルの自由度が大きい低バリアンスでは,」のところですが、「モデルの自由度が大きくかつ低バイアスになるよう正則化すると」という理解でよろしいでしょうか?

2010-09-16 03:57:29
しましま @shima__shima

.@wk77 正則化はモデルをいじってるんですよね? パラメータの動きに制限を加えてますから,低バイアスすぎのモデルのバイアスを高くしていいところへもってきているかと.

2010-09-16 04:00:05
イルカ人間 @niam

@wk77 @shima__shima 最初にやりたかったことは、「このデータ+この手法では、どうパラメータチューニングしても、これぐらいの精度しか出せないはず」という限界を概算する方法を調べたかったのですが、これはバイアス・バリアンス分解の枠組みでは何にあたるのでしょうか?

2010-09-16 04:00:17
しましま @shima__shima

.@niam バイアス-バリアンスは誤差の上界についての議論ではなくて,モデルの選択・調整についての話なのでその方面には役にたたないかと.PAC学習とか最悪の議論か,難しくて計算可能なモデルが少ない average case analysis とか方面でないと

2010-09-16 04:05:01
イルカ人間 @niam

@wk77 @shima__shima もっと具体的に言うと、二値分類で、「テストデータの1の比率が非常に小さくx%以下の場合には、このデータで達成できる最小の誤差>xになるので、全部0だと思って分類した方が実用上はよい」と考えたのですが、手法が悪いんじゃないの?と言われない…

2010-09-16 04:16:16
イルカ人間 @niam

@shima__shima ためには、「このデータ(この素性)では、どう頑張ってもこれぐらいの誤差になりますよ、手法をどう頑張っても無理ですよ」ということを概算しないといけないわけです。要は、素性がたりてないのか、訓練データ量が少ないのか、手法が悪いのか、を見分ける方法…

2010-09-16 04:19:01
wk @wk77

.@shima__shima 先のツイートで「モデルの自由度が大きい低バリアンス」と書かれていたところが、「モデルの自由度が大きい低バイアス」の誤植かな?と思った次第です

2010-09-16 04:19:24
イルカ人間 @niam

@shima__shima を探していて、とりあえず、思いついたのがバイアス-バリアンスの話だったので、そっちを当たったわけです。

2010-09-16 04:19:35
イルカ人間 @niam

@shima__shima 機械学習を使って実験して将来の課題を書こうとすると、「性能向上のためには『訓練データの量を増やす/素性の数を増やす/モデルを改良する』ことが必要である」と3つのどれか(または複数)を書くことになると思うのですが、普通どうやって見分けるのでしょうか。

2010-09-16 04:27:17
イルカ人間 @niam

バイアス・バリアンス分解ぐらい完璧に分かっていないと次に進めないので、ここで完璧に理解してしまう以外に方法がない。

2010-09-16 04:34:12
しましま @shima__shima

ご指摘のとおりです <m(__)m> RT @wk77: 先のツイートで「モデルの自由度が大きい低バリアンス」と書かれていたところが、「モデルの自由度が大きい低バイアス」の誤植かな?と思った次第です

2010-09-16 04:35:49
しましま @shima__shima

データがたくさんあれば,素性を増やしてモデルを複雑にしていかないといけないので,どれも関係しているかと… RT @niam: 機械学習を使って実験して将来の課題を書こうとすると、「性能向上のためには『訓練データの量を増やす/素性の数を増やす/モデルを改良する』ことが必要である」…

2010-09-16 04:37:32
イルカ人間 @niam

結局、やりたいことは、すごい簡単で、性能が悪かったとき、素性が悪いのか、データが少ないのか、モデル(手法)が悪いのか、を見分けたい、というだけなんだが…バイアス・バリアンス分解は的外れだとしても、それぐらいのことを分析する方法が提案されていないはずがないからしつこく聞いてます。

2010-09-16 04:38:27
しましま @shima__shima

.@niam 一つ手としては,手持ちのデータを間引いて大きさの違うデータ集合を作ります.で,それぞれのデータ集合について素性やモデルを調整して一番よい誤差を得ます.あとは,データ数と誤差をプロットすれば,データ数を増やしたときに(ちゃんと調整したあとの)誤差が予測できるかと

2010-09-16 04:39:30
wk @wk77

正則化項というのは常に含まれていて、正則化係数が相対的に大きいとモデルパラメータの変動を抑えるし、小さいと変動を放置する、と解釈されると思ってた。正則化という表現を使うと変動を「抑える」方向に解釈されやすいのだろうか。lassoだと「疎にする」というまた違う意味を持つように思うし

2010-09-16 04:40:59
イルカ人間 @niam

@shima__shima なるほど。最初にデータ集合をTrain, Development, Testの3つに分けて、Trainから大きさの違うデータ集合を色々作り、Devで素性やモデルを調整して、Testで性能を計って(訓練データ量、素性、モデル)の組でプロットすれば…

2010-09-16 04:48:51
wk @wk77

.@shima__shima 先日の先生のご指摘で、バイアスバリアンスを再勉強したおかげだと思います(笑)。ありがとうございます。

2010-09-16 04:51:06