忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【DS検定対策】データの背後にある「真の理由」を探る!因子分析の仕組み

「このアンケート結果の共通点は何だろう?」バラバラに見えるデータ(観測変数)の背後で、全体をコントロールしている「見えない要因(潜在因子)」を推定するのが因子分析です。

1. 【 問題 】

因子分析の説明として最も適切なものはどれでしょうか?

① データを似たもの同士でグループ分け(クラスタリング)する手法
② 観測された変数間の相関関係から、それらに影響を与えている共通の「潜在的な因子」を推定する手法
③ 目的変数を複数の説明変数で予測する方程式を作成する手法
④ データの次元を圧縮し、情報損失を最小限に抑えつつ合成変数を作る手法


2. 【 解答 】

正解: ② 観測された変数間の相関関係から、それらに影響を与えている共通の「潜在的な因子」を推定する手法

3. 整理:因果の向きを意識しよう

因子分析は、「目に見えない原因(因子)があるから、目に見える結果(数値)が現れる」と考えます。

【 因子分析のイメージ 】

[ 潜在因子(見えない原因) ]
  ↓ 影響を与える
[ 観測変数(見えるデータ) ]

(例)
「論理的思考力(因子)」があるから……
→ 数学の点数が高い(観測変数)
→ プログラミングの習得が早い(観測変数)

--------------------------

特徴: 「数学とプログラミングの点数に相関がある」という事実から、背後にある「論理的思考力」という共通因子を推定します。

4. 主成分分析との違い(重要!)

1. 因果の向き: 因子分析は「原因 → 結果」ですが、主成分分析は「結果を集計 → 要約(合成変数)」という逆向きの考え方です。
2. 目的: 因子分析は「背後にある理由を解釈すること」、主成分分析は「データを要約・圧縮すること」を主な目的とします。


5. DS検定形式:実戦4択クイズ

問:因子分析において、各観測変数が特定の因子から受けている影響の強さを表す指標を何と呼ぶか。

① 因子負荷量   ② 寄与率   ③ 相関係数   ④ 回帰係数

【 正解: ① 】

解説: 因子負荷量は、いわば「因子から各変数へ伸びる矢印の太さ」です。この値が大きいほど、その変数は特定の因子の影響を強く受けていると判断されます。


6. まとめ

DS検定において「観測変数の背後」「潜在的な因子を推定」という言葉が出たら「因子分析」です。アンケート分析や心理統計などで、データに隠された「意味」を解釈するための強力な手法であることを覚えておきましょう!




PR

【Kaggle挑戦記】S4E11 #1:全特徴量を投入して見えた「名前」の怪しい貢献度

KaggleのPlayground Series S4E11「メンタルヘルス予測」に参戦しました。 まずはエンジニアとしての定石通り、複雑な加工はせず「まずは動くもの」を目指します。 今回はあえて「id以外の全特徴量をぶっ込む」という、力押しのベースライン構築からスタートです。

1. 戦略:全件投入のフルスキャン・アプローチ

「どの変数が有効か?」と悩む前に、LightGBMの処理能力を信じて全データを投入しました。 通常なら除外するはずの「Name(名前)」カラムも、あえてそのまま。 カテゴリ変数は、LightGBMのcategory型にキャストするだけで、内部的に最適化されるように実装しました。

# 特徴量は全投入(idのみ除外)
X = train.drop(['id', 'Depression'], axis=1)
y = train['Depression']

# 全object型カラムをcategory型へキャスト
cat_cols = X.select_dtypes(include=['object']).columns.tolist()
for col in cat_cols:
    X[col] = X[col].astype('category')

2. リザルト:驚愕のスコアと「ログ」の違和感

Macで実行すること数秒。生成されたsubmission.csvをSubmitした結果、驚きのスコアが返ってきました。

Public Score: 0.94008 / Private Score: 0.93868

いきなり0.94超え。しかし、エンジニアとして「中身」をデバッグせずに喜ぶわけにはいきません。 モデルが何を根拠に判断したか(Feature Importance)を確認したところ、奇妙な事実が判明しました。

--- Feature Importance (Top 5) ---
1. Name : 1308
2. City : 223
3. Age : 204
4. Financial Stress : 174
5. Profession : 159

3. 考察:なぜ「名前」の貢献度が異常に高いのか?

