gazou6 機械学習の基礎

-------------------------

3.機械学習で用いる予測アルゴリズム

予測アルゴリズムは沢山あります。
回帰分析も予測アルゴリズムの一つです。

その他の主要なアルゴリズムについていくつか述べてみたいと思います。

●ロジスティック回帰分析
20年ほど以前に流行ったアルゴリズムです。
「回帰」という名称がつきますが、「分類」で用いることがほとんどです。
回帰というのは数値を予測する方法で、分類というのは「0」「1」などのカテゴリを予測する方法です。
ロジスティック回帰分析は、他予測アルゴリズムを評価するときのベースラインとして用いられる場合が多いです。

●サポートベクターマシン
ロジスティック回帰分析の次に流行したのが、サポートベクターマシンです。
サポートベクトルマシンとも呼ばれます。
非常に高い性能を得ることができ、カーネルを用いることで非線形解析を実施することができます。
データ数が多くなると極端に計算時間がかかるという欠点があります。

●ランダムフォレスト
yes、noによる条件分岐(決定木)により予測を行う方法です。
比較的計算時間が短くまた、比較的予測性能も高いです。
そして、特徴量の重要度を出力することができるというメリットがあります。

●勾配ブースティング
ランダムフォレストと同様、決定木を用いて予測を行います。
最近、世界的な機械学習のコンペティションである「kaggle」でこの予測アルゴリズムがよく使用されています。

●ベイジアンネットワーク
ベイズ推定という手法を用いて予測を行います。
今までの予測アルゴリズムとは少し毛色が違った方法です。
ベイズ推定は迷惑メールなどの判別などに使用されています。
計算時間がかかるというデメリットがあります。

●ニューラルネットワーク
人間の神経回路(ニューロン)を模倣したネットワークです。
考え方の歴史は古いですが、計算負荷が大きいため実用化することはできませんでした。
近年、コンピュータ性能の飛躍的な向上により、実用化が可能となりました。
ニューラルネットワークは、「入力層」「中間層(隠れ層)」「出力層」に分けて処理を実行します。

●ディープラーニング(深層学習)
ニューラルネットワークの中間層を複数持たしたものが「ディープラーニング(深層学習)」です。

通常、機械学習では複数の特徴量を人間が決めて機械学習に投入します。
例えば、写真から「男か女」を予測判定するための特徴量を「髪の毛の長さ」「新身長」「口紅の有無」などと決めてそのデータを投入します。
ディープラーニングはこの特徴量を写真から自動的に抽出します。

上記の例でしたら、ディープラーニングに頼らずとも人間が特徴量を抽出すればよいのですが、もっと微妙な違い、例えば「ひよこの性別判定」です。
ひよこの性別判定は「ひよこ鑑定士」がひよこの肛門の突起形状を見て雄雌を判定しますが、素人では全く見分けがつきません。
しかし、この形状をディープラーニングに学習させると、自ら特徴量を取得して予測判定を行います。

この特徴量抽出は古くは重回帰分析などでも実施していました。
ステップワイズや総当り法と言われる方法です。
しかし、抽出対象の特徴量の数が増えるとものすごく時間がかかりました。
したがってある程度事前に人間が特徴量を絞り込んでおく必要がありました。
そのため、重要な特徴量を見落としてしまい、よい性能を得ることができなかったこともあるでしょう。

ディープラーニングはその必要がなく、100でも1000でもそのまま特徴量を投入すればよいのです。
ここがディープラーニングの最大のメリットです。

しかし、デメリットもあります。
複雑な計算を行うため、高性能な計算機が必要です。GPUなど並列処理が可能なプロセッサを搭載することが望ましいです。
また、ハイパーパラメータのチューニングが難しく、試行錯誤的に設定して予測性能を向上させていく必要があります。

ディープラーニングの種類で「畳み込みニューラルネットワーク(CNN)」というものがあります。
これは、主に画像認識に用いられるアルゴリズムで非常に高性能です。

通常の画像認識では、画像のピクセルを1次元配列に直して解析するのですが、CNNの場合は2次元のまま解析を行います。
そうすることにより、あるピクセルと縦横斜めの周辺ピクセルとの関係性をそのまま解析することが可能となり性能を向上させることができます。

また。ディープラーニングの種類で再帰型ニューラルネットワーク(RNN)」というものもあります。
これは、時系列データを分析・予測するアルゴリズムです。
機械翻訳などの自然言語処理や気温予測などに用いられます。

注意すべき点は、RNNではデータが独立していない「自己相関(AR)」のあるデータを用います。
自己相関のあるデータとは、時系列的に見てそのデータが、そのデータの少し前の時間のデータに影響されているものです。

例えば、気温は毎日少しずつ変化し前日の気温±1度などの変化で季節により徐々に高低します。いきなり、3度から25度になることはありません。

もし、この自己相関のデータで回帰分析を行うととても高い相関を得ることができます。
しかしそれは学習データに対してであり、検証データ(未知データ)については全くと言っていいほど当たることはありません。
自己相関のあるデータについては、必ずRNNのような時系列モデルを用いる必要があります。