問題タブ [dimensionality-reduction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - sklearn を使用した PCA。PCA で機能選択を把握できない
PCAを使用して次元削減を試みています。現在、サイズが (100, 100) の画像があり、140 個のガボール フィルターのフィルターバンクを使用しています。各フィルターは、再び (100, 100) の画像である応答を返します。ここで、冗長でない機能のみを選択したい機能選択を行いたいと思い、PCA が良い方法である可能性があることを読みました。
そこで、10000 行 140 列のデータ マトリックスを作成しました。したがって、各行には、そのフィルターバンクのガボール フィルターのさまざまな応答が含まれます。さて、私が理解しているように、PCAを使用してこの行列を分解できます
しかし、ここから 140 個の特徴ベクトルのどれを保持するかをどのように判断できるかについて、私は混乱しています。これらの 140 個のベクトルのうち 3 個 (画像に関するほとんどの情報を含むガボール フィルターに対応する) が得られるはずだと推測していますが、ここから先に進む方法がわかりません。
image - Matlab を使用して、次元削減アルゴリズムを効率的に実行できるように、一連の画像をデータ マトリックスにインポートする最良の方法は何ですか?
現在、CIFAR-10 データセットを使用しており、次元削減アルゴリズムをいくつか実行しようとしています。これは 32x32 のカラー画像の束なので、現在、次のように各 32x32x3 の画像を 1 つの列に入れてデータをインポートしています。
これにより、各列が異なる画像を表す 3072x(画像の数) のデータ マトリックスが得られます。PCA や KPCA などの次元削減手法を実行すると、データがひどく分離されます。私に役立つデータをインポートするより良い方法はありますか?
python - n_componentsを無視するLDA?
Scikit-Learn から LDA を操作しようとすると、追加のコンポーネントを要求しているにもかかわらず、1 つのコンポーネントしか提供されません。
与える
ご覧のとおり、毎回 1 つの次元のみを出力しています。どうしてこれなの?変数が同一線上にあることと関係がありますか?
さらに、Scikit-Learn の PCA でこれを行うと、必要なものが得られます。
text - 自然言語処理 (NLP) では、効率的な次元削減を行うにはどうすればよいでしょうか?
NLP では、特徴の次元が非常に大きい場合が常にあります。たとえば、手元にある 1 つのプロジェクトでは、特徴の次元はほぼ 20,000 (p = 20,000) であり、各特徴は、特定の単語またはバイグラムが論文 (1 つの論文はデータ ポイント $x \in R^{p}$) です。
機能間の冗長性が非常に大きいことはわかっているため、次元削減が必要です。3 つの質問があります。
1) 1 万のデータ ポイント (n = 10,000) があり、各データ ポイントには 1 万の特徴 (p = 10,000) があります。次元削減を行う効率的な方法は何ですか? 行列 $X \in R^{n \times p}$ は非常に大きいため、PCA (または SVD、切り捨てられた SVD は問題ありませんが、SVD はバイナリ機能の次元を減らす良い方法ではないと思います) と Bag単語数 (または K-means) を $X$ で直接実行することは困難です (確かに、スパースです)。私はサーバーを持っていません。私は自分の PC を使用しています:-(.
2) 2 つのデータ ポイント間の類似性または距離を判断するにはどうすればよいですか? ユークリッド距離は、バイナリ機能にはうまく機能しない可能性があると思います。L0ノルムはどうですか?あなたは何を使うのですか?
3) SVM マシン (または他のカーネル手法) を使用して分類を行う場合、どのカーネルを使用すればよいですか?
どうもありがとう!
c++ - SVDを使用して行列の次元を減らすにはどうすればよいですか?
-i opencv c++ で SVD を使用して行列の次元を削減しようとしています。これは私の簡単なソース コードの例です。
-しかし、これがマトリックスの次元を減らすための真の方法かどうかはわかりません。あなたの助けが必要です.
matlab - matlab で主成分分析を作成 (および使用)
私は、(超音波で)ラットの鳴き声のさまざまな特性に関するデータを含むマトリックスを取得したいと考えています。変数には、開始周波数、終了周波数、持続時間などが含まれます。観察には、音声録音のすべてのラットの鳴き声が含まれます。
PCA を使用してデータを分析し、できればこれらの呼び出しの構造とその動作にとって重要ではない主成分を非相関化し、呼び出しをグループ化できるようにしたいと考えています。
私の問題は、PCA がどのように機能するかについての基本的な理解がある一方で、Matlab でこれを実装する方法を含む細かい点を理解していないことです。
私のデータを標準化する必要があることはわかっています。私が見たすべての方法には、平均を差し引いて調整する手段が含まれます。ただし、標準偏差で割ったり、平均調整データの転置を N-1 (N は変数の数) の平方根で割ったりするものもあります。
標準化されたデータを使用すると、共分散行列を見つけて、eig(cov(...)) を使用するなどして固有値とベクトルを抽出できます。代わりに svd(...) を使用するものもあります。これが何なのか、なぜ重要なのか、いまだに理解できません
PCA を実装するにはさまざまな方法があることは知っていますが、すべての方法で異なる結果が得られるのは好きではありません。
pca(...) コマンドもあります。
データを再構築する際に、データを主成分データで調整する手段を乗算する人もいれば、主成分データの転置を使用して同じことを行う人もいます。
主成分とデータのグラフをプロットして、データを分析できるようにしたいだけです (最も重要でない主成分は削除されています)。これらの固有ベクトルの分散と、それらがデータの合計分散をどの程度表しているかを知りたいです。PCA によって得られるすべての情報を完全に活用できるようにしたい
誰でも助けることができますか?
================================================== =======
このコードは、 http://people.maths.ox.ac.uk/richardsonm/SignalProcPCA.pdfの pg 20 に基づいて動作するようです。
しかし、標準偏差はどこにありますか? 結果はどのように異なりますか
主成分が列として表されている場合、最小の固有値を見つけ、それに対応する固有ベクトルの列をゼロの列に設定することで、最も重要でない固有ベクトルを削除できます。
上記の方法のいずれかを pca(...) コマンドを使用して適用し、同じ結果を得るにはどうすればよいですか? 誰かが私にこれを説明するのを手伝ってもらえますか (理想的には、これらすべてがどのように同じ結果を達成できるかを教えてください)?
matlab - MATLAB、pcacov、または eigs での PCA を使用した次元削減には、どれを使用すればよいですか?
トレーニング セットのサイズを 1296*70000 から 128*70000 に減らそうとしています。以下のコードを書きました:
私は2つの異なる答えを得ます!「eigs」と「pcacov」のどちらを使用すればよいですか??