予測の決め手が、年齢や仕事のストレスを差し置いて「Name(名前)」になっています。 バックエンドのロジックとして考えれば、名前の文字列そのものがメンタルヘルスに影響を与えるはずがありません。

考えられる仮説はいくつかあります:

  • 過学習(Overfitting): モデルが名前をユニークなキーとして認識し、個々のデータを「暗記」してしまった。
  • データリーク: 名前の付け方や順序に、正解データへのヒントが紛れ込んでいる(システムバグに近い状態)。
  • プロキシ変数の可能性: 名前が特定の居住地域や年齢層、あるいは家系的な背景を代理してしまっている。

4. まとめ:次回のデバッグ指針

「全部入り」で投げた結果、0.94という高いベンチマークと同時に、「名前という名の巨大なノイズ(あるいは不正解)」を炙り出すことができました。

この「名前」がスコアを不当に押し上げているのか、それとも何か深い意味があるのか。 次回は「Name」をdropした状態で再学習を行い、モデルの真の実力をデバッグしてみたいと思います。




【DS検定対策】文章をバラバラに分解!「形態素解析」の仕組みと役割

AIに文章を理解させる第一歩は、文章を「これ以上分けられない最小単位」にまで分解することです。そのプロセスと重要性を学びましょう。

1. 【 問題 】

テキストデータを分析する際、文章を意味を持つ最小の単位に分割し、それぞれの品詞(名詞、動詞、助詞など)を判別する作業を何と呼ぶでしょうか?

① 構文解析
② 形態素解析
③ 意味解析
④ 感情分析


2. 【 解答 】

正解: ② 形態素解析

3. 整理:文章を「意味の最小パーツ」に分ける

英語は単語がスペースで区切られていますが、日本語はどこで区切るかをAIが判断しなければなりません。

【 形態素解析の実行イメージ 】

[ 元の文章 ]
「すもももももももものうち」

[ 解析結果 ]
・すもも(名詞)
・も(助詞)
・もも(名詞)
・も(助詞)
・もも(名詞)
・の(助詞)
・うち(名詞)

--------------------------

ポイント: この「すもも」や「も」のように、意味を持つ最小の単位を「形態素」と呼びます。

4. なぜ形態素解析が必要なのか?

1. 不要な語の除去(ストップワード): 「の」や「です」などの頻出するが分析に不要な語を除外できます。
2. 単語の正規化: 「走っ(た)」や「走ら(ない)」を、辞書の見出し語である「走る」に統一して集計できます。
3. 特徴量の抽出: 「名詞だけを抜き出して、頻出ワードのランキングを作る」といった分析が可能になります。


5. DS検定形式:実戦4択クイズ

問:日本語の形態素解析を行うための代表的なオープンソースのライブラリ(ツール)はどれか。

① Pandas   ② MeCab   ③ NumPy   ④ Matplotlib

【 正解: ② 】

解説: 日本語の形態素解析エンジンとしては「MeCab(メカブ)」が非常に有名です。その他、JanomeやSudachiなどもよく使われます。①③④は数値計算やデータ操作用のライブラリです。


6. まとめ

DS検定において「最小単位に分割」「品詞を決定」という記述が出たら「形態素解析」です。テキストマイニングを行う上での「前処理」として欠かせない工程であることを覚えておきましょう!

【DS検定対策】似たもの同士を集める!「k平均法」のアルゴリズム

答え(ラベル)のないデータから、AIが自らグループを見つけ出す「クラスタリング」。その中でも最も基本的で強力な手法が「k平均法」です。

1. 【 問題 】

k平均法(k-means法)を用いて、データの集合をk個のクラスタに分割する際の手順や条件として、適切なものはどれでしょうか?

① 各標本(データ)は、全データの平均値に最も近いクラスタに属する。
② 各標本は、k個の重心のうち、自身から最も距離が近い重心のクラスタに属する。
③ データの数(n)をkで割った同数のグループをランダムに作成する。
④ 各標本は、あらかじめ決められた「正解ラベル」に最も近いクラスタに属する。


2. 【 解答 】

正解: ② 各標本は、k個の重心のうち、自身から最も距離が近い重心のクラスタに属する。

3. 整理:繰り返しで「重心」を最適化する

k平均法は、以下の「割り当て」と「更新」のステップを繰り返すことで、最適なグループ分けを完成させます。

【 k平均法のステップ 】

