機械学習をどこよりもわかりやすく解説! 教師ありなし学習・強化学習だけでなく5つのアルゴリズムも完全理解!

最終更新日:

AINOW編集部作成

こんにちはAINOWインターンのさとしです。今回の記事ではAIやディープラーニングと混同されがちな機械学習について、それらの関係性・違いを理解できるように細かく説明します。

また、機械学習を知る上で必要不可欠な用語(教師あり学習や教師なし学習、各アルゴリズムなど)も頭の中でごちゃごちゃになってしまっていると思いますが、この記事を読むことで、そのような用語を網羅的に、且つきちんと整理・理解できるようにわかりやすく説明していきます。

機械学習とは

機械学習とはAIの1つの要素技術です。

多くの企業で取り組むことができる技術の1つでしょう。機械学習について理解するのに必要なことは3つあり、以下のようになります。

  • データからルールやパターンを発見する方法である
  • 識別と予測が主な使用用途である
  • 分析の精度は100%ではないが、従来の手法より精度をあげられる可能性は高い

機械学習・AI・ディープラーニングはどのような関係?

世間を賑わしているAIや機械学習とディープラーニングの違いをしっかり理解している人は多くはありません。
「AIやディープラーニングといった最新のテクノロジーを駆使し、、」のような宣伝文句をしばしば見かけますが、多くがその意味を混同したまま使われているのが現状です。

3つの技術の関係性と違いを理解しておくことで、AIを導入する上で認識を合わせることが可能です。

以下の画像をご覧ください。

AINOW編集部作成

上記の画像から分かるように、機械学習はAIという概念の一部分であって「AI=機械学習」ではありません。大前提として「AI > 機械学習 > ディープラーニング」のイメージは持っておきましょう。

ディープラーニングと機械学習は何が違うの?

ディープラーニングは機械学習のうちの一技術です。

機械学習とは「機械に大量のデータからパターンやルールを発見させ、それをさまざまな物事に利用することで判別や予測をする技術」のことです。

その際に、データのどの部分が結果に影響を及ぼしているのか(特徴量という)を人間が判断し、調整することで予測や認識の精度をあげています。

一方、ディープラーニングはパターンやルールの発見に加えて、特徴量の設定、学習も自動的に行うのが特徴です。人間が判断する必要がないのが画期的です。

特徴量の設計を行う必要がないため、人の認識・判断では限界があった画像認識・翻訳・自動運転といった技術が飛躍的に上がったのはディープラーニングで人間が見つけられない特徴を学習できるようになったおかげとも言えます。

Pythonと機械学習の関係は?

Pythonは機械学習で最も使われているプログラミング言語です。

IBMの調査によると、「機械学習における最も人気なプログラミング言語」という項目でPythonは2016年にJavaを超えて1位になるほど機械学習における重要なプログラミング言語となっています。

Pythonには以下の3つの特徴があります。

  • シンプルさ
  • 信頼性
  • 使い勝手の良さ

この3点が際立っていることが利用される理由でしょう。

Pythonは数学をあまり知らない初等教育の子どもでも取り組めるほどシンプルさがあり、「Google」や「Facebook」などでも使われている信頼度の高いプログラミングです。

DjangobottleといったPythonを支えるフレームワークやライブラリーが非常に充実しており、使い勝手が良いのも多くの人に利用される要因です。

以下の記事ではPythonの勉強方法の勉強方法をまとめているのでぜひ参考にしてみてください。

機械学習は3つに分けられる!

機械学習はデータのタイプや状況によって教師あり学習教師なし学習強化学習の3つに大きく分けられます。

教師あり学習

教師あり学習は「正しいデータ」という名の教師がいて、そこに不明なデータを持ち寄った際には正解を教えてくれるというイメージです。正解となる膨大なデータを学習することで、新しいデータに対しても対応が可能です。

AINOW編集部作成

教師あり学習は「学習」と「認識・予測」の2段階のプロセスに別れています。まず、正解がわかっているデータ(入力という)を元に、ルールやパターン(出力)を学習します。そのあとに、インプットされた「正解がわからないデータ」に対してルールやパターンを元に認識や予測をするという流れになっています。
回帰分類が代表的な手法になります。

ちなみにニューラルネットワークやディープラーニングはこの教師あり学習の発展形になります。

教師なし学習

教師あり学習と違い、教師なし学習は膨大な教師データを学習しません。そこで、教師なし学習では主にデータそのものが持つ構造・特徴を分析し、グループ分けデータの簡略化といったことをします。

教師なし学習のうち、クラスタリング次元削減が代表的な手法になります。以下の画像がイメージです。

AINOW編集部作成

AINOW編集部作成

強化学習

強化学習とは簡単に言うと「機械がとる行動の戦略(指針)を強化(改善)する仕組み」を学ぶ手法になります。

