最終更新日:
こんにちは、AINOWインターンのゆかわです。
早速ですが、機械学習を勉強し始めたばかりの初級者の方は、機械学習に用いられている手法が多過ぎて、どれを知っておいた方がいいのかわからなくなっていませんか?
また、ある程度勉強を進めてきた中級者の方の場合は、実際に機械学習を使うにあたって、どのようにして手法を選択すれば良いか困っていませんか?
今回はそのような初級者、中級者の方へ向けた記事となっています。
目次
機械学習の分類
機械学習の手法は数多くありますが、大きく三つに分類することができます。
こちらの3つになります。順番に解説していきます。
教師あり学習
教師あり学習は、正解となるデータを機械に与えて学習させることで最適なモデルを導き出させる手法です。
予測、データ認識、データ分類、特定などに利用されています。
この教師あり学習では、トレーニングデータや教師データなどと呼ばれるサンプルとなるデータを利用します。このデータを基に正解・不正解が明確な問題の解決に活用することが出来ます。
教師あり学習で利用されるアルゴリズム(計算方法や手順)としては、回帰と分類が代表的な例であり、回帰は予測や分析に利用され、分類はカテゴライズする際に利用されます。
教師あり学習は学習と認識・予測の2段階のプロセスで構成されており、このプロセスを実現するアルゴリズムとして回帰と分類が使用されます。活用例として以下のようなものが挙げられます。
- 画像認識(画像に写っているものを認識する技術)
- 音声認識(声がもつ情報をコンピューターに認識させる技術)
- 人物認識(ある画像に人物が映っていた場合、その存在を人物として把握する技術)
- 言語処理(人が使っている言語をコンピュータで処理・分析する技術 別名NLP )
- 投票予測(特定の政党や候補者がどのくらい票を獲得するのかを過去の結果や支持率から予測する技術)
- スパム判定(文章の内容や特徴からスパムかどうかを判定する技術)
- 相場予測(相場の今後の動きを過去の傾向から予測する技術)
教師あり学習を利用する目的は、データを実用的な価値へと昇華させることです。
近年は過去のデータを活用して今後の予測を導き出すことで、ビジネスに役立てることが重要となっています。
実際に株価や投票、住宅価格の予測に教師あり学習が活用されています。
データは単体では実用的な価値があるとはあまりいえません。しかし、正解・不正解のラベルを付与した状態で学習材料として機械に与えることで機械は自動で認識や予測などが可能となるためサンプルとして大きく役立てることが出来ます。
認識や予測などの行為を機械に頼らず、人の手で行うことは可能ではあります。しかし、この場合は膨大なデータを多くの項目・観点から一つ一つ確認する必要があります。それによりコストと手間が多くかかるため実際に行うことは非常にハードルの高い話になります。
そこで、教師あり学習を活用し、AIに学習させることでその精度を上げることができれば、これらの負担の削減に繋がり、教師あり学習で用いられるデータには実用的な価値が付与されます。
グローバル化が進み構図が複雑化した現代社会では、人間の頭だけで正確な予測や認識をすることはほぼ不可能です。そのため、教師あり学習を受けた精度の高い機械がより大きな価値を持つようになっていくでしょう。
▼関連記事はこちら
・教師あり学習とは?覚えておきたい機械学習の学習手法概要>>
・教師あり学習とは?概要や手法など機械学習の基礎となる知識を解説>>
教師なし学習
教師あり学習と対をなす存在が教師なし学習となります。
教師なし学習は、学習データに正解を与えない状態で学習させる学習手法です。
教師なし学習では予測や判定の対象となる正解が存在しないため、教師あり学習とは違い回帰や分類の問題には対応できません。
そのため、入力データをそのまま与えて、学習を進められる点が大きな特徴となります。もともと正解となるデータがないため、データの構造や法則性などの関係をコンピュータが自動で解析して抽出する手法になります。
教師なし学習では、クラスタリングやアソシエーション分析を行うことが出来るため、特に何かを意識していなくても多くのモノを見た際に自然と区別することができる人間の能力に近い状態と言えます。
クラスタリングとはデータに内在するグループ分けを見つけ出すことです。一方、アソシエーション分析とはデータの大部分を表すようなルールを発見することになります。
教師なし学習の具体例として以下のものが挙げられます。
- 顧客セグメンテーション(とある共通点に基づいて顧客をグループ分けする)
- ターゲットマーケティング(細分化した市場から特定の顧客層を絞り込んで行うマーケティング)
- 主成分分析(多くの量的な説明変数を、より少ない指標や合成変数に要約する)
- レコメンド(ユーザーの検索履歴や閲覧履歴などの行動履歴を分析し、そのユーザーにあった関連商品などを表示する)
ここからわかる通り、教師なし学習はEC業界(電子商取引にかかわるツールやサービスを提供している業界)を筆頭に多くの場面で欠かせない存在となっています。
この教師なし学習では、データを分類して扱いやすくすることと未知のパターンを発見して正解・不正解が明確でない問題を解決することの二つを目標にしているため、今後の社会の発展には欠かせない存在です。
▶【教師なし学習】クラスタリングとは? – 活用事例とコード例も解説!>>
強化学習
最後にご説明するのが強化学習です。最も想像しづらく「なにそれ?」と思う方が多くいることでしょう。
強化学習とは、AIやコンピューターなどにデータを与えて学習させ、エージェントが与えられたデータを手掛かりに自主的に試行錯誤して、新しく発見することでデータの価値をより高くする学習方法です。
この強化学習までの過程には、いくつかの「アルゴリズム」が存在します。主要な3つは以下の通りです。
- DP法(対象とする問題を細分化し、計算・処理していくことで学ぶこと)
- MC法(手さぐり的に実行を繰り返すことで学習すること)
- TD法(DP法とMC法を組み合わせて行うそれぞれのメリットを活用したアルゴリズム)
これらのアルゴリズムを行った強化学習の具体例が以下の通りです
- 囲碁AIや将棋AI(勝負をしながらコンピューターが自発的に学び、試行錯誤を重ねることでより良い選択を探る)
- 掃除ロボット(掃除をしながら効率的な掃除のやり方ができるように学習することで、継続的に適したルートを選択できる)
- 産業ロボット(行動結果を分析し、より的確な動作を理解できる)
ここからわかるように強化学習の目的はコンピューターが学習と知識を自律的に高め、自発的に動作させることで現場の作業者の負担を減らすことにあります 。少子高齢化が進み、労働力不足の対策が求められている日本社会にとって大きく解決へとつながる技術であると言えるでしょう。
▶強化学習とは?機械学習との違いなどの用語解説や活用事例などをご紹介>>
チートシート
scikit-learn
機械学習のオープンソースライブラリとして、初学者の方にも馴染みのある「scikit-learn」では、機械学習アルゴリズムのチートシートが用意されています。個人・商用を問わず、誰でも無料で使用することが出来るので、機械学習の手法を実際に試してみたい方は、scikit-learnとこのチートシートを活用することで、さまざまな手法を体験することができます。
Azure Machine Learning
機械学習のクラウドプラットフォームとして代表的なAzure Machine Learningの公式ページにもチートシートが公開されています。
Azure Machine Learningに用意されている分類やレコメンド、クラスタリング、異常検出や回帰、テキスト分析などのアルゴリズムを選択する際に、活用することができます。
また、その他にも機械学習のアルゴリズムの選択方法を解説した記事も公開されています。
SAS Institute Japan
SAS Institute Japanは、同社のブログにて、機械学習アルゴリズム選択チートシートを翻訳・編集し、公開しています。
Yes / No か 高速性/正確性 の2択が用意され、最終的にたどり着いたものが推奨されるアルゴリズムになるわかりやすいデザインになっています。
初心者レベルのデータサイエンティストが対象とされているので、初学者の方はぜひ参考にしてみてください。
機械学習アルゴリズム選択ガイド機械学習の手法【比較一覧】
手法 | 難易度 | 分類 |
線形回帰 | 初級者 | 教師あり学習 |
ロジスティック回帰 | 初級者 | 教師あり学習 |
サポートベクターマシーン | 初級者 | 教師あり学習 |
決定木 | 初級者 | 教師あり学習 |
ランダムフォレスト | 初級者 | 教師あり学習 |
ニューラルネットワーク | 初級者 | 教師あり学習 |
ナイーブベイズ | 初級者 | 教師あり学習 |
k-means | 初級者 | 教師なし学習 |
主成分分析 | 初級者 | 教師なし学習 |
ブースティング | 中級者 | 教師あり学習 |
スタッキング | 中級者 | 教師あり学習 |
CNN | 中級者 | 教師あり学習 |
RNN | 中級者 | 教師あり学習 |
GAN | 中級者 | 教師なし学習 |
▶データサイエンスの手法をわかりやすく解説 – データ分析手法も紹介>>
初級者が知っておくべき機械学習手法9選
教師あり学習
線形回帰
目標の値を予測するための式を、線形多項式(y=θ0+θ1×1+θ2×2+θ3×3のような式)を使って表す、非常にシンプルなモデルです。
回帰問題を解く上で最もシンプルなモデルの一つで、そのシンプルさゆえに、実装が簡単かつ学習にかかる時間も短いですが、難しい問題に対しては十分に学習できない恐れがあります。
ロジスティック回帰
名前に回帰とは入っていますが、このモデルが解くのは分類問題です。ややこしいですね。
このモデルは、線形回帰の時に使われたような線形多項式に、ロジスティック関数(もしくはシグモイド関数とも呼ばれます)を適用することで、分類問題を解けるようにしただけのものです。
なので、回帰問題に対して線形回帰モデルがそうであったように、分類問題に対して最も簡単なモデルの一つと言っていいでしょう。
サポートベクターマシン(SVM: Support Vector Machine)
こちらもロジスティック回帰と同様に、分類問題を解くモデルです。
※実はサポートベクターマシンは回帰問題にも使えるのですが、ここでは簡単のために分類問題で説明します
このモデルでは「マージン最大化」がキーワードです。
これはデータをクラスごとに分けるときに、境界とその近くの点との距離がなるべく大きくなるように境界を決めるというものです。
これにより、未知のデータに対しても、精度良く予測ができるようになります(これを汎化性能が高いと言います)。
この後で紹介するランダムフォレストと並んで、昔から人気の手法です。
決定木
決定木とは、ツリー状に条件分岐を繰り返すことによって分類するクラスを予測するモデルです。枝分かれ部分の条件は、データの変数を使って作ります。
こちらもサポートベクターマシン同様、回帰問題に使うこともできます。
ランダムフォレスト
これは決定木を大量に作成し、それぞれの決定木で得られた結果を平均したり多数決をとったりすることで、より汎化性能が高くなっているモデルです。
ここで、それぞれの決定木は似たようなものであっては意味がないので、訓練データを分割してそれぞれの木に別々に割り当てたり、枝分かれ部分で使う変数を木ごとに変えたりすることで、多様な決定木を作ります。
ニューラルネットワーク(NN: Neural Network)
2010年代にAIが注目される火付け役となったディープラーニング技術ですが、人間の脳の神経細胞のつながりを模したニューラルネットワークを多層に重ねることで、高度な画像認識などが可能になっています。まさに、AIのブームが起きた理由となっているのがこのニューラルネットワークです。
ニューラルネットワークの構造は、複数の入力を受け取り、それをもとに出力する「ノード」が、いくつも連なって一つの層を成し、その層がさらに何層にも積み上がることで、複雑な問題に対しても高い精度で予測できるようにするというものです。
層は基本的に、入力層、隠れ層、出力層に分けられます。このうち、隠れ層の層の数を増やす(層を深くする)ことで、より困難な問題が解決できるようになるという事例がいくつも認められていて、これがいわゆるディープラーニングへとつながります。
ナイーブベイズ
この手法はベイズの定理という、統計学では基礎として用いられている有名な定理を使って、それぞれのクラスに分類される確率を計算し最も確率の高いクラスを結果として出力する、分類問題を解くためのモデルです。
計算量が少なく処理が高速であるため、大規模データにも対応できますが、やや精度が低いといった問題があります。
スパムフィルターなどの、テキスト分類のタスクで使われることが多いです。
教師なし学習
k-means
クラスタリングという、与えられたデータを似たもの同士でグループ(クラスタ)に分けるときに使われる手法です。
仕組みとしてはまず、指定された分類数に基づいて適当に各データにクラスタを割り当てます。
その後、それぞれのクラスタで重心の位置を計算します。
するとデータによっては、元々指定されていたクラスタよりも、他のクラスタの重心の位置の方が近い、ということが起こります。
そのようなデータは重心が近い方のクラスタを割り当てなおし、また重心を計算して〜…を繰り返すと、最終的に距離の近いデータ同士が同じグループに分けられるようになります。
主成分分析(PCA: Principal Component Analysis)
機械学習を行う上で、データに与えられた特徴量が多すぎると、過学習を起こしてしまったり、学習時間が長くなってしまうなどの問題があります。
そこで、不必要な特徴量を減らし、より少ない特徴量で予測できるようにする、次元削減というものが必要になります(次元とはデータの特徴量の数のこと)。
次元削減をすると、元々のデータが持っていた情報はある程度失われてしまいますが、主成分分析hそうした損失を抑えるために、特徴量の分散などを使って計算します。
中級者が知っておくべき機械学習手法5選
決定木の進化系(アンサンブル学習)
決定木とは初級編でも説明した通り、条件分岐を繰り返して予測するツリー上のモデルでしたが、このモデルの精度を高める方法に、アンサンブル学習というものがあります。
アンサンブル学習とはモデルを複数用意して、各モデルの出力をまとめることで、より良い予測をさせようというものです。
実は初級編でも触れたランダムフォレストは、このアンサンブル学習のうちの一つ、バギングという手法を使っています。
アンサンブル学習には他にもブースティングやスタッキングといった手法があり、ここではその二つについて説明していきます。
ブースティング
近年ランダムフォレストを超える人気を見せており、kaggleなどのデータ分析コンペでの上位入賞者にもよく使われているのが、LightGBMやXGBoostといったブースティングを使ったモデルです。
ハイパーパラメータの調節や過学習対策の難しさはありますが、NNなどと並んで現在最も強力な手法の一つと言っていいでしょう。
ランダムフォレストが使っているバギングという手法との違いは、バギングがモデルを独立に増やしていくのに対し、ブースティングは逐次的にモデルを増やす(あるモデルが間違えた問題に対して正解しているモデルを追加していくなど、前のモデルの結果を受けて次に足し合わせるモデルを決める)という点です。
これによって、バギングよりも高い精度を得られるようになりました。
ただし、モデルの数を増やすと汎化性能が高まるバギングと違い、ブースティングの場合はモデルを増やしすぎてしまうと過学習に陥ってしまうので、どこまで増やすかには注意する必要があります。
また、ブースティングはバギングと違って並列処理ができないので、時間も多くかかってしまいます。
スタッキング
こちらもブースティング同様、Kaggleの上位入賞者などに愛用される強力な手法となっていますが、ブースティングかスタッキングのどちらかを選択して使うというものではなく、同時に用いられることが多いモデルです。
というのも、スタッキングとは複数のモデルを積み上げる手法で、どの積み上げるモデルの一つにLightGBMやNNなどが用いることで、高い精度を出すことができるのです。
仕組みとしては、まず一層目にいくつかのモデルを用意し、それぞれのモデルからの出力を、次の層(これもまた選ばれたいくつかのモデルからなります)への入力として用い、その出力をまた次の層への入力とし〜…を繰り返すことで、最終的な予測値を得るというものです。
過学習などに気をつけながら、どのモデルをどの層に使うかなどを考えなければならず、非常に難しい手法となっていますが、その分とても強力です。
NNの進化系
ディープラーニングが注目されるのに伴い、ニューラルネットワークもタスクやデータの形ごとに特化したモデルが様々提案されてきました。
今回はその中でも基本的な、CNN、RNN、GANについて触れていきたいと思います。
CNN(Convolutional Neural Network)
CNNは、画像関連のタスクにおいて非常に効果的なモデルです。
例えばあの有名な、Googleが猫の画像をコンピュータに見せて猫の画像を認識させた、というのもこのCNNのモデルが使われました。
CNNの大きな特徴は、畳み込み層とプーリング層です。これらの層がどういった操作を行なっているかということについては割愛します(興味がある人はオライリーの「ゼロから作るDeep Learning」を読んでみてください)が、これらの層を何層にも重ねていくことで、入力画像からより抽象的な情報を抽出することができるようになり、そうして抽出された情報をもとに、複雑なタスクに対しても、高いパフォーマンスを出しています。
RNN(Recurrent Neural Network)
RNNは、時系列データの解析や自然言語処理といったタスクにおいて効果的なモデルです。
時系列データとは、例えば株価のように、時間の経過とともに値が変化するようなデータのことを指します。
一方で自然言語処理とは、私たちが普段使う言葉に関するもので、文章の意味を理解したり、ある言語から違う言語へ翻訳したりといったことを目的にします。
ここで時系列データにとって、ある時刻の情報とそれ以前の時刻の情報の関係が重要であるように、自然言語にとっても、文章中のある言葉とその前の言葉の関係(例えば主語の後には動詞が来るとか)が重要になります。
RNNはそのような過去の情報も考慮した計算ができるので、上で述べたようなタスクに対して有効となっています。
GAN(Generative Adversarial Networks)
これは今までにご紹介した手法とは異なり、入力されたデータから新しいデータを作り出して出力する、生成モデルと呼ばれるモデルの一つです。
本当はもっと詳しい数学的理論がありますが、簡単に仕組みを説明すると、GANは生成器と識別器という二つの部分からなります。
生成器はより本物に近いデータを作ることを、識別器はそれが本物かどうかをより正確に見分けることを目的にし、お互いに学習していきます。結果として、よりリアルなデータを生成できるようになるのです。
一時期世間を騒がせたDeepFakeも、このGANを使っていたように、GANをめぐっては現在様々な研究が行われています。今後もGANを用いて、さまざまなことが実現されていくでしょう。
手法選択のコツ
まず大事なことは、与えられたデータがどのような種類であるのか、どのようなタスクを行いたいのかを確認することです。
例えば手元のデータが、どのクラスに属するか分かっていて、未知のデータがどのクラスに分類されるか知りたいなら、上のチートシートに従って、ロジスティック回帰やNN、勾配ブースティング木などが候補になることでしょう。
ここで、候補が複数ある場合、どのモデルが最も良いかを判断するのはそう簡単ではありません。
もちろん上の表を使えば、例えば特徴量が少ないようなデータに対しては、NNのような複雑なモデルを使うと過学習を起こしてしまうので、構造がより単純な、ロジスティック回帰やSVMなどを使ってみようとするでしょう。
しかしながら上の表の評価はあくまでも目安であり、データとの相性によっては必ずしもこの通りでなかったりします。
またそもそも、どの程度の特徴量を持つデータなら複雑なモデルを使わなければいけないのか、などの絶対的な評価基準というものを見つけるのはなかなか難しいです。
結局のところ、タスクによって使うモデルを絞り込んだ後は、絞り込んだ中からある程度の目安に従ってモデルを選び、実際に動かして比較してみるということが一番大事です。
おわりに
この記事では紹介できてない手法も多々あります(特に教師なし学習などに関しては、教師あり学習ほどの人気はないことを考え、基本的なもの以外は割愛しました)が、初級者中級者の人ならばこれさえ知っておけば十分だろう、というものを大方網羅しました。
皆さんの今後の学習の助けになれば幸いです。
今回は様々な手法をご紹介するということが一番の目的だったので、詳しいところまでは触れていませんが、実際にモデルの原理となっている数式やアルゴリズムを知り、腹落ちさせれば、より深い理解が得られるはずです。
もし余裕があれば、理解できそうな簡単なモデルからでもいいので、ぜひ詳しい仕組みを調べてみてください。