[ STEP 1 ]
ランダムにk個の「重心」を決める。

[ STEP 2:割り当て ]
★ 各データは、一番近い重心のチームに所属する。

[ STEP 3:更新 ]
各チームに所属したデータの「平均位置」を計算し、そこを新しい重心にする。

[ STEP 4:繰り返し ]
重心の位置が動かなくなるまでSTEP 2と3を繰り返す。

--------------------------

特徴: 「非教師あり学習」であるため、正解データなしでデータを分類できます。

4. 知っておくべきポイント

1. kの値は人間が決める: 最初に「いくつのグループに分けるか(k)」を人間が指定する必要があります。
2. 初期値に依存する: 最初にランダムに決める重心の位置によって、結果が変わってしまうことがあります。
3. エルボー法: 最適なk(グループ数)を決めるための代表的な手法です。


5. DS検定形式:実戦4択クイズ

問:k平均法において、クラスタ内のデータと重心の距離の合計(誤差の二乗和)が最小になるように最適化が行われますが、この「距離」として一般的に用いられるものはどれか。

① ハミング距離   ② ユークリッド距離   ③ ジャッカード係数   ④ 編集距離

【 正解: ② 】

解説: 直線的な距離を測る「ユークリッド距離」を用いるのが標準的です。データ同士の幾何学的な近さを基準にグループ化を行います。


6. まとめ

DS検定において「重心」「最も近いクラスタに属する」「非教師あり学習」というキーワードが出たら「k平均法」です。マーケティングの顧客セグメンテーションなど、実務でも非常に使い勝手の良い手法なので、しっかり押さえておきましょう!

【DS検定対策】AI学習の原点!「ヘップの学習則」とシナプスの絆

「共に火を噴くニューロンは、共に繋がる(Cells that fire together, wire together)」。この一文に集約されるヘップの学習則を学びましょう。

1. 【 問題 】

心理学者ドナルド・ヘップが提唱した、ニューラルネットワークの学習の基礎となる考え方で、「シナプスの前後の神経細胞が同時に興奮するとき、そのシナプスの結合強度が強化される」という法則を何と呼ぶでしょうか?

① ムーアの法則
② ヘップの学習則(ヘブ則)
③ スケーリング則
④ べき乗則


2. 【 解答 】

正解: ② ヘップの学習則(ヘブ則)

3. 整理:学習とは「重み」が変わること

ヘップの学習則は、1949年に脳の学習メカニズムを説明するために提案されました。これが現代のAIにおける「重みの更新」のヒントになっています。

【 ヘブ則のメカニズム 】

[ 神経細胞A ] --- (シナプス) ---> [ 神経細胞B ]

1. 細胞Aが興奮し、信号を送る。
2. 同時に細胞Bも興奮する。
3. ★「この二つの連携は重要だ!」と脳が判断。
4. 次回から、Aの信号がより強くBに伝わるようになる(結合の強化)。

--------------------------

現代AIへの応用:
パーセプトロンなどのニューラルネットワークにおいて、入力と出力が連動する際に「重み(Weight)」の値を大きくする処理の理論的な裏付けとなっています。

4. なぜこれが「パーセプトロン」の基礎なのか?

1. 重みの更新: ニューラルネットワークが学習するとは、まさにこの「シナプス結合の強さ(重み)」を調整する作業そのものです。
2. 自己組織化: 外部から正解を与えられなくても、頻繁に起きるパターンを自然と記憶する「自己組織化マップ」などのモデルにも影響を与えています。
3. 生物学的妥当性: 数学的なアルゴリズムが、実際の生物の脳の仕組みに近いという点が、この分野の大きな強みになっています。


5. DS検定形式:実戦4択クイズ

問:ニューラルネットワークにおいて、入力信号と出力信号の相関に基づいて「重み」を調整するアルゴリズムの最も初期的な考え方はどれか。

① 誤差逆伝播法(バックプロパゲーション)
② ヘップの学習則
③ 勾配降下法
④ 正則化

【 正解: ② 】

解説: ①や③は後の時代に登場したより高度な手法ですが、その「根っこ」にあるのは「連動する部分を強くする」というヘップの考え方です。


6. まとめ

DS検定において「シナプス」「前後で同時に興奮」「結合の強化」というフレーズが出たら「ヘップの学習則」です。AIの歴史の1ページ目として、しっかり記憶に刻んでおきましょう!