テクノロジー

機械学習における主成分分析(PCA)とは?基礎から実践まで解説

機械学習における主成分分析(PCA)とは?基礎から実践まで解説

今のスマートフォンはインターネットでほしい情報がすぐに検索でき、好きな音楽・動画・ゲームなどを楽しめますよね。そして現在のスマートフォンにはAI(人工知能)が活用されています。例えば、「iPhoneのSiri」や「Googleアシスタント」の音声認識機能や、スマートフォンにサインインするための顔認証システムにAI(人工知能)が使われています。このほかにも、いまや私たちの身近なところでAI(人工知能)が使われるようになっています。

そんなAI(人工知能)開発の主流技術なのが、機械学習。それはAI(人工知能)に知識をつけるための学習方法で、そのプロセスで必要な分析手法が主成分分析(PCA)です。

そのため機械学習を修得するなら、この記事を通して主成分分析(PCA)について学びましょう。そこで今回は、機械学習に必要不可欠な主成分分析(PCA)についてお伝えします。

主成分分析(PCA)とは

PCAのイメージ
主成分分析(PCA)とは、ある大量のデータがあったとしたら、そのデータをわかりやすくまとめて表す分析手法です。例えば、本にはタイトルと目次に見出しがありますよね。タイトルと見出しは、本に書かれている内容をわかりやすく短い文章で表現しています。

これと同じように主成分分析(PCA)は、大量のデータの構造をわかりやすくできます。ただしデータを減らすのではなく、元のデータからそれより数の少ない新しいデータを作るのが主成分分析(PCA)です。

主成分分析(PCA)を使うと、学校のテストで国語・数学・理科・社会・英語の得点を合わせて総合評価したり、文系(国語・社会・英語)と理系(数学・理科)の2つに分けて、それぞれの学力を評価できたりします。実用例としては、次のようなことに応用されています。

  • アンケート結果の分析:顧客満足度やブランドイメージのアンケートで、顧客の興味や改善点などの抽出
  • 企業や商品の評価:メディアなどで掲載する企業ランキングを出すため、総合評価に活用している
  • 画像補正技術:低画質の画像をきれいに修正する際などに活用されている

そして主成分分析(PCA)は、機械学習で主要な分析方法として使用されています。

なぜ、機械学習において主成分分析(PCA)が必要なのか

必要なイメージ

機械学習でも主成分分析(PCA)は、データをまとめるために使用されています。そして機械学習で主成分分析(PCA)を使ってデータをまとめることを次元削減と呼びます。

次元とは、線が1次元・平面が2次元・立体が3次元で、空間を表す指標。次元削減を行うと元のデータ量を抑えられ、その構造がわかりやすくなります。例えば、世界地図の定番であるメルカトル図法の地図と地球儀では、3次元の地球儀よりも2次元のメルカトル図法のほうが、一目で世界の地形がわかるので見やすいですよね。これと同じような効果があるのが次元削減です。

機械学習は、大量のデータを使ってAI(人工知能)に学習させ、特徴量(データの特徴)を覚えさせて予測や分類ができるようにします。例えば、ネコの画像を学習したAI(人工知能)が、新しい画像を読み込んでそれに映し出されている画像がネコなのかを特徴量で判定します。

この場合でAI(人工知能)が学習した結果、特徴量が10個あったとしましょう。ネコ画像を判定するのに、対象の画像に特徴量が10個当てはまればネコと判定できます。

しかし、毛の長いネコ・短いネコやさまざまな毛色や模様のネコがいますよね。そのため特徴量が多いと、ネコ画像であってもすべてに当てはまらなければ「違う」と判定することがあります。これは学習データの学びすぎで起きる過学習という現象です。

そこで学習したデータに忠実すぎてAI(人工知能)が誤判定しないように、用いられているのが主成分分析(PCA)です。主成分分析(PCA)を使用すると、例えばネコ画像の判定に使う特徴量を10個ではなく2個することで、誤りを抑えてAI(人工知能)の判定精度を向上させられます。また特徴量が少なくなるので判定する際の計算効率も向上します。

では次に、主成分分析(PCA)を行う方法を紹介しましょう。

主成分分析(PCA)を行う方法

方法のイメージ
主成分分析(PCA)は、次の手順で行います。

主成分分析(PCA)を行う対象のデータを準備し、主成分を求める

主成分とは、元データをまとめて新たに作るデータのことで合成変数といいます。分析する元データは、ご飯の上にふりかけた胡麻のように散らばった状態です。

その分散した状態から、元データの説明に必要な情報量を一番多くとれる方向に軸をとるのが第1主成分。そして、第1主成分の軸の直角方向で2番目に情報量が多い方向に軸をとるのが第2主成分、また3番目に多い方向(第1、2主成分に対して直角方向)の第3主成分をとり、元データの説明に必要な主成分をとっていきます。

固有値、寄与率、累積寄与率を求める

固有値とは、各主成分が持っている情報量で、下記の計算で求めます。

Z1 = a1 × x1 + a2 × x2 + ・・・+ an × xn
Z2 = a1 × x1 + a2 × x2 + ・・・+ an × xn
Zn = a1 × x1 + a2 × x2 + ・・・+ an × xn
z・・・主成分、Z1 = 第1主成分の固有値・Z2 = 第2主成分の固有値・Zn = 第n主成分の固有値
x・・・データ
a・・・それぞれのデータの重要度を表した係数

寄与率とは、元データについて1つの主成分で説明できる割合です。(例:第1主成分で70%、第2主成分で30%)寄与率を求める計算式は、以下のようになっています。

各主成分の固有値 × 100(%) ÷ 総分散(各主成分の固有値の合計)

累積寄与率は、第2、第3と続いていく各主成分の寄与率を足した数値で、一般に分析には累積寄与率が80%以上になるまでの主成分を使います。累積寄与率の計算式(第1と第2主成分の累積寄与率の場合)は以下です。

第1、第2主成分の固有値の合計 × 100(%) ÷ 総分散(各主成分の固有値の合計)

そして、結果を見て解釈します。

この手順で進める主成分分析(PCA)をプログラムで実行できます。そこで次は、プログラムで機械学習の主成分分析(PCA)を実装する方法をお伝えしましょう。

主成分分析(PCA)を実装する方法

実装するイメージ
一般的に、機械学習で主成分分析(PCA)を実装するプログラムに使用されているプログラミング言語はPythonです。機械学習では主成分分析(PCA)のような複雑な分析手法をいくつも使用してAI(人工知能)を開発します。

そして、Pythonはさまざまな分析手法の計算に使用できるライブラリ(プログラム集)を豊富に備えています。そのためPythonは、AI(人工知能)開発に使われるプログラミング言語のディフェクトスタンダード(事実上の標準)になっています。

実際に主成分分析(PCA)に使用されているPythonライブラリには、以下のようなものがあります。

  • numpy・・・ 複雑な計算も高速処理できる数値演算⽤のライブラリ
  • scipy・・・ numpyよりも高度な数値計算ができる科学技術計算ライブラリ
  • matplotlib・・・データを棒グラフや線グラフなどで描画して可視化できるライブラリ
  • pandas・・・大量のデータを読み込み、統計量の表示やグラフ化するデータ解析用ライブラリ
  • scikit-learn・・・機械学習全般に必要なプログラムがそろっているライブラリ

Pythonで主成分分析(PCA)を実装する方法は、上記のライブラリを使用してプログラムを作成します。詳細はそれぞれのライブラリごとに方法が違うので、あなたが使いたいライブラリで確認しましょう。中でもscikit-learnはテストデータが付いているので、プログラムを作ってすぐに試すことができるので便利でしょう。では最後に、機械学習の特徴量に主成分分析(PCA)を実行するときの注意点をお伝えします。

主成分分析(PCA)を行う注意点

注意点のイメージ
機械学習で主成分分析(PCA)を実行するときの注意点は、主成分分析の結果を人間が解釈しなければならないことです。例えば、ネコ画像を判定する特徴量が主成分分析(PCA)で第1主成分から5つ出たとします。

第1主成分・・・目
第2主成分・・・鼻
第3主成分・・・ひげ
第4主成分・・・顔の輪郭
第5主成分・・・毛が長い

このうち第5主成分の「毛が長い」は、毛の短いネコもいるので、5つをそのまま使うと誤判定することになるでしょう。そのため主成分分析(PCA)で算出された結果から、判定の精度を考えて特徴量をどこまで採用するかは人間の判断になります。一般的に採用する特徴量の数は、累積寄与率が70~80%になるものを採用することが多いようです。

しかし機械学習の先進技術であるディープラーニングでは、データを入力するだけでAI(人工知能)自身が特徴量を決めるので、人間がほとんど手を加える必要はありません。それに対して従来の機械学習では、主成分分析(PCA)で人間が特徴量を決める必要があります。この判断はAI(人工知能)の性能を左右する重要なことなので注意しましょう。

まとめ
さて今回は、機械学習における主成分分析(PCA)についてお伝えしました。主成分分析(PCA)は、大量のデータをまとめて少ない数量で、そのデータ構造をわかりやすく表す分析手法です。ただしデータを減らすのではなく、元データから新しいデータを作るのが主成分分析(PCA)です。

主成分分析(PCA)は次のようなことに実用されています。

  • アンケート結果の分析・・・顧客の興味や改善点などの抽出
  • 企業や商品の評価・・・企業ランキングを出すため総合評価に活用
  • 画像補正技術・・・低画質の画像をきれいに修正するなど

そして主成分分析(PCA)は、機械学習で次元削減に使用されています。その理由は、次の2つです。

  • 特徴量の次元削減で過学習を防いで、予測や分類の精度を向上させることが可能
  • 特徴量が少なくなるので計算効率が向上する

このような効果がある主成分分析(PCA)は、次の手順で行います。

  1. 主成分分析(PCA)を行う対象のデータを準備する
  2. 主成分を求める
  3. 固有値、寄与率、累積寄与率を求める
  4. 結果を見て解釈する

そして主成分分析(PCA)は、一般的にプログラミング言語のPythonで下記のライブラリを組み合わせてプログラムを作成し実装します。

  • numpy・・・ 複雑な計算も高速処理できる数値演算⽤のライブラリ
  • scipy・・・ numpyよりも高度な数値計算ができる科学技術計算ライブラリ
  • matplotlib・・・データを棒グラフや線グラフなどで描画して可視化できるライブラリ
  • pandas・・・大量のデータを読み込み、統計量の表示やグラフ化するデータ解析用ライブラリ
  • scikit-learn・・・機械学習全般に必要なプログラムがそろっているライブラリ

ただし主成分分析(PCA)による結果は、そのまま使って効果が出るものではありません。機械学習で主成分分析(PCA)を実行するときに、分析で出した結果の解釈と採用する特徴量を決めるのは人間の判断になります。その点に注意し主成分分析(PCA)を上手く使って、機械学習で高い精度の予測や分類ができるAI(人工知能)を開発しましょう。

【お知らせ】

当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。

御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。

お多福ラボコーポレートサイトへのバナー

トップへ戻る
タイトルとURLをコピーしました