【入門編】機械学習の手法一覧！選び方や使い分け方のコツも解説

こんにちは。スキルアップAI編集部です。
ChatGPTなどの生成AIをはじめとして、改めてAI（人工知能）に関する技術が注目されています。このようなAIの多くは、機械学習と呼ばれる技術が使われています。この機械学習には大きく3つの学習方法があり、それぞれ目的などに応じて使い分けることができます。

本ブログでは、**機械学習の学習方法の違いと、それぞれの学習方法における代表的な手法**について解説します。また、実際に機械学習を利用するに当たって、機械学習の手法を選択するコツを紹介します。

この記事を読めば、プロジェクトに合った適切な機械学習手法を選択することができるようになるはずです。

<目次>
1. 機械学習の3つの学習方法
1. 教師あり学習の代表的な手法一覧
1. 教師なし学習の代表的な手法一覧
1. 機械学習の手法の選び方・使い分け方のコツ
1. 機械学習の手法を実装するならPythonがおすすめ
1. 機械学習やPythonについて学ぶならスキルアップAI

## 機械学習の3つの学習方法
機械学習はAIを実現するための技術領域の一つであり、**データから自動で学習して、パターンやルールを見つけ出す方法**です。例えば、被写体が動物かイヌかネコかを判別するルールをアルゴリズムにより学習することができます。

![types-of-machine-learning01.jpg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/05db37d2-38a2-680a-774a-b97a0454fc62.png)

機械学習にはさまざまな手法がありますが、大きく分けると以下の3つの学習方法に分類できます。

1. 教師あり学習
1. 教師なし学習
1. 強化学習

https://www.skillupai.com/blog/tech/about-machine-learning/

### 教師あり学習
教師あり学習は、**学習データに正解が与えられている学習方法**です。学習する際は、正解をもとにデータからルールを学習していきます。

この学習方法は、画像分類や株価予測などの問題に利用されます。画像系のタスクなどでは、データに教師ラベルを付けるアノテーションという作業が必要です。

### 教師なし学習
教師なし学習は、**学習データに正解が与えられていない学習方法**です。教師あり学習とは異なり正解が分からないため、コンピュータ自身がデータを分析してルールやパターンを見つけ出し、グループ分けを行います。

この学習方法は、ネットショッピングなどのレコメンデーションや顧客データを用いた顧客のクラスタリングなどに利用されます。

### 強化学習
強化学習は、**コンピュータ自身が学習プロセスから試行錯誤を通じて「価値を最大化するような行動」を学習する手法**です。コンピュータには、行動した結果に対して報酬（スコア）だけが与えられ、その報酬を最大化する行動を学習していきます。あらかじめ正しい答えが分かっていなくても（= 教師データが存在しない）学習が可能です。

この学習方法は、囲碁や将棋のAI、掃除ロボットの移動ルートなどに利用されます。

## 教師あり学習の代表的な手法一覧
教師あり学習にはさまざまな学習方法があります。教師あり学習で解く問題は、カテゴリを予測する「分類」問題と、データをもとに数値を予測する「回帰」問題の2つがあり、どのような目的で学習するかによって手法も異なります。

代表的な8種類の手法を紹介します。

### 1.線形回帰
**データに対して直線を求めることで、説明変数から目的変数を予測する手法**です。説明変数は特徴量などの要因となる数値、目的変数は結果となる数値のことです。

例えば、広告費から売上を予測する場合は、広告費が説明変数、売上が目的変数となります。説明変数が1つの場合を単回帰、2つ以上の場合を重回帰といいます。

### 2.ロジスティック回帰
**複数の変数からある事象が発生する確率を計算する手法**です。「回帰」とついていますが、確率を予測することでデータを「分類」する問題に利用します。特に、データを2つに分類する二値分類に使われます。

例えば、メールマガジンを配信したとき、それぞれの見込顧客がどれぐらいの確率で購入するかを予測することが可能です。

### 3.決定木
**データを木構造で表し、条件分岐を行うことで分類または回帰を行う手法**です。木構造とは、データを1つのノード（節）から枝分かれを繰り返すことで、木が枝を伸ばすように表した構造のことです。階層構造であるため、どこで分岐したのか分かりやすく、予測時にその予測結果になった理由を説明しやすい点が特徴です。

決定木は「分類」と「回帰」のどちらにも利用することができます。

![types-of-machine-learning02.png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/1b17dc8f-21af-345f-a283-52c5bc6cc023.png)

### 4.ランダムフォレスト
ランダムフォレスト（RF）は、**決定木を複数用いてより高精度なモデルとする手法**です。このように、複数の機械学習モデルを組み合わせて、より強力なモデルを構築する手法を**アンサンブル学習**といいます。

アンサンブル学習には、複数のモデルを並列的に学習させるバギングという方法と、直列的に学習させるブースティングという方法があり、ランダムフォレストはバギングにあたります。

決定木と同様に「分類」と「回帰」のどちらにも利用することができます。

### 5.アダブースト
アダブーストは、アンサンブル学習のブースティングの一種であり、**前の学習器が誤って分類したデータに対して適応的（Adaptive）に重みを大きくすることで、より精度の高いモデルを作る手法**です。

アダブーストは「分類」はもちろん、予測誤差をもとに重みづけをすることで「回帰」にも利用することができます。

### 6.サポートベクトルマシン
サポートベクトルマシン（SVM）は、**境界に最も近い点（サポートベクトル）からの距離が最大となるような境界を求め分類する手法**です。このように、サポートベクトルとの距離が大きくなるような境界を求めることを「マージンの最大化」といいます。

サポートベクトルマシンは主に「分類」に利用することができます。

### 7.k近傍法
データを分類する際に、**対象となるデータ点の周囲にあるデータで多数決で行い、決定する手法**です。手法の考え方がシンプルなため実装が容易である一方で、多数決に用いる周囲のデータ点を決定するために、距離を総当たりで計算しなければならないという点に注意が必要です。

周囲のデータにもとづいて多数決を行うことで「分類」に、周囲のデータの平均値を取ることで「回帰」にも利用することができます。

### 8.ニューラルネットワーク
ニューラルネットワーク（NN）は、**線形モデルを重ねることで非線形な問題にも対応することができるようにした手法**です。人間の脳にある神経細胞（ニューロン）の働きから発想を得ています。ニューラルネットワークは入力層、中間層（隠れ層）、出力層で構成されていて、中間層が複数層からなるモデルをディープニューラルネットワークといいます。

![types-of-machine-learning03.png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/ba8124d6-affb-f672-504c-b645ae926ce6.png)


ネットワークを複雑にするほど表現力が高まり、高い性能のモデルを作りやすくなりますが、複雑にするほどパラメータが多くなり、学習に時間がかかります。

ニューラルネットワークは、「分類」と「回帰」のどちらにも利用することができます。

## 教師なし学習の代表的な手法一覧
教師なし学習にもさまざまな手法があります。教師なし学習は主にデータをグループ分けするクラスタリングや、重要でない特徴を除く次元削減などの目的で使うことが多いです。

次に教師なし学習の代表的な3種類の手法を紹介します。

### 1.主成分分析
主成分分析は、**多変数データの特徴をよく表す新しい軸（主成分軸）を見つけ、その中から重要でない軸を削除することでデータを少ない次元で表す手法**です。データの傾向をつかみたい場合や次元削減を行いたい場合に用いられます。

![types-of-machine-learning04.png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/b83bf686-4c92-2b15-9ecb-f34cac34185c.png)


### 2.階層型クラスタリング
階層型クラスタリングは、**データをいくつかの部分集合（クラスタ）に分類するクラスタリングのための手法**の一つです。各データを1つのクラスタとして、距離が近いクラスタを結合していき、最終的に1つのクラスタとなるまで結合していきます。学習結果は、樹形図（デンドログラム）を用いてクラスタの階層構造を可視化することができます。

![types-of-machine-learning05.png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/54e6d110-0dcf-4991-587d-7861ff25ab21.png)

### 3.k-means法（非階層型手法）
k-means法は、**階層型クラスタリングと同じクラスタリングの手法の一つですが、階層型ではないという違いがあります**。

