バイアス・バリアンス分解がちゃんと分かっていなかったので復習中(汗 極論すると、汎化誤差が下がらない場合には、モデルが悪い場合(バイアスが大きい)と、データが悪い(ノイズが乗りまくっている)場合(バリアンスが大きい)の2種類がある、としか言っていない気がするのだがこの理解でよい?
2010-09-16 02:16:34しかし、バイアス・バリアンス分解、「最初に「モデルの他にノイズがあるんだ!」と断った上に、ノイズが平均0分散σ^2の正規分布に従う、という仮定までおいたら、そりゃ、性能の悪さ(汎化誤差)はモデルのせいな部分とノイズなせいな部分の2つに分かれれて当然だろ」という気がする。
2010-09-16 02:25:37つまり、汎化誤差がバイアス・バリアンスの2つに分かれて「おー!」というよりも、「いや、あんたが分析しやすいように最初に「ノイズ」とはこういうものだ、と定義したんでしょ」という気もする。
2010-09-16 02:27:10@niam 参考までに中川先生の授業スライド貼っておきます http://www.r.dl.itc.u-tokyo.ac.jp/~nakagawa/SML1/intro1.pdf
2010-09-16 02:36:57.@niam 2点ほど違っていると思います.一つは,バリアンスはデータが悪いというより,同じ分布のデータからでも,サンプルしたデータ集合ごとにどれくらい敏感に反応するかということ.もう一つは,モデルが優先される高バイアスならデータに敏感には反応しない低バリアンスに,…
2010-09-16 03:18:33.@niam モデルの自由度が大きい低バリアンスでは,データに過学習しやすく高バリアンスになり,同時に二つの要素を小さくするのは難しいというのがポイントかと.この二つのバランスがとれたところが,トータルで誤差が小さくなるということです.
2010-09-16 03:20:26@shima__shima 「.@niam モデルの自由度が大きい低バリアンスでは,」のところですが、「モデルの自由度が大きくかつ低バイアスになるよう正則化すると」という理解でよろしいでしょうか?
2010-09-16 03:57:29.@wk77 正則化はモデルをいじってるんですよね? パラメータの動きに制限を加えてますから,低バイアスすぎのモデルのバイアスを高くしていいところへもってきているかと.
2010-09-16 04:00:05@wk77 @shima__shima 最初にやりたかったことは、「このデータ+この手法では、どうパラメータチューニングしても、これぐらいの精度しか出せないはず」という限界を概算する方法を調べたかったのですが、これはバイアス・バリアンス分解の枠組みでは何にあたるのでしょうか?
2010-09-16 04:00:17.@niam バイアス-バリアンスは誤差の上界についての議論ではなくて,モデルの選択・調整についての話なのでその方面には役にたたないかと.PAC学習とか最悪の議論か,難しくて計算可能なモデルが少ない average case analysis とか方面でないと
2010-09-16 04:05:01@wk77 @shima__shima もっと具体的に言うと、二値分類で、「テストデータの1の比率が非常に小さくx%以下の場合には、このデータで達成できる最小の誤差>xになるので、全部0だと思って分類した方が実用上はよい」と考えたのですが、手法が悪いんじゃないの?と言われない…
2010-09-16 04:16:16@shima__shima ためには、「このデータ(この素性)では、どう頑張ってもこれぐらいの誤差になりますよ、手法をどう頑張っても無理ですよ」ということを概算しないといけないわけです。要は、素性がたりてないのか、訓練データ量が少ないのか、手法が悪いのか、を見分ける方法…
2010-09-16 04:19:01.@shima__shima 先のツイートで「モデルの自由度が大きい低バリアンス」と書かれていたところが、「モデルの自由度が大きい低バイアス」の誤植かな?と思った次第です
2010-09-16 04:19:24@shima__shima 機械学習を使って実験して将来の課題を書こうとすると、「性能向上のためには『訓練データの量を増やす/素性の数を増やす/モデルを改良する』ことが必要である」と3つのどれか(または複数)を書くことになると思うのですが、普通どうやって見分けるのでしょうか。
2010-09-16 04:27:17ご指摘のとおりです <m(__)m> RT @wk77: 先のツイートで「モデルの自由度が大きい低バリアンス」と書かれていたところが、「モデルの自由度が大きい低バイアス」の誤植かな?と思った次第です
2010-09-16 04:35:49データがたくさんあれば,素性を増やしてモデルを複雑にしていかないといけないので,どれも関係しているかと… RT @niam: 機械学習を使って実験して将来の課題を書こうとすると、「性能向上のためには『訓練データの量を増やす/素性の数を増やす/モデルを改良する』ことが必要である」…
2010-09-16 04:37:32結局、やりたいことは、すごい簡単で、性能が悪かったとき、素性が悪いのか、データが少ないのか、モデル(手法)が悪いのか、を見分けたい、というだけなんだが…バイアス・バリアンス分解は的外れだとしても、それぐらいのことを分析する方法が提案されていないはずがないからしつこく聞いてます。
2010-09-16 04:38:27.@niam 一つ手としては,手持ちのデータを間引いて大きさの違うデータ集合を作ります.で,それぞれのデータ集合について素性やモデルを調整して一番よい誤差を得ます.あとは,データ数と誤差をプロットすれば,データ数を増やしたときに(ちゃんと調整したあとの)誤差が予測できるかと
2010-09-16 04:39:30正則化項というのは常に含まれていて、正則化係数が相対的に大きいとモデルパラメータの変動を抑えるし、小さいと変動を放置する、と解釈されると思ってた。正則化という表現を使うと変動を「抑える」方向に解釈されやすいのだろうか。lassoだと「疎にする」というまた違う意味を持つように思うし
2010-09-16 04:40:59@shima__shima なるほど。最初にデータ集合をTrain, Development, Testの3つに分けて、Trainから大きさの違うデータ集合を色々作り、Devで素性やモデルを調整して、Testで性能を計って(訓練データ量、素性、モデル)の組でプロットすれば…
2010-09-16 04:48:51