主成分分析(PCA)について
今日のnoteでは、機械学習において大事なアルゴリズムの一つ(主成分分析)を紹介します。
内容を短めなので、100円します。2300文字ぐらいです。
PCA(principal component analysis)主成分分析はもっともよく知られている教師なし機械学習でクラスタリングアルゴリズムの1つです。
機械学習で、次元削減とクラスタリングと可視化の手法としてほぼ必ずといって良いほど、よく出てきます。
その中、次元削減もとても有用な前処理なので、ここでは主成分分析の概念を理解しておきましょう。
(上は、scikit-learnを使っている例となります。)
まず一つの例を通して見ていきましょう!
例えば、とある街に何も施設なく、他の都市と繋がる鉄道のみがあり、この街の中心に駅だけがあります。この街のアパートはみんな同じようなものです。この極端な状況で、この街のアパートの値段はほぼ駅の距離と直接に関係することが直感で分かります。
このケースでは、値段と駅までの距離という二つ関係のある変量ですが、この二つの変量の関係が非常に簡単に学習できます。
上の図のように、家賃は駅までの距離と比例して、徒歩5分ごと離れると、1000円安くなります。
しかし実際はそんな単純な状況はほとんど存在しません。
仮に駅まで同じ距離でも、他にもアパートが木造なのか、鉄筋コンクリートなのかで、家賃が変わりますし、内装が綺麗なアパートとそうじゃないのと値段が違いますし、他に築年数、建物構造、部屋の所在階数、部屋の向き、管理費、修繕があるかないかなどもの家賃の値段を影響します。こう言ったアパートの家賃に相関関係を持ちそうな要素は他にもたくさん列挙することができます。
つまり、アパートの家賃の値段において、駅までの距離という変量だけではなく、他にもたくさんの変量が存在しているときに、何が家賃の値段を一番影響するかがこの課題に取り込むときに1番の関心ごとです。それで機械学習で見つけ出すことができますが、変量が多ければ多いほど、処理が複雑になっていきます。
(1) 変量が多い場合、計算量が爆発的に増加する
(2) 実際に家賃の値段にあんまり影響のない変量も機械学習の対象になり、正解率に影響し得る(overfitting:過学習になる恐れがある)
(3) 使用する学習方法に必要な適切なデータを入力できず学習方法が期待する結果にならない
そうすると、この質問が自然に出るかもしれません。
「ではどうやって収集したすべての変数から重要ないくつかの変数だけに減らして焦点を当てるのか」
この気持ちを専門用語で表現すると、「特徴空間の次元を小さくする」ことになります。
特徴空間(feature space)の次元(dimension)を小さくすることで、考慮すべき変数間の関係が少なくなり、モデルが過学習(overfit)する可能性が低くなります。(もちろん他のところで過学習になる可能性があります。)
ここでいう特徴空間というのは、特徴量(feature)の集合の意味です。
特徴量は、上の例でいうと、アパートの家賃の値段や、駅までの距離、築年数などの要素です。変数とも言います。
上の表で言うと、列のことをイメージすると分かりやすいです。特徴空間はこの列の集合とイメージすると分かりやすいかもしれません。また、特徴空間の次元、上の表の列の数だと思ってください。「特徴空間の次元を小さくする」と言うことは、イメージ的に上の表の列の数を減らすと言うことになります。もちろん単なるいくつかの列をそのまま消すだけの操作ではありません。
このように特徴空間の次元を減らすことを 「次元削減(dimensionality reduction)」と呼びますが、次元削減を実現する方法はたくさんあります
よくあるのはこの2種類:
特徴の除去(Feature Elimination)
特徴抽出(Feature Extraction)
ここから先は
¥ 100
Amazonギフトカード5,000円分が当たる
株式会社虹賢舎 CEO 著書:https://amzn.to/39KwlE4 技術ブログ:https://kokensha.xyz 機械学習 深層学習 Python /JS IoT Raspberry Pi ロボット TOEIC950 https://gosen.world