まず、指定したクラスタ数と同じ数だけデータ点をランダムに選択し、各クラスタの中心点とします。次に、選択したデータ点からクラスタを生成し、クラスタの重心を新たな中心点とします。この操作を中心点の変化が十分小さくなるまで繰り返すことで、クラスタリングを行います。

## 機械学習の手法の選び方・使い分け方のコツ
代表的な機械学習の手法を知ることはできましたが、実際に使うに当たってどの手法を選択するか悩むと思います。ここでは、機械学習の手法を選ぶコツを紹介します。

### データの利用目的に応じて選ぶ
1つ目は、**データの利用目的から手法を選択すること**です。まず使用するデータに正解が与えられているかどうかなどをもとに学習手法を選択します。そして、教師あり学習を選択した場合は、さらに分類・回帰のどちらの問題を解きたいかによって手法を絞りこんでいくことができます。

ちなみに、教師あり学習の手法は、一般に以下のように選択されることが多いです。

- 画像データ：ニューラルネットワーク
- テキストデータ：ニューラルネットワーク
- 音声データ：ニューラルネットワーク
- CSVなどのテーブルデータ：どの手法も選択肢にあがるが、近年はランダムフォレストなどのアンサンブル系手法が人気

![types-of-machine-learning06.png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/1579e971-d073-4131-77a5-b6139c97017f.png)

### 求められる精度の高さに応じて選ぶ
2つ目は、**求める精度の高さから手法を選択すること**です。簡単な問題であれば、解釈性が高く、軽量なモデルで求める精度を十分満たすことができます。

一方で、複雑な問題の場合、シンプルなモデルでは、求める精度を満たすことが難しい場合もあります。そのような場合は、例えばニューラルネットワークなどの予測精度の高い手法を選択することが必要となります。

### チートシートを活用する
3つ目は、**チートシートから手法を選択すること**です。チートシートには、必要な情報が一覧でまとめられています。このチートシートをうまく使うことで、自分にとって適した手法を簡単に選ぶことができます。

https://www.skillupai.com/blog/ai-knowledge/cheatsheet/

## 機械学習の手法を実装するならPythonがおすすめ
さまざまなプログラミング言語がある中で、**機械学習を実装するなら「Python」を特におすすめ**します。Pythonは、多くの人に利用されているもっとも一般的な言語です。Pythonの具体的な学習方法については、次の記事を参考にしてください。

https://www.skillupai.com/blog/tech/python-study/

## 機械学習やPythonについて学ぶならスキルアップAI
機械学習は日々進化し続け、新しい手法が提案されています。そして、ビジネスの現場では機械学習を実装できる人材の需要は増加しているため、機械学習やPythonのスキルを身につけることで市場価値を高めることができるでしょう。

機械学習を実務に活かしたいと考えている人は、スキルアップAIの「[現場で使える機械学習・データ分析基礎講座](https://www.skillupai.com/machine-learning/)」がおすすめです。**機械学習について体系的に学び、実際に機械学習モデルの構築をハンズオンを通して学ぶ**ことができます。
まずは講座の一部をお試しで視聴できるトライアル版を活用してみてください。

また、まずは機械学習に必要なPythonスキルを習得したい方は、なんと**期間限定で無料で学べる講座**をご用意しています。環境設定、Pythonの基礎文法、データ整理のためのNumpy/Pandasなどの入門スキルはもちろん、データ可視化、前処理、モデル構築の基礎スキルまでを習得することが可能です。

約8時間の講座が無料で視聴できるので、ぜひこの機会に受講してみてください。
[＜期間限定無料＞機械学習のためのPython入門講座](https://www.skillupai.com/python_jdla/)

☆☆☆
スキルアップAIのメールマガジンでは会社のお知らせや講座に関するお得な情報を配信しています。配信を希望される方は[こちら](https://share.hsforms.com/1_XlReV-4Te-zcxCl9lhffA2mtef)

また、SNSでも様々なコンテンツをお届けしています。興味を持った方は是非チェックしてください♪
Xは[こちら](https://twitter.com/SkillupAi)
Facebookは[こちら](https://www.facebook.com/skillupai)
スキルアップAI公式YouTube AIビジネスチャンネルは[こちら](https://www.youtube.com/AIBusinessChannel)