一連の行動をとった結果ごとに報酬を設定し、その「報酬が最大化」するように機械が試行錯誤し、学習することで精度をあげていきます。

イメージとしては自転車に乗れるようになるプロセスに似ています。「乗ってみる」→「倒れる」→「乗り方を変える(強化学習の”戦略”に相当)」→「少し乗れる(強化学習の”報酬”に相当)」→「さらに乗り方を変えて徐々に乗れるようになる」の繰り返しのような感じです。

今では強化学習とディープラーニングを組み合わせた深層強化学習が主流になっており、囲碁AI「AlphaGO」が世界チャンピオンを倒すまでに成長した一因となっています。

機械学習で使われるアルゴリズムを紹介

機械学習ではアルゴリズムを使用してデータを分析します。世の中には多くのアルゴリズムが存在していますが、データや状況によって使うアルゴリズムも異なってくるのでそれぞれの大まかな特徴を掴みましょう。ちなみに機械学習のアルゴリズムを選定にはscikit-learnのチートシートマイクロソフトのチートシートを参考にするといいです。

機械学習のアルゴリズムは大きく分けると以下の5つのカテゴリーに分けられます。

  • 分類(教師あり学習)
  • 回帰(教師あり学習)
  • クラスタリング(教師なし学習)
  • 次元削減(教師なし学習)
  • 異常検知

これから紹介するアルゴリズムと上記で紹介した教師あり学習などを1つにまとめると、以下のような画像になります。

ここで紹介しているのはあくまで一例で、例えばランダムフォレストは回帰やクラスタリングでも使える場合もあるなど、この仕分けは絶対的なものではないことは心に留めておいてください。

AINOW編集部作成

分類

分類とは機械学習のうちの「教師あり学習」の1つで「犬」や「猫」などのラベルの情報や「購入」「非購入」といったカテゴリーの情報などを分類・予測する場合の学習方法です。

ランダムフォレスト

代表的な手法の1つにランダムフォレストという決定木を利用した手法があります。決定木とはリスクマネジメントをはじめ、何かしらの決定をする際に利用され樹木形をした以下のようなグラフのことです。

AINOW編集部作成

ランダムフォレストは複数の決定木で出た結果を用いて多数決をとって最終的な結果を出力する仕組みをとっています。

この手法を使うことで、精度の悪い決定木があったとしても全体としての精度を守ることができる仕組みになっています。以下の画像がそのイメージです。

AINOW編集部作成

ロジスティック回帰

線形回帰という手法を応用したもので、名前に回帰とついているのですが、実際は分類問題に使用される手法です。つまり目的変数が「Yes(=1)」か「No(=0)」のどちらかに分類できるような問題を扱うということです。

この手法では量的変数から質的変数を推測するのですが、変数の値を予測するのではなく、目的変数が”1”になる確率を予測します。

そのため重回帰分析などで1以上の数値が出てわかりにくかった場合でも、ロジスティック分析では必ず0から1の範囲で確率がわかるので分析結果を見たときに理解しやすくなるのです。

サポートベクターマシン

サポートベクターマシンは分類・回帰の両方に利用可能な教師あり学習です。非線形な識別をするための実装が容易なため、識別能力が高く、精度が良い分析結果を出してくれることから人気の高いアルゴリズムになっています。

サポートベクターマシンはデータ分布を複数のクラスに明確に分けるために境界を引く手法で、イメージは以下の画像です。

AINOW編集部作成

回帰

回帰とは

回帰とは機械学習のうちの「教師あり学習」の1つで、「売り上げ」や「成長率」といった数量を扱う場合の学習方法です。例えば、過去の顧客データから新しい客が今後何回訪れるのかを予測するといったことです。

線形回帰

線形回帰は非常にシンプルな手法で、データ分布に最も当てはまる直線を考えるものです。
イメージとしては以下の画像のようになります。以下の画像の直線を元に、例えば横軸が「3」の時の縦軸の数値を予測することができます。

Orizuru 記事より引用

サポートベクターマシン(SVM)

分類のパートで既に紹介したのであまり深くは説明しないですが、分類回帰では計算方法は大きく異なるため、同じSVMといっても異なる部分が多いです。

SVM分析に本当に必要なデータ(サポートベクトルという)のみを上手に利用するという発想の下、回帰問題におけるSVMでは予測結果の誤差をどう解釈するのかといった工夫をすることもあります。

サポートベクター回帰(SVR)

サポートベクター回帰はサポートベクターマシンの回帰版で、多くの変数を含んだ非線形な問題を解決することができる手法です。

SVMがマージンの最大化と誤推計サンプルを減らすやり方で学習するように、SVRでは重みの最小化と誤差の最小化で学習します。
誤差の小さい部分を無視することで、分析結果のロバスト性を向上させています。

Elastic Net

