質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

pythonを用いた主成分分析(データ有り)

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 4
  • VIEW 244

rgb_nk

score 25

主成分分析での第一主成分、第二主成分が何を表しているのか理解したい。

今回使用したデータをgithub上で公開しているので、
データが必要な方は、git cloneお願いします

git clone https://github.com/kouhei-github/txt_data.git

最後に質問をまとめていますので、1点でもわかる方お答え頂きたいです。
またデータから気付いた点や、自分なりに分析してみた等の意見もあればお願い致します。

困っていること

現在、データ解析の勉強のために、あるサイトの検索順位のアルゴリズムを解析しています。
下記にデータを示します。

データは実際にgit cloneしてみる生データの方が、見やすいかと思います!
下記のコードでdataframeにして確認してください

# df = pd.read_csv('analyse.txt', index_col=0)

rank firstpage title_len distance    crolling job_date keywords_num_job    
job_lenth company_jobs_num
0    6    1    27    7143.010    0    720    0    1520    8
1    9    1    6    2041.890    0    384    0    571    805
...    ...    ...    ...    ...    ...    ...    ...    ...    ...
24872    43    0    21    6467660.000    0    72    0    1011    13
24873    68    0    19    1743.930    1    720    0    608    13

24874 rows × 9 columns

rank: ランキングの順位
firstpage: 1が1page目に表示、0がそれ以外
title_len: タイトルの長さ
distance: 距離
crolling: クローリングかどうか
job_date: その募集をした日付
company_jobs_num: その会社が持っている他の募集
job_lenth: 募集の内容の長さ
keywords_num_job: 検索時にかけるキーワードの数

試したこと

データを正規化し、自分なりに必要なデータに絞ったのが下記で、

rank      title_len    keywords_num_job job_lenth     company_jobs_num
0    0.050505    0.337838    0.000    0.176375    0.000014
1    0.080808    0.054054    0.000    0.066257    0.001624
...    ...    ...    ...    ...    ...
24872    0.424242    0.256757    0.000    0.117313    0.000024
24873    0.676768    0.229730    0.000    0.070550    0.000024

24784rows × 5columns

このデータを、主成分分析(PCA)をかけ,
第一主成分と第二主成分をplotして、firstpageで散布図を作成すると
イメージ説明
うまくわかれています。
私の解釈として、第一主成分はfirstpage(1page目になれるかどうか)を表していると考えています。
ここでの散布図の分かれ目の0.4とは何を表しているのでしょうか?

次に寄与率をみてみると、
0
PC1    0.623347
PC2    0.231397
PC3    0.070281
PC4    0.040889
PC5    0.034086

第一主成分で、元データの60%を説明できており、第二主成分まで合わせると80%超えています。
また見やすくするために累積寄与率をグラフにすると、下記になります。
![イメージ説明]

最後に「第一主成分と第二主成分における観測変数の寄与度をプロット」すると
イメージ説明

このようになります。第一主成分(1page目になれるかどうか)に貢献しているのは、
job_lenth, keywords_num_job, company_jobs_num, title_len
であると私は解釈しています。

しかし、PC1の座標をを見てみると貢献していたとしても 0.0でこの分析が合っているかどうかわかりません。

最後に、質問をまとめますと

1, PC1(第一主成分), PC2(第二主成分)でfirstpageの散布図を示した図の、分かれ目の0.4とは何を表しているのでしょうか?
2, 皆さんの解釈で第二主成分は何を表していると思いますか?
3, この主成分分析はあっているのでしょうか?
4, 最後のグラフの数字(PC1だと-1.0~0.0)は何を示しているのでしょうか?

もし他に、このデータで主成分分析等行って傾向がわかった方コメントしてください。
またコードの公開をして頂けると幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

0

1, PC1(第一主成分), PC2(第二主成分)でfirstpageの散布図を示した図の、分かれ目の0.4とは何を表しているのでしょうか?

第一主成分が0.4ということ以上は表していません。よって、もう少し詳しく解釈するためには第一主成分が何を表しているのかを解釈する必要があります。
主成分分析における主成分は、ざっくりいうと与えられたデータから計算された指標のようなものです。主成分に対して与えられたデータがどの程度影響しているのかは、計算結果のオブジェクトからcomponents_を使って取り出して解釈します。解釈に特段のルールや方法はないようですが、私はcomponents_の絶対値に着目して解釈するようにしています。まず、ゼロ近傍のデータは主成分に影響していないと解釈して残りから解釈します。

