問題タブ [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.
matlab - PCA で最大の分散を示すコンポーネントの選択
トレーニングに必要な膨大なデータ セット (32000*2500) があります。これは私の分類器には多すぎるように思われるので、次元削減、特に PCA について読むことにしました。
私の理解では、PCA は現在のデータを選択し、それらを別の (x,y) ドメイン/スケールで再プロットします。これらの新しい座標は何も意味しませんが、1 つの軸に最大の変動を与えるようにデータが再配置されます。これらの新しい係数の後、cooeff
最小変動を持つものを削除できます。
現在、これを MatLab に実装しようとしていますが、提供される出力に問題があります。MatLab は常に行を観測値、列を変数と見なします。したがって、関数への inoutpca
は size の行列になります(32000*2500)
。これは、サイズ の出力行列で PCA 係数を返します2500*2500
。
pca のヘルプには次のように記載されています。
coeff の各列には 1 つの主成分の係数が含まれ、列は成分分散の降順になっています。
この出力では、データの観測値はどの次元ですか? これを分類子に渡す必要がある場合、 の行はデータのcoeff
観測結果を表すのでしょうか、それとも の列になりcoeff
ますか?
また、変動が最も少ない係数を削除するにはどうすればよいですか?
kernel - カーネル PCA は PCA と比較して次元を増やし、同じ分散を達成しますか?
sklearn を使用して、28*28 = 784 ディム データでカーネル PCA を実行しようとしていました。最初に、PCA を使用して次元を減らし、k で分散の 95% を説明できる k 次元に減らすことにしました。PCA は私に k = 174 を与えました。後で、次数 3 の多項式カーネルでカーネル PCA を試し、同様に、説明分散アプローチを使用して k = 1993 を得ました。1993 > 784 以来、カーネル PCA は実際に次元を増やしました。目的。
また、トレーニングに 5000 個のデータを使用したところ、カーネル PCA によって 5000 個の固有ベクトルが得られ、そこから k = 1993 を選択しました。カーネル PCA によって 5000 個の固有ベクトルが得られたのはなぜですか? カーネル PCA が PCA と比較して次元を増やしたのはなぜですか?
r - R を使用したテキスト分析の次元削減に LSA を使用する方法
私はデータ サイエンスの初心者で、ツイートを使用したテキスト分析/感情分析プロジェクトに取り組んでいます。私がやろうとしているのは、ツイート トレーニング セットに対して次元削減を実行し、トレーニング セットを NaiveBayes 学習器にフィードし、学習した NaiveBayes を使用してテスト ツイート セットのセンチメントを予測することです。
この記事の手順に従っています。
彼らの説明は、私のような初心者には簡単すぎます。
lsa() を使用して、RStudio で「Large LSAspace (3 要素)」とラベル付けされたものを作成しました。彼らの例に従って、さらに 3 つのデータ フレームを作成しました。
lsa.train.tkデータを表示すると、次のようになります ( lsa.train.dkはこのマトリックスにかなり似ています)。
私のlsa.train.skは次のようになります。
私の質問は、そのような情報をどのように解釈するのですか? この情報を利用して、NaiveBayes 学習器にフィードできるものを作成するにはどうすればよいですか? NaiveBayes 学習器に lsa.train.sk を使用してみましたが、試したことを正当化できる適切な説明が思いつきません。どんな助けでも大歓迎です!
編集: これまでに行ったこと:
- すべてを用語文書マトリックスにする
- NaiveBayes 学習器に行列を渡す
- 学習したアルゴリズムを使用して予測する
私の問題は次のとおりです。
精度はわずか 50% です...そして、すべてが肯定的な感情としてラベル付けされていることに気付きました (したがって、テスト セットに否定的な感情のツイートのみが含まれている場合、1% の精度が得られた可能性があります)。
現在のコードはスケーラブルではありません。大きな行列を使用するため、最大 3.5k 行のデータしか処理できません。それ以上だと、コンピューターがクラッシュします。したがって、より多くのデータ (10k または 100k 行のツイートなど) を処理できるように次元削減を行いたいと考えました。
python - tSNE を使用した距離行列の可視化 - Python
距離行列を計算しましたが、それを視覚化するために2つのアプローチを試みています。これは私の距離行列です:
1から7までのラベルを考慮すると、1は実際には6と7に近く、 4から離れています。
最初に、tSNE 次元削減を使用しようとしました。
これにより、次のプロットが生成されます。
これが1が6と7に近いことを示していないことがわかります。代わりに、それは4に最も近いです。
次に、削減が極小値で停止したかどうかわからないので、グラフを描画しようとしました。
networkx を nx としてインポート
ご覧のとおり、同じことが起こります。この最新の方法を繰り返し続けると、さまざまな種類のグラフになる可能性があります。
ここでは、私が期待するものにさらに近づきます。ただし、これらの動作はどれも正しいようです。グラフの初期化がどれほど異なっていても、距離は尊重されるべきです。
したがって、この距離行列を適切に表現するには、何が欠けているのか疑問に思っています。
ありがとう。
python-2.7 - t-SNE を使用した奇妙な反復結果 "error is nan" と RuntimeWarning
私は、次元削減のために t-SNE python 実装を使用してX
います。これには、cnn 視覚化の 1024 個のパラメーターで記述された 100 個のインスタンスが含まれています。
X.shape = [100, 1024]
X.dtype = float32
私が実行すると:
最初の警告は、tsne.py の 23 行目に表示されます。
RuntimeWarning: log H で発生したゼロ除算 = Math.log(sumP) + beta * Math.sum(D * P) / sumP
次に、次の行にこのような警告がさらにいくつかあります。
RuntimeWarning: 除算で無効な値が検出されました
そして最後に、処理中の各反復後にこの結果を取得します。
反復 xyz : エラーは nan です
コードは「エラー」なしで終了し、最後に空の散布図が表示されます。
編集:
-> 別のデータセットで試してみたところ、完全に機能しました。ただし、最初のセットでも機能する必要があります(問題を引き起こしているようです)。
質問 :
誰がこれを引き起こしているのか知っていますか? 回避策はありますか?
python - スパース行列の次元削減 (TSNE/PCA)
次元削減 (DR) 手法を実行して、データとそれらが互いにどのように関連しているかを視覚化したいと考えています。Barnes-hut tsneを使用する予定ですが、サンプル アプリケーションにはユーザー ガイドに従って規則的な行列形式のデータがあるため、TSNE に入力を提供する方法を取得できません。5000 の個別の値を持つ約 1200 万のレコードがあり、それらをメイン メモリに保存できません。次元削減 (DR) を実行して、これらの個別の値を 2 次元散布図で視覚化したいと考えています。隣接リスト形式のデータがあります (まばらすぎるため)。
たとえば、次のレコードがあります。
これらは私の最初の 6 つの記録であるはずです。この場合、個別の値は 10 個しかありません。上記のマトリックス (テーブル) は、最初のレコードには 2、3、および 10 の列が 1 としてあり、他の列は 0 (隣接リスト) であることを示唆しています。
これらの個別の値は、ドキュメント (レコード) に存在する単語 (ラベル) にマップされます。
このようなデータを使用して fast-TSNE を実行するにはどうすればよいですか。または、これを TSNE が必要とする互換性のある形式に変換するにはどうすればよいですか? どの言語を優先する必要がありますか?
私は Python または Matlab を使用することを好みますが、それ以外でも問題ありません。あなたの提案を教えてください。
PS私はタスクを実行するための非常に高い計算機を持っています。