第 1 章
適切な分類モデルの選択
データ分類モデルとは?
分類モデルは、特定の特徴量の組み合わせに基づいて、項目を個別のグループやクラスに割り当てるために用いられます。
適切なモデルを選ぶのはなぜ難しいのか?
各モデルは使われる状況に応じて、それぞれ強みと弱みを持っています。どのモデルを使用すべきかについては、数多くの検討事項があるため、定型化されたフローチャートのようなものは用意されていません。データ分類モデルの選択はビジネスケースとも密接に関連しており、達成する内容を明確に理解していなければなりません。
どうしたら適切なモデルを選択できるのか?
まずはじめに以下の質問に答える必要があります:
- データ量はどれくらいで、それは連続データか?
- どのような種類のデータか?
- 達成したいことは何か?
- プロセスの視覚化はどの程度重要か?
- 詳細はどの程度まで必要か?
- ストレージが制約要因になるか?
取り扱うデータの種類や使用目的について明確に理解できている場合は、各種モデルの長所に注 目してみましょう。最適な分類モデルを選ぶ際の手始めとして役立つ一般的なルールがいくつかあります。大量のデータを扱う場合 (パフォーマンスや精度のちょっとしたばらつきが大きな影響を及ぼす可能性がある場合) において適切なアプローチを選択するには、試行錯誤を重ねて、複雑さ、パフォーマンス、精度の適切なバランスを見極める必要があります。以下で、知っていると役に立つ一般的なモデルの一例をご紹介します。
分類交差検定
交差検定は、機械学習のアルゴリズムの性能を評価するためのモデル評価手法です。この手法では、事前に学習されていないデータセットに対するアルゴリズムの予測性能が評価されます。交差検定では、データセットを分割し、サブセットを使用してアルゴリズムの学習を行い、残りのデータを使用して検定を行います。この手法については 第3章 で詳しく説明しています。
一般的な分類モデル
名前に「回帰」と入ってはいますが、ロジスティック回帰はバイナリ分類問題(データが2クラスしかないもの)に使用されます。ロジスティック回帰は、比較的単純な分類手法として知られており、より複雑なモデルの種類に移行する前の出発点としてよく使われます。
ロジスティック回帰は、予測変数の線形結合で出力がが0または1になる確率を推定します。これが、名前に「回帰」という言葉が入っている理由です。そして確率が予測変数の線形結合として計算されるので、ロジスティック回帰モデルは、比較的簡単に解釈できます。
データが複雑でなく、タスクが比較的単純な場合は、単純ベイズ アルゴリズムを試しましょう。これは高バイアス/低分散分類器で、モデルの学習に利用できるデータの量が限られる場合に、ロジスティック回帰および最近傍法よりも有効に機能します。
CPU やメモリ リソースが制約要因となっている場合にも最適です。単純ベイズは極めてシンプルなため、データの過学習はまず発生せず、非常に高速に学習させることができます。連続的に新しいデータが投入される場合の分類器のアップデートにもうまく対応します。
データのサイズや分散が大きくなり、より複雑なモデルが必要になる場合は、他の分類器がより効果的と考えられます。また、この手法は分析が単純なので、複雑な仮説に対してはあまりよい出発地点とは言えません。
単純ベイズは、科学者がスパム フィルターやセンチメント分析などでテキストを操作する際に最初に試すアルゴリズムです。このアルゴリズムをまず試してみるとよいでしょう。
学習データセット内のデータ点の間の距離に基づいてデータ点を分類する方法で、単純ですが効率的にデータを分類できます。\(k\) 最近傍法 (KNN) は「多数決」に基づくアルゴリズムです。
KNN はメモリベースの遅延学習器で、実際の学習フェーズは存在しません。学習データをモデルに読み込み、分類器を使い始めるまでそのままにしておきます。新規にデータを分類する必要がある場合、KNN モデルは指定された \(k\) 個の最近傍を探します。\(k\) が 5 の場合は、5 つの最近傍のクラスが見つかります。ラベルまたはクラスに適用する場合、モデルはどこに分類すべきか多数決を行います。回帰問題を実行していて、連続値を求めたい場合は \(k\) 最近傍の値の中央値を取ります。
KNN の学習時間は短いものの、データのサーチ時間 (およびデータの保持に必要なメモリ) は他のモデルを上回る可能性があります。KNNでは、アルゴリズムに関する情報だけを保持するのではなく、学習データの全てを保持するため、データ点数が増えるにつれてこの傾向が強くなります。
この方法の一番の欠点は、重要性の低い属性により、重要性の高い属性がぼやけてしまうことにあります。決定木などその他のモデルの方が、これらのノイズをより適切に無視することができます。但し、データに重み付けをするなど、この問題を修正する方法は幾つかあるので、どのようなモデルを使うかに関しては、いくらかの選択の余地があります。
決定木が応答をどのように予測するかを見るには、ルート (開始) ノードから、応答を含む葉ノードまでの決定を順にたどって見ていきます。分類木は true または false などのノミナルな応答を出力します。回帰木は数値的な応答を返します。
決定木をたどるのは比較的簡単です。ルートから葉までの経路をすべて見ることができます。これは、どのように結論に到達したのかについて説明する必要がある場合に特に便利です。また、比較的高速に動作します。
決定木の主な欠点は過学習する傾向があることですが、アンサンブル法でこれを軽減することができます。Kaggle コンペで発表された参考になる例 (作成者: Toshi Takeuchi) があります。バギング決定木 を使用して、タイタニック号の乗客が生存する確率を予測するというものです。
データに含まれるクラスが 2 つのみの場合は、サポート ベクター マシン (SVM) の使用が考えられます。SVM はあるクラスのすべてのデータ点をもう一方のクラスのデータ点から分離する最適な超平面を見つけることでデータを分類します (SVM の最適な超平面とは、2 つのクラス間に最大のマージンをもつ超平面のことです)。クラスが 3 つ以上ある場合にも SVM を使用できます。この場合、モデルは一連の 2 クラス(バイナリ)分類による部分問題を作成します (部分問題ごとに 1 つの SVM 学習器を使用します)。
SVM には 2 つの大きな利点があります。第一に、極めて正確で、データの過学習が起こりにくいことです。第二に、線形サポート ベクター マシンは比較的結果の解釈が容易です。SVM モデルは非常に高速なため、利用可能なメモリの量が限られている場合は、モデルの学習が完了したら学習データを破棄することができます。また、”カーネルトリック” と呼ばれる手法を用いることで複雑な非線形の分類も得意としています。
ただし、SVM の学習とチューニングは前もって行っておく必要があるため、使用前にモデルの準備に時間をかけることになります。さらに、3 クラス以上のモデルを使用する場合は、処理速度に大きな影響が出ます。
人工ニューラル ネットワーク (ANN) をうまく学習させることで、ある種の解を見つけさせたり、パターンを識別させたり、データを分類したり、将来の事象を予測させたりするようにできます。一般的に ANN は、文字認識、株式市場予測、および画像圧縮などの複雑な問題を解決するのによく利用されます。
ニューラル ネットワークの動作は、個々の計算要素(ニューロン)がどのように結合されるかとその結合の強さ、すなわち重みによって定義されます。重みは、期待されるタスクが正確に実行されるようになるまで、指定した学習規則に従ってネットワークを訓練することで自動的に調整されます。
ANN は十分な経験があるユーザにとっては、特徴量が大量にある場合に非線形データをモデリングすることのできる優れた方法となります。正しく使用すれば、正攻法のアルゴリズムでは対処が難しい問題を解決することができます。ただし、ニューラル ネットワークは計算コストが高く、ANN が解に到達した方法を理解するのが難しく(そのため計算の中身を推測するのも難しい)、ANN を少しずつ手直ししてゆくというやり方は現実的ではありません。できることと言えば、学習の設定を変更して再学習を行うことぐらいと言えます。