例えば。インプットが『身長・体重・座高・腹囲』の主成分分析を行ったとします。結果、第一主成分がすべてプラスでそこそこ大きいのであれば、『カラダの大きさ』という抽象的な概念を表していると解釈します。第二主成分が、身長と座高はマイナス(そこそこ大きい)で、他はゼロ近傍であれば、第二主成分は『縦方向のカラダの大きさ(端的にいうなら身長)』と解釈します。

今回の分析におけるcomponents_がわからないので何とも言えませんので主成分の解釈はできず、結果として0.4が何を意味しているのかもわからないというのが事実のように思われます。

2, 皆さんの解釈で第二主成分は何を表していると思いますか?
上記の通りで、分析が足りていないので何とも言えません。

3, この主成分分析はあっているのでしょうか?
ここでいう『この主成分分析』がどの部分を示しているのかによります。
結論を導くまでの手順や解釈のことを意味しているのであれば、最終ゴールである『あるサイトの検索順位のアルゴリズムを解析』に対して主成分分析の結果がどのようになるのかという仮説次第です。

『第一主成分と第二主成分をplotして、firstpageで散布図を作成』というこれが最終的に得たいもののように思います。言い換えると、そこに至るまでの手順が飛んでいることが結果をどう解釈したらいいのかを悩ませているような気がします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/06/30 15:34

    凄すぎます。
    全く無知な状態で手探りでやっていたので、
    私のミスであるとわかりました。
    もう一度手順を見直してみます。

    その際は、またご指導とご鞭撻の程宜しくお願い致します。

    キャンセル

0

第一主成分が0.4ということです

2, 皆さんの解釈で第二主成分は何を表していると思いますか?

図から明らかですが title_len ではないでしょうか

3, この主成分分析はあっているのでしょうか?

コードを示していただかないと詳細が分からないですが
第一主成分でほぼ完璧に答えが説明できてしまっている
のは本当にそうなのかも知れないですが、
何らかの間違いか
主成分分析をせずとも特定の変数で説明できてしまうのではないかなど
疑った方がよろしいかと。

4, 最後のグラフの数字(PC1だと-1.0~0.0)は何を示しているのでしょうか?

「観測変数の寄与度をプロット」しているのですからPC1に対する「観測変数の寄与度」ですね。
固有ベクトルですが禅問答のようになってしまうので、下記の記事をご参考になさってください。

下記などが参考になると思います。
c.f. 
https://qiita.com/maskot1977/items/2680927b58cdc4fad8d4
https://qiita.com/maskot1977/items/082557fcda78c4cdb41f

あと主成分分析の基本をもう少し学ばれて、主成分とは何か、寄与度とは何かをご理解されたほうがよろしいかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/06/30 15:36

    参考サイトまで載せていただいきありがとうございます。
    私が無知であることがよく知れました。
    おっしゃるように、今一度主成分分析について学び直そうと思います。

    キャンセル

0

せっかくデータをアップしてあるので試行してみました。処理概要は以下です。

・処理対象は、rbg_nkさんが対象としたものと同一にした。(項目の意味がわかるとやりようがあります)
・データ項目のスケールが異なるのでMinMaxScalarで標準化した。(実装がわからないので、何を使用したのか確証がないが、質問の記載と同じような結果だったのでMinManScalarを使用)
・PCA実行時のオプションパラメータはデフォルト値

得られた結果
・主成分1および2で全体の85%の情報量を保有。主成分3まで含めると90%を超えるので、このあたりまでが主要な情報で以降はノイズと扱っても良さそう。
・主成分1はrankによって表現されている。(符号がマイナスなので値が小さいほどランクが大きい)
・主成分2はtitle_lenによって表現されている。keywords_num_jobおよびjob_lenthも多少影響。各々が何を意味しているかわからないので解釈は保留。ざっくりいうとtitle_lenを意味している。
・firstpageを軸に主成分1の分布をヒストグラムで可視化。その結果、firstpage=1とfirstpage=0は異なる分布を示す。つまり、主成分1(rank)とfirstpageは何らかの関係がある。
・一方、主成分2についてヒストグラムで可視化した結果は、近似した分布を示した。つまり、主成分2(title_len)はfirst_pageと明示的な関係性は見られない。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる