機械学習によく使用されるアルゴリズム20選|Pythonの魅力2つも紹介

機械学習とは

機械学習とは、コンピュータにデータを読み込ませてアルゴリズムによって自ら分析させる手法となります。

人工知能とはコンピュータに人と同様の知的ふるまいをさせるという試みです。近年世界中で注目を集めている人工知能技術ですが、コンピュータに明確な命令を与えずに自ら判断させるためには、コンピュータに学習能力を持たせる必要があります。

機械学習はそのための手法で、人工知能を構成するさまざまな要素の1つです。

アルゴリズムとは

アルゴリズムとは、問題解決のための手順や計算方法を意味します。

アルゴリズムは手順に沿って行うことで、誰であっても同じ答えを得ることができるものだといえます。一般的にアルゴリズムはコンピュータを使ってプログラムで問題解決をするための手順を差し、機械学習ではアルゴリズムを用いてデータを分析します。

機械学習で用いられるアルゴリズムにはさまざまな種類があります。

機械学習のタイプ

機械学習には3つのタイプがあります。

機械学習にはデータのタイプなどによって「教師あり学習」「教師なし学習」「強化学習」の3種類にわかれます。

ここでは機械学習のタイプについてそれぞれご紹介していきますので、ぜひ参考にしてみてはいかがでしょうか。

教師あり学習

「教師あり学習」はコンピュータに正解のラベル付きデータを与えて学習させる手法です。

正しい入力値を繰り返し学習させることで、新しいデータを入力した場合にも正しい答えを出せるようにするものです。

たとえばコンピュータに画像を与えてそれが猫なのか犬なのかを判別させたい場合、猫や犬の正解のラベルが付いた画像データを大量に与えることで、どちらが猫でどちらが犬なのか判別できるようになります。

教師なし学習

「教師なし学習」はコンピュータにラベルの付いていないデータを与えて特徴や傾向を自ら学習させる手法です。

教師なし学習では正解のラベルが与えられないため、入力された値をグループ分けできるように訓練することで、新しいデータを入力してもどのグループに該当するのかわかるようになります。

教師なし学習でのグループ分けは「クラスタリング」と呼ばれており、マーケティング分析などにも活用されています。

強化学習

「強化学習」はコンピュータの出力に点数を付けることで、より価値の高い出力をコンピュータに学習させる手法です。

コンピュータが出力する結果ごとに価値を設定しておき、その価値が最大化するようにコンピュータに繰り返させることで、だんだんと出力の精度を上げていくという内容になります。

強化学習は囲碁などゲームを行う人工知能に活用されており、勝つためのさまざまな手を試すことで強くなっていくという特徴があります。

ディープラーニングとは

ディープラーニングとは、十分なデータ量を用いることでコンピュータが自動的にデータの特徴を抽出することができる「ディープニューラルネットワーク」を利用した機械学習です。

機械学習の中の1つの手法で、データの中にあるルールやパターンなどを発見したり、特徴量の設定や学習などをコンピュータ自ら自動的に行う点が特徴となっています。

また、ディープラーニングでは人間では見つけられない特徴まで学習できます。

機械学習とディープラーニングの関係性とは

ディープラーニングはさまざまな機械学習の手法の中の1つです。

機械学習は膨大な量のデータからルールやパターンを発見させることで、新しいデータの判別や未来の予測ができるものです。また、機械学習は人が判断したり調整を行うことで、学習精度を上げています。

一方、ディープラーニングはコンピュータ自身がルールやパターンの発見を行うため、人が判断する必要がありません。

機械学習によく使用されるアルゴリズム20選

機械学習によく使用されるアルゴリズムをご紹介します。

機械学習ではアルゴリズムが用いられますが、その種類はさまざまです。機械学習に興味があるという方の中にも、どのような種類があるのかわからない方もいるのではないでしょうか。

ここでは機械学習によく使用されるアルゴリズム20選をご紹介しますので、機械学習のアルゴリズムについて理解を深めてみてはいかがでしょうか。

機械学習に使用されるアルゴリズム1:線形回帰

線形回帰は散らばっているデータ分布の中で1本の直線を使って表現するアルゴリズムです。

線形回帰は回帰分析の1種です。また、回帰はさまざまな種類があるアルゴリズムの中では「教師あり学習」の1つであり、成長率などの数量を扱う際に用いられます。

線形回帰は非常にシンプルで、バラバラに分散しているデータ分布の中でデータを表す直線を引くことから線形回帰と呼ばれています。

機械学習に使用されるアルゴリズム2:正則化法

正則化法は過学習を防ぐ手段として用いられるアルゴリズムです。

正則化は機械学習において、偏り過ぎたデータに必要以上に対応してしまう「過学習」を防ぐために極端な重みのデータに対してペナルティを与えることができるものです。

正則化は学習の複雑さが増すことに対してペナルティを設けることで、訓練誤差にペナルティを加えた量がもっとも小さい学習モデルを求めることで、汎化性能を高められます。

機械学習に使用されるアルゴリズム3:決定木

決定木は木構造を用いて分類や回帰を行うアルゴリズムです。

分析したいデータのカテゴリーや種類などを判定する手法に「分類」がありますが、決定木は分類の代表的な主要であるランダムフォレストに用いられています。

決定木とは閾値を設定して分類する手法で、樹木上のモデルを使って意思決定を行います。また、分類木や回帰木といった手法をまとめて決定木と呼びます。

機械学習に使用されるアルゴリズム4:ロジスティック回帰分析

ロジスティック回帰分析は現象の発生確率をモデル化するアルゴリズムです。

ロジスティック回帰分析は医学の分野で開発されたアルゴリズムで、前述の線形回帰を応用したものです。複数の因子の組み合わせや程度から発生確率を予測します。

ロジスティック回帰分析ではYesもしくはNoに分類される問題を扱うため、他の分析でマイナスの値などが出る場合でもロジスティック分析ではわかりやすい結果になります。

機械学習に使用されるアルゴリズム5:k平均法

k平均法はクラスターの平均を使ってあらかじめ決められたクラスター数(k個)に分類するアルゴリズムです。

k平均法は階層構造のない分類方法である「非階層クラスター分析」です。事前にクラスター数を決定しておき、その数だけクラスターにデータを分類します。

階層クラスター分析と比較して、多くのデータを使う際に適しています。また、k平均法は「k-means法」とも呼ばれています。

機械学習に使用されるアルゴリズム6:k近傍法

k近傍法はデータ間の距離を利用して分類を行ったり、異常検知を行うアルゴリズムです。

k近傍法では判別対象のデータに対して、そこから近い順にあらかじめ決まっているk個のデータを取得して、その範囲で多数決によってデータが属するクラスに分類するというものです。そのため、kの値が結果に大きく影響します。

分類に属するアルゴリズムの中でも、k近傍法はシンプルでわかりやすいアルゴリズムとなっています。

機械学習に使用されるアルゴリズム7:サポートベクターマシン

サポートベクターマシンはデータ分布を複数のクラスに分けるために、境界を引くアルゴリズムです。

分類にも回帰にも用いることができる教師あり学習で、識別精度が高いことからよく用いられるアルゴリズムとなっています。さらに非線形的な識別をおこなうことから、実装も容易です。

また、サポートベクターマシンは分類と回帰では計算方法が異なるため、同じアルゴリズムでも内容は異なります。

機械学習に使用されるアルゴリズム8:ナイーブベイズ

ナイーブベイズはデータが与えられた場合の全ての推定確率を計算し、最も確率の高いものを結果として出力するアルゴリズムです。

ベイズの定理はデータセットをもとにした推定が複数ある場合、どの推定がもっともらしいかを判断するときに用いられる定理です。

ナイーブベイズは「単純ベイズ分類器」とも呼ばれ、ベイズの定理をもとにしたシンプルなアルゴリズムとなっています。

機械学習に使用されるアルゴリズム9:ニューラルネットワーク

ニューラルネットワークは人工ニューロンが問題解決を行うモデル全般を指す言葉です。

人の脳機能のようにシナプスの結合によってネットワークを形成した数理的モデルです。「人工ニューラルネットワーク」とも呼ばれることがあります。

ニューラルネットワークには教師あり学習と教師なし学習に分けられ、パターン認識やデータマイニングなどに応用されています。

機械学習に使用されるアルゴリズム10:アダブースト

アダブーストは弱い識別機を組み合わせることで強い識別機を構築するアルゴリズムです。

アダブーストではランダムよりも精度が良い程度の弱い識別機を適用し、誤分類したものの重みを増やし、次に重みが付いているものを優先的に分類する、ということを繰り返すことで強い識別機を作成します。

識別機を組み合わせていくことで正確な分類が行われやすいですが、過学習にもなりやすいアルゴリズムです。

機械学習に使用されるアルゴリズム11:マルコフ連鎖モンテカルロ法(MCMC)

マルコフ連鎖モンテカルロ法(MCMC)はマルコフ連鎖を作成し、確率分布のサンプリングを行うアルゴリズムです。

確率分布の平均値や最頻値を求めるアルゴリズムで、多重積分を数値的に計算するのが一般的な応用です。

マルコフ連鎖モンテカルロ法ではランダムウォーク法を用いることで、バラバラに動き回る粒子の集団を想定し、粒子が点を通過するたびに点の被積分関数の値を積分に足していきます。

機械学習に使用されるアルゴリズム12:ランダムフォレスト

ランダムフォレストは決定木を利用した代表的なアルゴリズムです。

分類や回帰、クラスタリングに用いられるアルゴリズムで、決定木を多く使うことで多数決を行ったり、平均を取るような手法です。

ランダムフォレストは決定木を集めることで全体を分類器とし、より精度の高い分類器を作成します。また、回帰の場合は回帰木を同じように集めてランダムフォレストとして使うことができます。

機械学習に使用されるアルゴリズム13:パーセプトロン

パーセプトロンはニューラルネットワークの一種です。

パーセプトロンは1958年に発表されたニューラルネットワークの1つで、機械学習の元とも言えるものです。形式ニューロンを複数用いることでネットワーク上に接続します。

2層からなるものを単純パーセプトロンと呼び、3層以上からなるものを多層パーセプトロンと呼びます。現在は後者が主流となっています。

機械学習に使用されるアルゴリズム14:主成分分析

主成分分析はバラつきのある多次元データをより少ない次元に圧縮するアルゴリズムです。

機械学習は特徴量が多すぎると逆に精度が悪くなることがあるため、次元削減によって特徴量を減らす必要が発生します。

主成分分析はできる限り元の情報を残したまま、多次元のデータをグループ分けすることによって圧縮し、全体の見通しをよくする手法になります。

機械学習に使用されるアルゴリズム15:非負値行列因子分析

非負値行列因子分析は負の値が含まれていない行列を分解するアルゴリズムです。

非負値行列因子分析は負の値を扱うことができないため、足し算のみでアプローチを行う手法になります。

非負値行列因子分析を使って人の顔の特徴を抽出する場合、実際に人の顔の絵を描くように、パーツを書き加えていくことで、うまく特徴を掴んで顔を抽出することができます。

機械学習に使用されるアルゴリズム16:トピックモデル

トピックモデルは文書のトピックが何かを説明するためのアルゴリズムです。

人が話をする際のトピックは、同じ話題について話していても人によって異なります。トピックモデルは文章のデータ群に対して、各文章のトピックを判断するために用いられます。

また、トピックモデルは文章だけでなく画像や音楽などにも用いることができます。

機械学習に使用されるアルゴリズム17:混合ガウスモデル

混合ガウスモデルはクラスタリングに用いられるガウス分布を足し合わせたアルゴリズムです。

山形のグラフであるガウス分布を用意し、平均と共分散を調整して足し合わせることで任意の精度で近似させることができます。こういったガウス分布の足し合わせによって近似したモデルを混合ガウスモデルと呼びます。

機械学習に使用されるアルゴリズム18:協調フィルタリング

協調フィルタリングはある対象者が購入したデータと対象者以外が購入したデータを用い、購入パターンを分析するアルゴリズムです。

協調フィルタリングでは商品の購入パターンから類似性や商品の共起性を解析し、さらに対象者の行動履歴と関連付けることで、個人個人にパーソナライズされた商品を提示することができます。

機械学習に使用されるアルゴリズム19:自己組織化マップ

自己組織化マップはニューラルネットワークの1つで、入力情報の類似度をマップ上の距離で表現するモデルです。

自己組織化マップはデータマイニングの1手法で、さまざまな高次元データを教師なしでクラスタリングできることから自己組織化と呼ばれています。

データ分類や要約、視覚化などに強みを持つアルゴリズムです。

機械学習に使用されるアルゴリズム20:アソシエーション分析

アソシエーション分析はマーケティングでのデータ分析で有名なアルゴリズムです。

ある対象者が商品を購入する際の購入パターンや購入履歴などを分析することで、商品A、Bの売れ行きの関連性を見出す手法です。

アソシエーション分析を用いることで商品の売れ方の法則などを見つけることができ、売れない商品を見極めたり売り上げを伸ばすための施策を実施することができます。

機械学習に使われるPythonの魅力2つ

機械学習に使われるPythonの魅力2つをご紹介します。

機械学習を行う場合はプログラミング言語のPythonを用いることが多いですが、なぜPythonが利用されるのでしょうか。

ここでは最後にPythonの魅力2つについてご紹介していきます。

機械学習に使われるPythonの魅力1:シンプル

Pythonは文体が非常にシンプルという特徴があります。

Pythonはシンプルであることに哲学を持つプログラミング言語です。コードは短くシンプルで、覚えることは少ないため初心者でも習得しやすいです。

また、コードが短いため読みやすく、開発者以外のエンジニアがソースを見ても何が書いてあるかわかりやすく、バグを起こしにくいというメリットもあります。

機械学習に使われるPythonの魅力2:豊富なライブラリやフレームワーク

Pythonは豊富な標準ライブラリやフレームワークが利用できるという魅力があります。

Pythonには最初から付属している標準ライブラリやフレームワークが豊富で、インストールするだけさまざまな機能を利用することができます。

そのため、Pythonでは自分ではほとんどコードを書かずに高度な処理を実装することができます。

機械学習によく使用されるアルゴリズムを学習しよう

機械学習ではさまざまなアルゴリズムが利用されています。

ぜひこの記事ご紹介した機械学習によく使用されるアルゴリズムや機械学習に使われるPythonの魅力などを参考に、機械学習やアルゴリズムについて理解を深めてみてはいかがでしょうか。