Elastic Netラッソ回帰リッジ回帰という2つの手法を合成した手法です。

ラッソ回帰もリッジ回帰も機械学習でしばしば起きる過学習を防ぐために行う正則化という方法を適用した機械学習で、それら2つを合わせたElastic Netはロバスト性も、予測性能も高い手法になっています。

クラスタリング

「クラスタリング」とは分類の延長上にある手法で、「似たデータの集まりを機能やカテゴリごとに分けて集める」代表的な教師なし学習手法です。
イメージとしては以下の画像のようなものです。

AINOW編集部作成

データの全体集合をクラスタという部分集合に分けることであり,内的結合と外的分離の性質を持ちます。クラスタリングでは基本的に何かしらの指標で近い距離にあるもの同士を1つのクラスタと見なすことが多いです。

クラスタリングのアルゴリズムには階層クラスター分析非階層クラスター分析の2種類があります。

階層クラスター分析

階層クラスター分析は階層構造のある分類方法です。最も似ているデータの組み合わせからクラスタ(ひとまとまり・グループ)に分けていく方法です。

また出力されたクラスターを樹形図で見ることもできるますが、大量のデータを分類することには向いていないため、対象の少ないデータに実行するのに有効です。

ここでは群平均とWard法について説明します。

Ward法

Ward法では既にあるクラスタのうち、一番近い2つのクラスタを合わせることでクラスタリングします。データ全体がバランスよく分類されやすいので、比較的よく利用されています。

群平均

2つのクラスタ内のデータ同士の距離を比較して、クラスタ間の距離を定める手法です。
この方法を利用することで鎖効果という余分なクラスタが生まれてしまう現象を防止できるのです。以下の画像がイメージ図です。

AINOW編集部作成

非階層クラスター分析

非階層クラスター分析は階層構造のない分類方法です。

事前にクラスター数を決めておき、その数だけのクラスタにデータを分類します。階層クラスター分析に比べて、ビッグデータなどの大量のデータに実行するのに適しています。
ここではk-means法について説明します。

k-means

k-means法とは、「クラスターの平均(means)」を用い、あらかじめ決められたクラスター数 “k” 個に分類する」ことに由来しています。

k個のベクトルを利用することから始まり、ベクトルを調整しながらデータを分類していきます。ちなみにデータ分析のソフトウェア大手であるTableauの分析の一部にもk-means法は利用されています。

次元削減

機械学習でも特徴量が不必要に多すぎると、いわゆる「次元の呪い」という現象が起こり、精度が悪くなることがあります。次元削減はデータの次元(特徴量の数)を減らす手法です。
次元削減を行う目的は主に以下の二つで、ここでは主成分分析(PCA)について紹介します。

データの圧縮
データの可視化

主成分分析(PCA)

主成分分析とは、複数の変量データを統合し、新たに1つの総合指標を作るための手法です。つまり、クラスター分析のように多数のデータを「グループ分け」して全体の見通しを良くする方法です。

AINOW編集部作成

異常検知

異常検知とは機械の故障やデータ分析の外れ値を検知・推測する際に利用する手法です。

異常検知は、データセット内の他のデータと一致していない観測結果や期待されるパターン等をデータマイニングなどで識別することを言います。また外れ値検知という異常検知では正常時では生まれない外れ値を見つけ出すために機械学習が使われたりします。ここでは3つ紹介します。

k近傍法

k近傍法は新しいデータや判別したいデータに対して、あらかじめ決められたk個のデータが作る範囲内と多数決の原理を利用して分類のようなことをする手法です。

AINOW編集部作成

主成分分析

主成分分析は次元削減のパートで紹介されているので説明は省略しますが、主成分分析を利用することで、異常値(外れ値)をデータの値が完全に消失しない程度に他の軸に代表してもらい、他のデータの値に近似させる方法で外れ値を実質的に無くします。

One-class SVM

One-class SVMは文字通り、SVMの手法を応用して識別境界を設定して、通常値と外れ値を識別する外れ値検知のための手法と言えます。

異常がなかなか発生せず、異常データが集まらないような状況でも異常検知を行いたい場合には有効な手法と言えます。

最後に

今回は機械学習についてとことん細分化してみました。要約すると、機械学習は「教師あり学習」「教師なし学習」「強化学習」に分けられ、

また、教師あり学習の中でも「分類」「回帰」という種類があり、教師なし学習の中でも「クラスタリング」「次元削減」という種類がある、というように細分化できるということです。

ここで紹介されているアルゴリズムはあくまで一例なので興味がある方はさらに調べてみるといいかもしれません。

2019年11月26日 2019年11月27日更新

無料メールマガジン登録

週1回、注目のAIニュースやイベント情報を
編集部がピックアップしてお届けしています。

こちらの規約にご同意のうえチェックしてください。

規約に同意する