ITパスポート 2023年 問06
問題文
A社では、顧客の行動や天候、販売店のロケーションなどの多くの項目から成るデータを取得している。これらのデータを分析することによって販売数量の変化を説明することを考える。その際、説明に使用するパラメータをできるだけ少数に絞りたい。このときに用いる分析法として、最も適切なものはどれか。
選択肢
ア:ABC分析
イ:クラスター分析
ウ:主成分分析(正解)
エ:相関分析
🔒 解説は解答すると表示されます
主成分分析で説明変数を絞る方法【ITパスポート 解説】
正解の理由
A社は多くの項目(顧客行動、天候、販売店ロケーションなど)からデータを取得し、販売数量の変化を「できるだけ少数のパラメータ」で説明したい、という目的です。この目的に最も適しているのは主成分分析(Principal Component Analysis、略してPCA)です。主成分分析は、複数の変数の情報を「少数の新しい指標(主成分)」にまとめる手法です。これにより、もともと多数あった説明変数を、情報をなるべく失わずに少ない次元に圧縮できます。選択肢の中では ウ(主成分分析)が最も適切です。
(補足:主成分分析は「変数の線形な組合せ」を作ってデータのばらつき(分散)をなるべく多く説明する主成分を順に得ます。つまり、情報が多い方向を拾って次元を減らせます。)
解法ステップ
-
問題の目的を確認する
- 「説明に使うパラメータをできるだけ少数に絞る」→ 次元削減(変数を減らす)をしたいと理解する。
-
選択肢の役割を確認する(簡潔に)
- ABC分析:在庫や商品を重要度で分類する手法(次元削減ではない)。
- クラスター分析:データをグループ分けする手法(変数を減らす目的ではない)。
- 相関分析:2変数間の関係を見る手法(変数を減らす手段ではない)。
- 主成分分析:多数の変数を少数の主成分にまとめる(次元削減に該当)。
-
主成分分析を選ぶ理由を確認する(上の理由に合致するか)
- 多数の説明変数を「少数の合成変数」で表現できるかをチェック → 可能ならPCAが最適。
-
実務での基本的な実行手順(実際に使う場合)
- データの標準化(単位やスケールが違う場合に必須)
- 共分散(または相関)行列の作成
- 固有値・固有ベクトルの計算→主成分を得る
- 各主成分の寄与率(説明できる分散の割合)で必要な数を決める(例:累積で80〜90%)
- 元データを上位k主成分に射影して分析に使う
選択肢別の誤答解説
-
ア: ABC分析
- 在庫管理での重要度(売上金額や回転率)による分類手法です。アイテムをA/B/Cに分けることで管理の優先度を決めます。変数の次元を減らす方法ではありません。
-
イ: クラスター分析(クラスタリング)
- 顧客や商品を似た者同士でグループ分けする手法です。データ点(サンプル)を分類するのが目的で、説明に使う変数の数を減らすこと自体は目的にしていません。次元削減は前処理としてクラスタリングと組み合わせられますが、直接の答えではありません。
-
ウ: 主成分分析(正解)
- 複数の相関ある変数を、情報をなるべく保ったまま少数の合成変数(主成分)にまとめる。販売数量変動を説明するパラメータ数を減らしたい目的に合致します。
-
エ: 相関分析
- 変数同士の関係(どれくらい連動するか)を測る手法です。関係性の把握には使えますが、それだけで説明変数の数を減らす手法にはなりません。相関が強い変数群の存在を確認したうえでPCAなどを使う、という流れになります。
よくある誤解
-
「相関が高い変数を見つければそれで次元削減できる」
- 相関分析は関係を見るだけで、実際に変数を1つにまとめる処理は行いません。相関が高いとPCAでまとめやすい、というヒントにはなります。
-
「PCAはどんなデータにも使える」
- PCAは線形な組合せで情報をまとめます。非線形な関係が主な場合や、カテゴリ(品質ランクなど)ばかりのデータには向きません。カテゴリ変数はダミー化など前処理が必要です。
-
「主成分は元の変数と同じように解釈できる」
- 主成分は複数の元変数の重み付き合算です。数学的にはデータをよく説明しますが、そのまま「売上に最も効く因子」と直感的に解釈できるとは限りません。解釈には主成分負荷量(各元変数の寄与)を確認する必要があります。
補足コラム
-
なぜデータを標準化するか?
- 例えば「気温(度)」と「来店客数(人)」では数値の幅が違います。PCAは分散の大きい変数の影響を強く受けるため、単位が違うと偏った主成分ができます。そこで平均0、標準偏差1に揃える「標準化」を行います。
-
主成分数の決め方(実務上の目安)
- 各主成分の「寄与率(説明できる分散の割合)」を累積して、合計が例えば 〜 になるまでの個数を選ぶことが多いです。ただし目的や必要な解釈のしやすさで調整します。
-
他の次元削減手法の例
- 因子分析(factor analysis):観測変数の背後にある潜在因子を想定してモデル化する方法
- t-SNE、UMAP:高次元データを可視化するための非線形次元削減(主に可視化用途)
- オートエンコーダ(autoencoder):ニューラルネットを使った非線形次元削減
簡単な例え:複数の測定(身長、体重、ウエスト)から「体格」という少数の指標にまとめるイメージです。PCAは「よく情報を表す合成指標」を自動で作ります。
FAQ
Q1. 主成分分析は教師あり(正解がある)手法ですか?
A1. いいえ。PCAは教師なし学習で、目的変数(ここでは販売数量)を使わずにデータの構造(分散)だけを基に主成分を作ります。販売数量を説明したい場合、PCAで次元を減らした後に回帰分析などの教師あり手法で説明力を評価する流れが一般的です。
A1. いいえ。PCAは教師なし学習で、目的変数(ここでは販売数量)を使わずにデータの構造(分散)だけを基に主成分を作ります。販売数量を説明したい場合、PCAで次元を減らした後に回帰分析などの教師あり手法で説明力を評価する流れが一般的です。
Q2. 何個の主成分を残せばよいですか?
A2. 一般的には「累積寄与率が80〜90%になる個数」を目安にします。ただし、解釈性を重視する場合は少ない主成分に絞ることもあります。最終的には目的(予測精度か解釈か)で判断します。
A2. 一般的には「累積寄与率が80〜90%になる個数」を目安にします。ただし、解釈性を重視する場合は少ない主成分に絞ることもあります。最終的には目的(予測精度か解釈か)で判断します。
Q3. カテゴリ変数(地域、店舗タイプなど)はPCAで扱えますか?
A3. そのままでは扱えません。カテゴリ変数はダミー変数(0/1)に変換してから使うか、カテゴリ専用の手法(因子分析や多重対応分析)を検討します。
A3. そのままでは扱えません。カテゴリ変数はダミー変数(0/1)に変換してから使うか、カテゴリ専用の手法(因子分析や多重対応分析)を検討します。
Q4. 実務での簡単な実行例(Python)は?
A4. scikit-learn を使うと次のように書けます(標準化とPCAの例):
A4. scikit-learn を使うと次のように書けます(標準化とPCAの例):
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
# X: DataFrame や ndarray(各列が説明変数)
scaler = StandardScaler()
X_std = scaler.fit_transform(X)
pca = PCA(n_components=3) # 主成分を3つにする例
X_pca = pca.fit_transform(X_std)
print(pca.explained_variance_ratio_) # 各主成分の寄与率
上の手順で、どれくらい分散(情報)が残るか確認してから次の分析に進みます。
関連キーワード: 主成分分析、PCA、次元削減、標準化、寄与率、多重共線性、クラスタリング、相関分析、因子分析

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

