機械学習用に用意されているデータはきれいに整えられていて、データの下準備からモデルの作成まで実にすんなりといくものが多いです。でも実社会のデータはほとんどが大なり小なり偏りがある方が普通。
そんな例を見てみます。
データを取り込みます。トレーニング用に148の特徴量のデータが168個、テスト用に507個あります。これらのデータは別に分けておく必要もないので、結合して675個の大きなデータの塊を作ります。
そこからまず「class」の部分だけを抜きだして教師データを作ります。
匂いは全部で9種類。多い順にビル、コンクリート、草、木、太陽が当たらない場所、アスファルト、自動車、土、プールです。最も多いビルは約18%、少ないプールが約4%とデータに偏りがあります。
データからclassを抜き去った残りが特徴量データとなります。
分類問題で今回はランダムフォレストを使います。9種類に分類することが始めから分かっていますのでn_estimatorsは当然9です。
その結果は精度が80%。いいのか悪いのかわかりませんが、モデルがどのような予測をしたのかを見てみたいと思います。
プールは135の予測値のうち1つだけ。もともとのデータではプールは4%でしたので、予測が135個ならば9個程度はプールのはずですが、たったの1個。数が少ないものは正確に識別できないことになります。
例えば病院での検査結果と癌の関係で、90%が癌ではない、10%が癌であるデータがあるとします。これでモデルを作ったとき、90%の精度では何の意味も持たないことになります。簡単に言えば、すべて「癌ではない」と判断すれば正解率90%になるはず。
このケースでは癌ではないのに癌であると診断されるケースが多少含まれてもいいが、実際に癌である人は漏らさずに癌であると診断をすることが最重要となりまりがす。
このような偏りがあるデータで、少ないものを正確に分類して抽出できるモデルこそが良いモデルといえます。これが難しくて、今の私程度じゃ手に負えないです。
Comments