タイトルが言うように、次元削減は常にいくつかの情報を失いますか?たとえばPCAを考えてみましょう。私が持っているデータが非常に少ない場合、「より良いエンコーディング」が見つかると思います(これはどういうわけかデータのランクに関連していますか?)何も失われません。
タイトルが言うように、次元削減は常にいくつかの情報を失いますか?たとえばPCAを考えてみましょう。私が持っているデータが非常に少ない場合、「より良いエンコーディング」が見つかると思います(これはどういうわけかデータのランクに関連していますか?)何も失われません。
回答:
次元削減は常に情報を失うとは限りません。場合によっては、情報を破棄せずに、データをより低次元の空間で表すことができます。
上記のマトリックスには10,000要素が含まれています(つまり、100x100です)。これに対してSVDを実行すると、特異ベクトルの1つのペアのみが非ゼロ値[* 2]を持つことがわかります。したがって、元の行列を2つの100要素ベクトルの積(200係数ですが、実際には少し良くできます[* 3])。
一部のアプリケーションでは、特異値(SVD)または負荷(PCA)が高い主成分によって有用な情報が収集されることがわかっています(または少なくとも想定しています)。これらの場合、有用な信号ではなく迷惑なノイズが含まれているという理論に基づいて、ゼロでない場合でも、ローディングが小さい特異ベクトル/ベース/主成分を破棄することがあります。負荷に関係なく、特定のコンポーネントをその形状に基づいて拒否する(たとえば、既知の加法性ノイズのソースに似ている)ことをときどき見ました。これが情報の損失であるかどうかはわかりません。
PCAの情報理論的最適性については、いくつかのきちんとした結果があります。信号がガウスであり、加法ガウスノイズで破損している場合、PCAは信号とその次元削減バージョンの間の相互情報を最大化できます(ノイズが同一性のような共分散構造を持っていると想定)。
あなたの質問の背後にある質問は「情報を作るものは何か」だと思います。いい質問ですね。
文法の専門性:
PCAは常に情報を失いますか?いいえ。それはない、時には情報を失いますか?もちろんです。コンポーネントから元のデータを再構築できます。常に情報が失われる場合、これは不可能です。
データの次元を削減するために使用しても、重要な情報が失われないことが多いため、便利です。データを失うと、頻度の高いデータになることが多く、それほど重要ではありません。大規模で一般的な傾向は、より大きな固有値に関連付けられたコンポーネントに取り込まれます。
最も単純なケースでは、1つの次元が他の次元の線形結合である場合、情報を失うことなく次元を1つ減らすことができます。ドロップされた次元は、必要に応じて残りのものから再作成できるためです。
x3がx1とx2の正確な線形結合であるこの3次元のケースを考えてみましょう。x3が他の2つの両方に関連していることは明らかですが、元のデータを見れば明らかではありません。
しかし、主成分を見ると、3番目はゼロです(数値誤差内)。
最初の2つの主成分のプロットは、回転したx2に対するx1のプロットと同じです(わかりましたが、あまり明確ではありません。後で詳しく説明します)。
合理的な定義により、次元を1つ減らし、すべての情報を保持しました。
これは線形の次元削減を超えて拡張されますが、当然、説明するのがより複雑になります。ポイントは、全体的な答えは「いいえ」であり、いくつかの次元が他の組み合わせの関数である場合ではないということです。
Rコード:
library(GGally)
n <- 10^3
dat <- data.frame(x1=runif(n, 0, 3), x2=rnorm(n))
dat$x3 <- with(dat, x1 + x2)
ggpairs(dat)
pc <- princomp(dat)
plot(pc)
par(mfrow=c(1,2))
with(dat, plot(dat$x1, dat$x2, col="red", main="Original data", bty="l"))
with(pc, plot(scores[,1], scores[,2], col="blue", main="Scores from principal components(\n(rotated)", bty="l"))