(Photo by: yumikrum)
はじめに
未来を知りたいと思ったことはありませんか?近年、「機械学習」の発展により、ある程度の精度で未来を予測できるようになりました。しかし、初心者が機械学習に挑もうと思っても、難解な数学的理論に阻まれてしまうでしょう。でも安心してください。「Amazon Machine Learning(以下ML)」を使うことで、誰でも簡単に機械学習を使って未来予測ができるようになります。
この記事では、機械学習で未来予測をしたいエンジニアの方のために、機械学習の概要を説明した後で、MLでの機械学習について解説していきます。
機械学習とは何か?
機械学習とは、人工知能(AI)の一分野で、人間が行っている学習を人工的に再現する技術を指します。近年のAIの目覚ましい発展も機械学習のおかげです。2045年には「シンギュラリティ」を迎え、AIが人類の知能を超えると言われています。AI以外にも機械学習は使われています。例えば、売上の予測や顔認識、写真の分類などです。一口に機械学習と言っても、多数の種類があり、複数の数学的理論に基づいています。
基本的な機械学習の流れ
機械学習には、「データ(学習用・本番用)」と「学習機械(アルゴリズム)」が必要です。まずは、学習機械に学習データを入力して、学習させます。すると、「学習済み機械」を得られます。
[学習データ] 入力→ [学習機械] = [学習済み機械]
そして、学習済み機械に「本番データ」を入力すると、学習結果に基づき、「予測データ」が出力されます。
[本番データ] 入力→ [学習済み機械] 出力→ [予測データ]
これが機械学習の基本的な流れです。
機械学習の種類
機械学習は大きく分けて、次の2種類に分類できます。どちらが優れているというわけではなく、用途やデータにより使い分けが必要です。
教師あり学習
ここで言う「教師」とは、学習データに含まれている「答え(正答)」のことです。例えば、画像の分類をするなら、猫の画像には猫、犬の画像には犬、というふうに答えを付けておきます。この答えは人間が用意してやる必要があります。学習データに答えが含まれている場合は、こちらの方法が適しています。
教師なし学習
教師なし学習では、学習データに正答は含まれていません。不思議に思うかもしれませんが、それでも学習できるのです。先の例で言うと、猫や犬の画像の特徴を理解して、グループに分類します。猫か?犬か?ではなく、同じ特徴を持っているか?で分類するのです。そのため、それが猫なのか犬なのか知る必要はありません。
MLがサポートしている機械学習の種類
MLがサポートしているのは、上述の「教師あり学習」に分類される次の3つの方法です。
バイナリ分類(バイナリ属性)
バイナリという名の通り、データを2つの属性に分類します。画像の分類なら、猫か犬か分類する、といった具合です。3つ以上になる場合には、次の複数クラス分類が使用されます。
複数クラス分類(カテゴリ属性)
こちらは、3つ以上の属性を分類できます。なぜ、2つと3つ以上で分かれているかというと、内部で使用されるアルゴリズムが異なるためです。
回帰(数値属性)
求める答えが分類ではなく、数値データの場合には回帰が使用されます。例えば、次年度の売上を予測するなど、数値で予測データを求めたい場合です。
なお、これらについてはユーザーが選択する必要はありません。データに応じて、何が適切なのかMLが自動的に判断します。
MLで機械学習を実行する流れ
入力データを準備する
まずは、入力するデータを用意する必要があります。MLでは、これを「データソース」と呼びます。データソースは、S3やRedshiftなど他のAWSサービスから取り込みます。S3であれば、事前にCSV形式のデータを保存しておけばOKです。
データソースを読み込む
データソースを読み込むと、型の指定を求められます。データに基づいて、予め既定値が指定されています。間違っているものだけを修正しましょう。
それから、データソース中から予測するデータを指定します。売上を予想したかったら、売上の列を指定するということです。この選択に基づき、機械学習アルゴリズムが決定されます。また、予測結果をグループ化したい場合などにはIDを別途指定します。
モデルを作成する
先ほど取り込んだデータソースを元に、「モデル」を作成します。モデルとは、学習済み機械のことです。学習には設定が必要なのですが、それには機械学習の知識が必要です。幸いデフォルトの推奨設定が用意されていますので、それを使いましょう。
モデルを評価する
次に、作成したモデルを「評価」します。評価とは、どれぐらいの精度で予測できるかテストすることです。テストは、学習に使用しなかったデータソースの一部を使って行われます。結果は数値で示されますが、数値の意味がわからなくても問題ありません。直感的に分かるように色やグラフで示してくれます。結果が芳しくない場合には、チューニングも可能です。
モデルを使ってデータを予測する
モデルの予測精度に問題がなければ、未知のデータを使って予測できます。データソースと同じ手順で予測したいデータを取り込み、モデルに入力します。この方法は、「バッチ予測」と呼ばれます。なお、予測結果はS3に保存されます。
もう一つ別の方法として、「リアルタイム予測」も用意されています。この場合、モデルに対してエンドポイントを作成します。そうすれば、AWS CLIやSDKなどから予測結果のリクエストができます。あなたのサービスに組み込んでもよいでしょう。
まとめ
機械学習は一から学習しようと思うと、大変です。Amazon Machine Learning(ML)を使えば、ほとんど機械学習の知識なしに、未来予測ができます。機械学習の応用範囲は広いので、アイディア次第で色々なことに使えるでしょう。リアルタイム予測エンドポイントを使えば、あなたのサービスに機械学習を組み込めます。顧客の行動を予測すると、収益性を高められるかもしれません。あなたはどんな未来を予測したいですか?
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments