多変量解析

主成分分析とは?簡単な説明とPythonでの実装!

主成分分析
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、実務の基礎分析にて使われることの多い主成分分析について詳しく見ていきます。最後にはカンタンなPythonでの実装も載せていますのでぜひ参考にしてみてください!

こんにちは!

データサイエンティストのウマたん(@statistics1012)です!

データ分析を行っていると以下のような場面にぶち当たることがあるのではないでしょうか?

次元(変数)が多すぎて分析がままならない!そもそも分析できない!
データをコンパクトにまとめて構造を見てみたい!

そんな時に有用なのが「主成分分析

主成分分析は、古くから使われている伝統的な手法ですが、現在も最前線で使われる強力な手法。

ウマたん
ウマたん
主成分分析について理解を深めよう!

この記事では、そんな「主成分分析」について見ていき、最終的にはPythonでの実装を行っていきます。

以下のYoutube動画でも解説していますよ!

主成分分析とは

Content

主成分分析は、1900年代前半にピアソンやホテリングにより導かれた手法であり、長い歴史を持っています。

Principal component analysis (PCA) in many ways forms the basis for multiv~ate data analysis
引用元:Google-“Principal Component Analysis”

教師データ(正解データ)がいらない手法であり、手元にあるデータの次元を圧縮し構造化するのに優れています。

良く主成分分析の例として取り上げられるのが学校の成績の例。

生徒それぞれに対して算数・国語・理科・社会の点数が変数として存在します。

そんなデータセットに対して主成分分析をかけると、見事に2つの変数に集約することができます。

算数と理科は理系の能力、国語と社会は文系の能力。元々4つあった変数を2つの理系・文系という能力に集約することができるのです。

この「2つ」という数字は恣意的に設定することが可能ですが、このようなデータセットであった場合は2つでほぼデータを説明できる結果になるはずです。

主成分軸によってデータをどのくらい説明できるか寄与率が算出されるのですが、概ね主成分軸の寄与率を足し上げていった時に80%を超えれば問題ないでしょう!

主成分分析のメリット

Social strategy

主成分分析のメリットは2つあります。

データの構造が分かりやすくなる

主成分分析を行うことで、データの構造を分かりやすくすることが可能です。

変数が多くデータの構造が分かりにくい時は、主成分分析をかけてみると良いでしょう。

次元圧縮により計算負荷を下げる

多次元データは計算負荷が物凄くかかります。

そんな多次元データに対して主成分分析をかけることにより、次元が圧縮され計算負荷が大幅に下がります。

先ほどの算数・国語・理科・社会だとあまり感じられないかもしれませんが、例えば、数学基礎・微分・線形代数・確率・現代文・古文・漢文・政治経済・現代社会・・・・

みたいな漢字でものすごく多くの科目が合った場合、それを理系の能力と文系の能力の2つの軸に分けるとシンプルで分かりやすくなるということが実感できるでしょう。

主成分回帰(PCR)という手法が存在し、まさに多次元データへ適用される手法になっています。

主成分分析をPythonで実装してみよう!

Coding

それでは、最後にPythonで主成分分析を実装していきましょう!

非常に簡単に実装することが可能です。

使用するデータは、統計科学研究所の「成績データ」。以下のURLからダウンロードできます。

https://statistics.co.jp/reference/statistical_data/statistical_data.htm

kokugoshakaisugakurikaongakubijututaiikugikaeigo
304351636066374420
392149567072566316
29302357697633546
9587771007782789687
707178677282466344
675356616176706640
292644523768334313

9科目の点数が166人分入ってます。

主成分分析自体は、scikit-learn内のライブラリを用います。

from sklearn.decomposition import PCA

実際に第1主成分と第2主成分を軸にデータをプロットしてみるとこんな感じ

寄与率を見てみると以下のようになっており、ほぼ第2主成分までで80%を超えていることが分かります。

array([0.66738119, 0.12202057, 0.05453805, 0.04521959, 0.03336222, 0.02460657, 0.02030967, 0.01902168, 0.01354047])

Pythonの学習については以下にまとめていますので合わせて参考にしてみてください。

Python 勉強
【Python独学勉強法】初心者が3か月で習得できるロードマップ!当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...

主成分分析 まとめ

主成分分析について簡単に見てきました。

最後に主成分分析についてまとめておきましょう!

■データの構造を分かりやすく出来る
■次元圧縮により計算負荷を下げることが出来る
■Pythonで簡単に実装できる

主成分分析は様々な場面で活用できる優秀な手法です!

もし主成分分析について詳しく知りたい方はこちらの書籍がオススメ!

是非参考にしてみてください!

created by Rinker
¥2,420
(2022/12/09 12:01:34時点 Amazon調べ-詳細)

多変量解析手法については以下の記事でより詳しくまとめていますので見てみてください!

多変量解析
多変量解析の基礎をRで実装しながら学んでいこう!当サイト【スタビジ】の本記事では、データの構造把握に役立つ多変量解析について見ていきます。多変量解析とは予測的な観点ではなくあくまで現状データの構造把握に端を発していることが特徴です。Rでの実装も同時に行いながら理解を深めていきましょう!...

統計学や機械学習やデータサイエンスの勉強法については以下の記事をぜひ参考にしてみてください!

統計学入門に必要な知識と独学勉強方法を簡単に学ぼう!当ブログ【スタビジ】の本記事では、統計学入門に必要な知識をカンタンにまとめ、それらをどのように効率的に独学で勉強していけばよいかをお話ししていきます。統計学は難しいイメージが少しありますが、学び方をしっかり考えれば大丈夫!...
機械学習
【入門】機械学習のアルゴリズム・手法をPythonとRの実装と一緒に5分で解説!当サイト【スタビジ】の本記事では、入門者向けに機械学習についてカンタンにまとめていきます。最終的にはどのように機械学習を学んでいけばよいかも見ていきます。細かい手法の実装もPython/Rを用いておこなっていくので適宜参考にしてみてください。...
【5分で分かる】データサイエンティストに必要なスキルと独学勉強ロードマップ!当サイト【スタビジ】の本記事では、データサイエンティストに求められるスキルとそれを身に付けるための勉強法について徹底的にまとめていきます!入門者でも、しっかりデータサイエンティストについて理解しある程度独学で駆け出しの状態までいけることを目指します。...

ちなみにもし、これらを全て包括的に学びたいのであれば当メディアが運営するスクールであるスタビジアカデミー、略して「スタアカ」がオススメです!

イラスト出典:Illustration by Stories by Freepik

スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら