AIの基礎
次元削減とは何か?
次元削減とは何か?
次元削減は、データセットの次元数を減らすプロセスであり、多くの特徴を取り込み、より少ない特徴で表現します。例えば、次元削減は、20個の特徴を持つデータセットを、わずか数個の特徴に減らすために使用できます。次元削減は、無教師学習タスクで、自動的に多くの特徴からクラスを作成するために一般的に使用されます。次元削減が使用される理由と方法をよりよく理解するために、高次元データの問題と次元削減の最も一般的な方法を調べてみましょう。
多くの次元は過剰適合につながる
次元とは、データセット内の特徴/列の数です。
機械学習では、多くの特徴がより良いモデルを作成するという仮定がよくあります。ただし、多くの特徴が必ずしもより良いモデルを意味するわけではありません。
データセットの特徴は、モデルにとってどれほど有用かという点で大きく異なります。多くの特徴はほとんど重要ではありません。また、データセットに多くの特徴があると、さまざまな特徴の組み合わせがデータ内で適切に表現されることを保証するために、多くのサンプルが必要になります。したがって、サンプルの数は特徴の数と比例して増加します。多くのサンプルと多くの特徴があると、モデルはより複雑になり、過剰適合しやすくなります。モデルはトレーニングデータ内のパターンを学習しすぎて、外部データに一般化できなくなります。
データセットの次元数を削減することで、複数の利点が得られます。上で述べたように、よりシンプルなモデルは過剰適合しにくくなります。モデルは特徴どうしの関係について、より少ない仮定をするからです。また、次元数が少ないと、アルゴリズムをトレーニングするために必要な計算能力も少なくて済みます。同様に、次元数が小さいデータセットには、より少ないストレージスペースが必要です。データセットの次元数を削減することで、多くの特徴を持つデータセットには適さないアルゴリズムを使用できるようになります。
一般的な次元削減方法
次元削減は、特徴選択または特徴エンジニアリングによって行うことができます。特徴選択では、エンジニアがデータセットの最も関連性の高い特徴を特定します。一方、特徴エンジニアリングは、他の特徴を組み合わせたり変換したりして、新しい特徴を作成するプロセスです。
特徴選択とエンジニアリングは、プログラムによって自動的に行うことも、手動で行うこともできます。手動で特徴を選択およびエンジニアリングする場合、特徴とクラス間の相関関係を発見するために、データを視覚化することが一般的です。このような方法で次元削減を行うと、かなり時間がかかることがあります。したがって、最も一般的な次元削減方法の多くは、PythonのScikit-learnライブラリなどのライブラリで使用可能なアルゴリズムを使用します。これらの一般的な次元削減アルゴリズムには、主成分分析(PCA)、特異値分解(SVD)、線形判別分析(LDA)があります。
無教師学習タスクの次元削減に使用されるアルゴリズムは、一般的にPCAとSVDです。一方、教師あり学習の次元削減には、LDAとPCAが一般的に使用されます。教師あり学習モデルでは、新しく生成された特徴は単に機械学習分類器にフィードされます。ここで説明した使用法は一般的な使用法であり、唯一の使用法ではありません。これらの次元削減アルゴリズムは、機械学習モデル以外でも使用される単なる統計的手法です。
主成分分析

図:主成分を特定した行列
主成分分析(PCA)は、データセットの特徴を分析し、最も影響力のある特徴を要約する統計的手法です。データセットの特徴は、データの特徴を維持しながら、より少ない次元で表現するために組み合わせられます。これは、データをより高い次元の表現から、わずか数個の次元の表現に「圧縮」することと考えることができます。
PCAが役立つ状況の例としては、ワインをさまざまな特徴で説明することが考えられます。CO2レベルやエアレーションレベルなどの非常に具体的な特徴でワインを説明することは可能ですが、ワインの特定のタイプを識別しようとする場合、これらの特徴はあまり役に立たない可能性があります。代わりに、味、色、年齢などのより一般的な特徴に基づいてタイプを識別する方が適切です。PCAは、より具体的な特徴を組み合わせて、より一般的で役に立つ特徴を作成するために使用できます。
PCAは、入力特徴がそれぞれについて、平均からの変動を調べることによって実行されます。特徴間の関係が存在するかどうかを調べるために、共分散行列が作成されます。この共分散行列は、データセットの特徴の可能なペアに関する共分散で構成されます。これは、変数間の相関関係を決定するために使用され、負の共分散は逆相関を示し、正の共分散は正の相関を示します。
データセットの最も影響力のある成分(主成分)は、線形代数の概念である固有値と固有ベクトルの助けを借りて、初期変数の線形結合を作成することによって作成されます。主成分は、互いに相関がないように作成されます。初期変数に含まれるほとんどの情報が、最初のいくつかの主成分に圧縮され、新しい特徴(主成分)が作成され、元のデータセットの情報がより小さい次元の空間に含まれるようになります。
特異値分解

