2026年10月8日にscikit-learnのPCA・LDA・GaussianMixture・交差検証本文を再確認した。主成分、因子、クラスター、分類、回帰は、問いが圧縮・潜在構造・予測・説明・因果のどれかで選ぶ別のモデルである。標準化、欠測、外れ値、成分数、クラス数、ラベル不確実性、未見評価を記録し、きれいな2軸や高いスコアを事業の原因や施策の効果とみなさない。
顧客の利用回数、契約期間、購入金額、問い合わせ履歴。列が増えるほど、一つの平均値だけでは状況を捉えにくくなります。多変量解析は、こうした複数の変数を同時に扱うための手法のまとまりです。
ただし、手法を使うだけで売上や利益が改善するわけではありません。データを要約する、似た対象をまとめる、未知の結果を予測する、介入の効果を知るという問いを分けると、必要な分析と次の行動が見えてきます。
30秒で要点
- 手法名から始めず、何を知りたいかと、一行が誰・何・いつを表すかを決める。
- PCAと因子分析、クラスタリングと分類は、それぞれ目的が違う。
- 予測評価では前処理前にデータを分ける。予測できることと施策が効くことも区別する。
問いに合わせて手法を選ぶ
この記事では、日本語で広く「多変量解析」と呼ばれる範囲を扱います。用語を厳密に使う場面では、説明変数が複数で目的変数が一つの重回帰と、複数の目的変数を同時に扱う多変量回帰を区別します。
表が収まらない場合は、横にスクロールできます
| 知りたいこと | 手法の候補 | 得られるもの | それだけでは言えないこと |
|---|---|---|---|
| 多数の指標を少ない軸で要約したい | 主成分分析(PCA) | 分散を多く表す合成軸 | 重要な業務情報を全て保持したこと |
| 複数の質問に共通する構造を考えたい | 因子分析 | 潜在因子と各項目の関係のモデル | 因子の実在や因果関係 |
| 似た顧客や店舗をまとめたい | クラスタリング | 選んだ特徴量と距離に基づく群 | 固定した「本当の顧客タイプ」 |
| 売上などの数値を予測したい | 重回帰など | 説明変数からの予測値 | 係数どおりの介入効果 |
| 解約など既知のラベルを予測したい | 判別分析・ロジスティック回帰など | 群の予測や確率 | 介入したときの結果の変化 |
| 二組の変数群の関連を調べたい | 正準相関分析 | 両群の合成軸どうしの関連 | どちらが原因かという結論 |
手法の基本は、scikit-learnの分解手法、クラスタリング、線形モデル、正準相関を含む二群の分解で確認できます。多くの変数を扱えることは、少ないデータで安定して推定できることを意味しません。
主成分と因子は、何を残すかが違う
PCAは、元の変数を組み合わせ、分散を多く表す方向から順に互いに直交する軸を作ります。二つの軸で散布図を描けば、元の多数の列では見えにくい配置を眺められます。ただし残した軸の寄与率は、入力の分散をどれだけ表すかの指標です。売上や解約をどれだけ正しく予測できるかとは別です。
例えば利用回数と利用金額では単位が違います。金額を円で表すか万円で表すかだけで、未調整の分散や距離は変わります。各変数を平均ゼロ・標準偏差一にする標準化は選択肢ですが、変数を等しい尺度で扱うことが目的に合うかを考えます。scikit-learnのPCAは平均を引く中心化は行いますが、元の各変数の標準化は自動で行いません。
因子分析は、質問項目などの共通する変動を潜在因子で説明し、変数固有の誤差と分けるモデルです。因子負荷量を見て「使いやすさ」と名付けても、それは質問内容を踏まえた解釈です。別の回答者や時期でも構造が成り立つか、尺度や因子数が適切かを確認します。PCAの軸に名前を付ける作業と同一ではありません。
群分けは、使える仮説になって初めて役立つ
クラスタリングには正解ラベルがありません。同じ顧客でも、金額と頻度でまとめる場合と、問い合わせ内容でまとめる場合では、違う群ができて自然です。距離の定義、標準化、群の数、外れ値によって結果も変わります。
ここで確かめたいのは、見栄えのよい色分けよりも、どんな違いを持つ群なのか、期間や標本を変えても似た構造が残るか、担当者が異なる対応を取れるかです。「価格重視層」と命名しただけでは、値引きが効くと確認されたわけではありません。
一方、「翌月に解約した/しなかった」という既知のラベルで学習するなら分類です。解約予測の目的では、クラスタリングを必須の前処理にせず、直接予測するモデルも比較対象にします。
架空の解約予測計画で、情報の境界を決める
ここからは学習用の架空の業務設計です。実在企業の導入事例や改善実績を表すものではありません。月末に、翌月の解約リスクを予測して担当者の確認対象を絞るとします。
一行は「ある顧客のある月末時点」です。説明変数には、その時点までの利用回数、在籍月数、問い合わせ件数などを置きます。目的変数は翌月の解約の有無です。翌月の最終請求額や解約申請の記録を説明変数に混ぜれば、予測時点では知り得ない答えの一部を使うことになります。
過去期間で開発し、それより後の期間で評価する場合、欠測補完の値、標準化の平均・標準偏差、PCAの軸も過去側だけで求めます。評価側には確定した同じ変換を適用します。さらに学習側で候補を比較する交差検証でも、各分割の内側で前処理を学習させます。
scikit-learnのデータ漏洩の解説は、分割前の標準化・PCA・変数選択が評価を楽観的にする問題を説明しています。Pipelineは処理を揃える助けになりますが、元の列に将来情報が混ざっている問題まで自動では直しません。同じ顧客の複数月がある場合、どの顧客へ使うかも決めます。既存顧客の翌月を予測する場面と、新しい顧客へ一般化する場面では、時間や顧客単位の分け方が異なります。学習期間の末尾の目的変数が確定してから、次の評価を行えるかも確認します。
数字を出す前に、評価の物差しを決める
予測結果を評価するなら、凝ったモデルの前に、単純な基準と比較します。売上なら過去平均など、解約なら全体の解約率を使う予測などです。どのモデルも同じ対象・同じ期間で比べます。
表が収まらない場合は、横にスクロールできます
| 目的 | 比較するもの | 読み違いを避ける確認 |
|---|---|---|
| 数値の予測 | 平均絶対誤差など、単位の分かる誤差 | 一部の大口顧客だけで結果が決まっていないか |
| 解約の分類 | 見逃し、誤警報、確認できる人数 | 解約が少ないと「全員継続」でも正解率が高くなる |
| 確率の予測 | 予測確率と実際の発生割合の対応 | 順位が良くても確率の値が適切とは限らない |
| 探索的な群分け | 群の特徴、安定性、対応の違い | 群の数を増やしただけで成功としない |
評価用データで何度も手法を選び直したら、そのデータは開発に使ったことになります。新たな最終評価を用意し、評価値には件数・期間・分割方法と、不確実性の評価方法を添えます。繰り返し記録を含む場合は、行をばらばらに再標本化して独立とみなさないことも必要です。
予測の次に、施策の効果を別に確かめる
解約リスクが高い人を見つけられても、その人へ割引を提示すると継続するとは限りません。介入の対象を選ぶ予測と、介入によって変わる結果は別の量です。売上と広告費の回帰、正準相関による変数群の関連も、それだけで施策の因果効果にはなりません。
結果を施策に使う際は、まず分析が扱った対象と期間、できる判断、まだ確認していない判断を担当者と共有します。効果を確かめる段階では、条件が整えばランダム割付の実験を計画します。観測データを使う場合も、比較可能性など追加の因果推論の条件を明示します。
次に進むなら、線形回帰の係数と区間で数値予測の読み方を、A/Bテストの統計で実験設計と結果の不確実性を確認できます。