機械学習では数多くのアルゴリズムが生み出されており、さまざまな種類のデータを目的に沿って解析・処理できるようにアルゴリズムの開発が続けられています。
仕事で機械学習を活用する際には、どのアルゴリズムを適用するべきなのか、適切な判断が必要です。
一方で、種類が多く難解な機械学習のアルゴリズムの違いを把握し、適切な手法を選択するのは簡単ではありません。
この記事では以下のような内容を解説し、機械学習のアルゴリズムを適切に選択したり、それらの学習方法を選択したりできるような状態を目指します。
- 機械学習のアルゴリズムとは
- 代表的なアルゴリズムの特徴
- 機械学習アルゴリズムの使い分け方
- 機械学習アルゴリズムを学習する方法
まだ機械学習のことを十分に学習していなかったり、数式に強くない文系の方でもわかりやすいように、数式を使わずに解説していきます。
この記事を読んで、適用するデータや解析の目的に合わせて適切な機械学習アルゴリズムを使えるようになりましょう。
機械学習アルゴリズムとは
機械学習のアルゴリズムとはどのようなものを指しているのでしょうか?
アルゴリズムを簡単に言いかえると計算方法のことです。
機械学習を用いる場合、あるデータを分析・処理することで、求めたい結果を得る必要があります。
この結果をいかに短時間で効率よく得られるか?という点に着目し、さまざまな特徴を持ったアルゴリズムが研究・開発されています。
計算したいデータと求めたい結果に対して適切なアルゴリズムを選択できない場合、最適な解にたどり着けなかったり、莫大な計算時間がかかってしまう可能性があるため、注意が必要です。
機械学習モデルと機械学習アルゴリズムの違い
機械学習ではアルゴリズムではなく機械学習モデルという言葉が使われることがあります。
この機械学習モデルと機械学習アルゴリズムは違うものなのですが、混同してしまう人も多いため一度確認しておきましょう。
機械学習モデルとは、何らかの入力をモデルに入れると適切な出力を出してくれるもののことで、機械学習において人間の頭の代わりに判断してくれる部分です。
主に教師あり学習で登場するもので、たくさんの教師データを元にモデルが構成されます。
入力に対して、いかに正解に近い出力を出せるかでモデルの精度が判断されます。また、精度の他にもデータを処理する際の速度も重要視される場合がほとんどです。
機械学習のモデルは与えた教師データからアルゴリズムに基づいて生成されるもので、与える教師データやパラメータ設定によって異なります。
一方で、機械学習アルゴリズムは特定の手法のことなのでより一般的なものを指すという違いがあります。
機械学習アルゴリズムの種類と特徴を比較
ここからは機械学習アルゴリズムの種類と特徴を解説します。
機械学習アルゴリズムは大きく以下の3種類に分けられるため、それぞれの特徴と代表的なアルゴリズムを確認しましょう。
- 教師あり学習
- 教師なし学習
- 強化学習
それぞれのアルゴリズムには特徴があり、目的によって使い分けることで期待通りの結果を得られる可能性が高くなります。
教師あり学習
機械学習を現実の課題に適用する場合には、多くがこの教師あり学習に分類されるアルゴリズムに基づいて解析されます。
教師あり学習は、判断するための基準を構築するために必要なデータ(教師)を人間が機会に与えることで教師データを生成し、それに基づいて判定を行う手法です。
もっとも一般的に使われる手法のため数多くの解析方法が開発されており、今回は5つの手法を紹介します。
線形回帰
線形回帰は古くから広く使われている予測モデルです。
例えば、ある地域における住宅の広さと家賃の関係を収集しグラフにまとめると、これらには相関関係がみられ一次関数で表現可能です。
多くの場合、住宅の広さが広くなれば家賃が上がり、狭くなれば家賃は下がります。
さらに築年数や設備の有無などの変動要素を加えることによって、より複雑な予測ができるようになります。
他にも、企業の売上予測や環境科学などさまざまな分野で活用されている基本的な手法です。
ロジスティック回帰
「確率」は必ず0から1の範囲で表現されますが、その確率を回帰分析で求めたい場合にはどのような手法を用いればよいのでしょうか?
一般的な線形回帰や重回帰分析を行うと、入力値次第では0から1の範囲で表現できない結果が示され、どのように解釈すればよいのか難しくなってしまいます。
ロジスティック回帰分析を用いると必ず分析結果が0から1の間に収まるため、確率を扱う場合には重宝します。
線形回帰分析は直線で表現可能ですが、ロジスティック回帰分析は直線で表現できない非線形回帰分析の分類です。
具体的な計算は複雑な数式が必要になるので割愛しますが、がんの発症率や宝くじの当選確率などの確率を予測したい場合には使用する可能性があるので、覚えておきましょう。
ブースティング
狙いの入力と出力の関係について緩やかな相関を持つモデルを用いてデータを分析し、その結果分類がうまくいかなかったデータに着目して、新たな緩やかな相関を持つモデルを作成する。
これらを繰り返し行っていくことで、複数の緩やかな相関を持つモデルができますが、それを最後にまとめることで、強い相関があるモデルを生成する手法がブースティングです。
まとめる際にはそれぞれのモデルに対して重みをつける必要がありますが、誤分類が多いモデルの重みを小さくし、誤分類が少ないモデルの重みを大きくすることで相関を強めます。
可視化しにくいため目に見えにくいですが、強い相関を持つモデルの生成を最初から実現するのは難しい場合に重宝する手法です。
ランダムフォレスト
ランダムフォレストは決定木を複数組み合わせることで、判定の精度を上げていく手法です。
決定木は、ある事柄を分類する際にYes/Noで回答できる質問を複数組み合わせる際に、その質問(分類するルール)をツリー状に表現したものです。
決定木には既に紹介した分類木と、回答を推定する回帰木があります。
ランダムフォレストは複数の決定木の結果を多数決を取ることで最終的な結論を導き出します。
同じ決定木を複数結論を作っても意味がありませんので、それぞれ異なるデータを元にしたり、異なるルールを設定することで、結論の精度を向上させることが可能です。
サポートベクターマシン
サポートベクターマシンはある分類をする際に、区切る線とそれぞれのデータの距離がもっとも大きくなるようなルールを設定する方法です。
サポートベクターはデータを分類する際に必要な特定の因子のことで、それらを利用する手法なのでサポートベクターマシンと呼ばれます。
サポートベクターを決める際に、冒頭で紹介した「データの距離がもっとも大きくなる」=「マージン最大化」という考え方を用いています。
教師なし学習
教師なし学習は、事前に正解となるデータを与えない状態で、処理をしたい学習データの中から学習をさせる手法の総称です。
例えば、Gmailなどのサービスでは受信したメールを迷惑メールかどうか自動で分類する機能がありますが、これは事前に教師となる学習データを与えずに受信したメールの中で分類を進めていきます。
ここでは教師なし学習に分類される手法を2つ紹介します。
クラスタリング
与えたデータの中からデータの持つ特徴の類似度を元に、データをグループ分けしていく方法がクラスタリングです。
例えばネットショッピングをしている際に商品をおすすめされる場合がありますが、これはクラスタリングの機能を適用することでおすすめの商品が決定されます。
グループ分けというと分類と似ていますが、分類は事前に教師となるデータを与えていますので、教師データを与えないクラスタリングとは異なります。
アソシエーション分析
ビッグデータを活用する際にデータ間の意味のある相関関係を発見する際などに、このアソシエーション分析が使われます。
あるデータとルールに対して、ルールが出現する割合を表す支持度、ルールに用いる条件1が出現する中で条件2も同時に出現する割合を表す確信度、条件2を満たす中で確信度を満たす割合を示すリフト値などを用います。
有名な話としては、米国のスーパーマーケットでアソシエーション分析を活用した結果、紙おむつとビールが一緒に変われていることがわかり、それらを並べて陳列することで売り上げが上昇したといった話です。
強化学習
強化学習はある環境の中で報酬(スコア)を最大化させるように、機械自身が試行錯誤をして学習していきます。
システム自身が試行錯誤しながら報酬を最大化させる能力を強化していくため強化学習と呼ばれており、ディープラーニングの出現によって再度大きく発展しました。
強化学習に分類されるアルゴリズムを3種類、簡単に紹介します。
Q学習
ある複数の状態それぞれに対して最適な行動を与える関数を求める代わりに、ある複数の状態それぞれに対してある行動をした際にはどの程度の報酬が合計でもらえるのかを求めます。
この報酬が最大になるものを求めることによって、ある複数の状態それぞれで最適な関数を求める手法をQ学習と呼びます。
ここで、Qが示すものは報酬の合計で、単独の報酬とは異なる点が分かりにくいので注意が必要です。
Sarsa
State,Action,Reward,State,Actionの頭文字をとってSarsaと呼びます。
Q学習と似ており、その違いは関数の更新方法です。
Q学習では価値となるQ値が最大になるような関数を作っていきましたが、SARSAでは先に行動を決定してからQ関数を求める点で異なります。
Q学習よりも解を求めるまでの時間が遅くなりますが、その代わりに局所解に陥りにくい点が特徴です。
モンテカルロ法
モンテカルロ法はシミュレーションや数値計算を乱数を用いて行う手法の総称で、ランダム法とも呼ばれます。
コンピュータを用いて乱数の発生と計算を繰り返すことで、試行回数を増やせば増やすほど結論は一定の値に収束し、近似解が得られるという考え方です。
例えばコインを投げたときに表と裏の出る確率を人力で繰り返し実施して求めることは難しいですが、コンピュータを用いれば最終的には50%ずつという近似解に近づいていきます。
機械学習アルゴリズムの選択・使い分け
ここまで複数のアルゴリズムを紹介してきました。では、自分が適用したい課題に対してどのアルゴリズムを選択し、使い分けをすればよいのでしょうか?
- 学習データの規模、品質、性質
- 使用出来る計算時間
- データの利用目的
これらを考えることで、機械学習アルゴリズムを分類できます。
特に初心者のうちは内容を把握できているアルゴリズムも多くないため、まずは導入しやすく結果が得られやすいアルゴリズムを選ぶのが良いでしょう。
きちんと結果を理解し、その結果を改善することを目指してより良いアルゴリズムを学び、試していくことで結果のブラッシュアップをしていくことが可能です。
最初から最適と言われるアルゴリズムを、自分が十分に理解せずに無理に使っても、得られた結果に対して適切な考察や判断ができません。
- 機械学習で解決したい課題を明確にする
- 自分が理解できる単純なアルゴリズムを試す
- より複雑なアルゴリズムを試す
このようなステップで取り組むことで、よりよい結果を得られるようになります。
機械学習のアルゴリズムを学ぶ方法
機械学習のアルゴリズムはさまざまなものがあり、それぞれ特徴があります。
実際に使いこなすためにはアルゴリズムを理解する必要がありますが、具体的にはどのように学んでいけばよいのでしょうか?
ここでは、3つの手段について見ていきます。
セミナーに参加する
人工知能や機械学習の需要が高まるにつれて、機械学習を学ぶセミナーが各地で開催されています。
また、オンラインセミナーも盛んにおこなわれるようになっており、比較的安価に必要なアルゴリズムを学べる環境になってきました。
特にUdemyでは機械学習の動画教材が500本程度公開されており、安いものでは2,000円弱から受講することが可能です。
日本語の講座よりも英語の講座の方が充実しているため、英語が得意だとより効率的な学習に繋げられます。
本で学ぶ
機械学習のアルゴリズムを学べる本を2冊紹介します。
見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑
種類が多く複雑な機械学習アルゴリズムをオールカラーの図で表現し、アルゴリズムごとにわかりやすく解説しています。
機械学習の学習初心者だけではなく、実際に機械学習を業務で使用している方にもおすすめです。
機械学習のエッセンス -実装しながら学ぶPython,数学,アルゴリズム
機械学習のいくつかの有名なアルゴリズムを、自分でゼロから実装することを目標とした本です。
ただ単に使えるようになるだけでなく、機械学習の仕組みを理解することで応用力と問題解決力を身につけることができるようになります。
これから機械学習を始める学生に加えて既にデータ分析の仕事を始めているエンジニアにもおすすめです。
仕事の中で実践する
学校に行きながらや他の仕事をしながら機械学習のアルゴリズムの学習に、取り組むのは簡単ではありません。
初学者や未経験者であったとしても機械学習を扱うエンジニアとして就職し、仕事の中で実践しながら身につけていくのも一つの選択肢です。
特に機械学習のアルゴリズムは概念を学習するだけでは使えませんので、今後機械学習を仕事にしていきたい場合には、早いタイミングで仕事にしてしまうことも考えましょう。
機械学習アルゴリズムの学習と実践のどちらが優先か?
機械学習アルゴリズムを学んでいくことは重要ですが、実際にデータを使って実践するのとはどちらを優先するべきでしょうか?
結論としては、機械学習の学習をひたすらするよりも実践を優先しましょう。
機械学習の使い分けの項でも解説しましたが、理解しているアルゴリズムを実際に使っていくことで理解を深め、その後さらに複雑なアルゴリズムの学習を進めるのが重要です。
機械学習の学習ばかりを優先してしまうと知識だけはつくものの、実践で使える勘やコツといったものが身に付かず、さらに壁にぶつかったときに解決ができなくなります。
学習だけでなく、実践もバランスを取りながら進めていきましょう。
まとめ
機械学習を使っていくにあたってアルゴリズムの学習は避けて通れません。
- 教師あり学習
- 教師なし学習
- 強化学習
大きくはこの3種類に大別できますが、それぞれさらに特徴に応じてアルゴリズムが分類されるため、さまざまなデータに対して目的に応じた分析をするためには、複数のアルゴリズムを身につける必要があります。
まずは難易度がそれほど高くなく取り組みやすいものを学び、それを実際にデータを用いて実践してみましょう。
結果を解析し、さらに良い結果を得るために新しく複雑なアルゴリズムを学んでいくように、学習と実践のバランスをとって進めていくのが重要です。
学習を進める際にはセミナーや参考書を上手く活用しながら、機械学習のアルゴリズムを身につけていきましょう。