図:特異値分解の視覚化
特異値分解(SVD)は、行列内の値を簡素化するために使用され、行列をその構成要素に減らし、行列を扱うことを容易にします。SVDは、実数行列と複素数行列の両方に使用できますが、この説明では、実数行列の分解方法について説明します。
実数データで構成される行列があると仮定します。行列内の列/特徴の数を減らすことが目標です。PCAと同様に、SVDは行列の次元数を圧縮しながら、行列の可変性を可能な限り多く維持します。行列Aを操作したいとします。行列Aは、3つの別々の行列U、D、Vで表すことができます。行列Aは元のx * y要素で構成され、行列UはX * X要素で構成され(直交行列です)。行列Vはy * y要素で構成される別の直交行列です。行列Dはx * y要素で構成され、対角行列です。
行列Aの値を分解するには、元の特異行列の値を、新しい行列内の対角値に変換する必要があります。直交行列を別の数で乗算すると、その特性が変わらないことがわかっています。したがって、直交行列を別の数で乗算することで、行列Aを近似できます。行列Vの転置を直交行列とともに乗算すると、元の行列Aと等価な行列が得られます。
行列Aを行列U、D、Vに分解すると、これらの行列には行列A内のデータが含まれます。ただし、行列の左側の列には、データのほとんどが含まれています。最初のいくつかの列を取り出すだけで、次元数が大幅に少ない行列Aの表現が得られ、ほとんどのデータが保持されます。
線形判別分析

左:LDA前の行列、右:LDA後の軸、クラスが分離される
線形判別分析(LDA)は、多次元グラフからのデータを線形グラフに投影するプロセスです。これは、2つのクラスに属するデータポイントが散在する2次元グラフを想像することで視覚化できます。データポイントが散在していて、2つのクラスを明確に分離する線を引くことができないと仮定します。この状況を扱うために、2次元グラフ内のデータポイントを1次元グラフ(線)に減らすことができます。この線には、データポイントが分布し、2つのクラスを最もよく分離するセクションに分割できるようになります。
LDAを実行する際の主な目標は2つあります。最初の目標は、クラスの分散を最小限に抑えることです。2番目の目標は、2つのクラスの平均間の距離を最大化することです。これらの目標は、2次元グラフ内に新しい軸を作成することで達成されます。この新しく作成された軸は、前に説明した目標に基づいてクラスを分離します。軸が作成された後、2次元グラフ内のデータポイントは軸に沿って配置されます。
元のポイントを新しい軸上の新しい位置に移動するには、3つのステップが必要です。最初のステップでは、クラス間の平均(クラス間の分散)間の距離を使用して、クラスの分離度を計算します。2番目のステップでは、クラスの内側の分散を計算します。これは、クラスの平均からのサンプルの距離を決定することで実行されます。最後のステップでは、クラス間の分散を最大化する低次元空間が作成されます。
LDAは、ターゲットクラスの平均が互いに遠く離れている場合に、最良の結果を達成します。クラスの分布の平均が重なり合っている場合、LDAは線形軸でクラスを効果的に分離できません。
n the final step, the lower-dimensional space that maximizes the variance between classes is created. The LDA technique achieves the best results when the means for the target classes are far apart from each other. LDA can’t effectively separate the classes with a linear axis if the means for the distributions overlap.












