CodeZine(コードジン)

特集ページ一覧

Amazon Machine Learningの前提知識

Amazon Machine Learningスタートアップガイド 第1回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/06/16 14:00

目次

機械学習の実践プロセス

 機械学習を実践していく際には、一般的には以下のような内容に従って手順を進め、またその手順を反復させながら精度を高めていく必要があります。

  1. まずはじめに、機械学習で「どんなデータを扱って何を予測させたいか」というテーマの部分を決める。
  2. 学習を行わせる際のデータの収集、また機械学習で扱う学習モデルが効果的に「学習」できるようにデータのクレンジングや品質の検証・妥当性チェックなどを行う。
  3. 学習モデルに対してデータを与え、構築された学習モデルの性能評価を行う。
  4. 作成した学習モデルを使って新しいデータの分類・予測作業を行い、1.で定めたテーマに対する答えとなる予測を作成する。

 以降では、その作業手順を説明していきます。

問題を公式化し、何を予測させたいかのテーマを決める

 機械学習で解決させたい課題を定め、何のどのような内容について値を予測させたいか、またその予測においてどの手法を用いるかについて検討を行います。用いることのできる手法は前述した「二項分類」「多項分類」「回帰分析」のいずれかです。「メールがスパムかどうかを判定させたい」のであれば「二項分類」を用いる、というような感じです。

機械学習に用いるデータを収集する

 学習モデルに学習させるためのデータを準備します。このデータは1件1件についてもその解答がすでに分かっていて、かつ件数が多い方が望ましいです。

 機械学習で予測させる答え(機械学習の用語では「ターゲット(target)」と呼ばれています)を得るためには、その判断材料となるための情報が必要です。この情報に当たる部分は「特徴(feature)」と呼ばれ、「Eメールがスパムか否かを判定する」が"ターゲット"であるのに対し、"特徴"は「送信者」「件名」「テキスト本文」「送信時間」「送信者と受信者間のやり取りの有無」といった情報です。データベースのデータ1行に対する列名要素1つが特徴1つである、というようなイメージと考えれば良いでしょう。学習モデルが結果を判別・予測できるパターンを見つけられるように、データの内容についてはポジティブなデータ(そのメールがスパムである、と判別できるデータ)、ネガティブなデータ(そのメールがスパムではないと判別できるデータ)双方を用意しておく必要があります。

データを分析・検査する

 学習モデルにデータを与える前に、そのデータについて内容を精査しておくことは重要です。データの内容やデータが絡む仕様に詳しいメンバーを交えて、機械学習作業に与えるに足る内容が含まれているか、欠損値(値の登録そのものがされていないデータ。NULL値なども含む)や無効な値のボリュームや対応(欠損値をデフォルト値に置き換えておくなど)はなされているか、学習のクオリティを向上させるためにより意味のあるデータに変換を行っておく(特徴抽出処理)などを確認・実施しておきましょう。学習および予測に影響を与える(=相関関係が強い)であろう項目とそうでない項目を見極め、後者については学習前に除外しておくなどの対応も行っておくことも重要です。

データを「訓練用」と「評価用」に分割する

 機械学習では「訓練」という作業を行います。学習モデルに対して解答が分かっているデータを与え、「こういうデータであればこういう解答」という部分をモデルに"学習"させるのですが、この学習させる作業のことを「訓練」とか「トレーニング」と呼んでいます(当稿では「訓練」という言葉を使います)。

 用意したデータについても、この「訓練」を行うために用いるデータと、訓練したモデルの評価を行う際に使うデータ、すなわち評価用データに分けておく必要があります。おおよそ訓練用:評価用=70:30の割合で分割しておくことが良いとされています。Amazon Machine Learningではこの割合を変更することも可能です。

モデルの訓練を行う

 データの準備が整ったら訓練開始です。Amazon Machine Learningでは手法それぞれで用いる学習アルゴリズムが異なります。

アプローチ アルゴリズム
二項分類 ロジスティック回帰
多項分類 多項ロジスティック回帰
回帰分析 線形回帰

 これらの学習アルゴリズムと、学習アルゴリズムに与える「訓練パラメータ」(Training Parameters)を用いて訓練を行います。訓練パラメータで用意されているものについては、「学習率(Learning Rate)」「正則化(Regularization)」「パスの数」「モデルのサイズ」などがあります。これらの要素を用いて、訓練用データを使いモデルを"訓練"させていきます。アルゴリズムや訓練パラメータ個別の内容については説明を割愛します。

モデルの正確度を評価し、向上させる

 訓練データを使ってモデルを作成した後は、評価用データを使って予測と実際の結果となる答えの比較を行います。機械学習では"Accuracy"(正確度)という指標でそのモデルによる予測の正確さを測ることができます。現時点で利用可能な機械学習のアプローチ3つ(二項分類、多項分類、回帰分析)共にそれぞれモデルの品質を高めるための要素や指標が存在し、それらの設定を調整しながらモデルの品質を向上させていきます。

 最初のイテレーションでは当初予定していた程の予測モデルは得られない場合もあります。その際は「データの収集」→「特徴抽出処理(モデルがより良い予測を行える様に判断基準となる情報を用意する)」→「パラメータのチューニング」という一連のプロセスを繰り返し実践し、試行錯誤を繰り返しながらモデルの品質を高めていく必要があります。

予測の実行

 納得の行く機械学習モデルができたら、予測を実行します。Amazon Machine Learningでは、2通りの実行方法を提供しています。

  1. バッチ処理による予測実行:任意の件数のデータに対する予測実行をバッチ処理で一括して行います。
  2. リアルタイム予測実行:低レイテンシ環境(迅速なレスポンスを必要とする)の下でサンプルデータごとに1件ずつ予測を行いたい場合に使用します。

 ここまでが機械学習におけるモデル作成・予測実行プロセスの一連の流れです。定期的に予測対象となるデータの内容が変わる、サイクルごとにデータが増えるという状況であれば、その都度データを整え、モデルの再訓練を行い、あらためて予測実行していく必要があるでしょう。

さいごに

 以上、Amazon Machine Learningを実践する上で必要となるテーマについて、簡潔にではありますが解説させていただきました。次回以降では、実際にAmazon Machine Learningを実際にデータを交えながら使ってみる部分について、紹介・解説していければと思います。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • しんや(シンヤ)

    2010年末~2013年前半位までの期間で興味のある勉強会に頻繁に参加。参加してきた勉強会のレポートブログとTogetterをひたすらまとめ続け、まとめ職人(自称/他称含む)として暫く過ごしておりました。色々な縁あってDevelopers Summit 2013では『公募レポーター』も務めました。...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5