問題タブ [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.
machine-learning - LDA (線形判別分析) の正しい実装とは?
OpenCV の LDA の結果が他のライブラリと異なることがわかりました。たとえば、入力データは
OpenCVコードは
matlab コードは ( Matlab Toolbox for Dimensionality Reduction を使用)です。
固有値は
次に、データの射影は
これらの LDA のデータは同じですが、固有ベクトルと射影は異なります。私は2つの可能性があると信じています。
- ライブラリの 1 つが間違っています。
- 私はそれを間違っています。
ありがとうございました!
pca - ランダム フォレストの前の次元削減のための PCA
私は、約 4500 の変数を持つバイナリ クラスのランダム フォレストに取り組んでいます。これらの変数の多くは高度に相関しており、元の変数の分位数にすぎないものもあります。次元削減のために PCA を適用することが賢明かどうかはよくわかりません。これにより、モデルのパフォーマンスが向上しますか?
どの変数が自分のモデルにとってより重要であるかを知りたいのですが、PCA を使用すると、どの PC がより重要であるかしかわかりません。
よろしくお願いします。
python - 高次元データのオートエンコーダー
私は、観察の次元を減らし、それでもそれらの重要な表現を保持する必要があるプロジェクトに取り組んでいます。オートエンコーダーの使用は多くの理由で強く提案されましたが、それが最善のアプローチであるかどうかはよくわかりません。
次元が 60,000 の 1400 個のサンプルがあり、これは高すぎます。元の次元の 10% に次元を削減しようとしています。私はtheano autoencoders [ Link ]を使用していますが、コストは約30,000のままです(これは非常に高いです)。エポック数を増やしたり、学習率を下げたりしてみましたが、うまくいきませんでした。私はオートエンコーダーの専門家ではないので、ここから先に進む方法や、いつ試行をやめるべきかわかりません。
私が実行できるテストは他にもありますが、先に進む前に、あなたからの意見が欲しいです。
データセットが小さすぎると思いますか (さらに 600 サンプルを追加して、合計で ~2000 にすることができます)?
積み重ねられた自動エノダーを使用すると役立つと思いますか?
パラメータ (エポックと学習率) を微調整し続ける必要がありますか?
データセットは画像のアンサンブルであるため、オートエンコーダーからの再構成を視覚化しようとしましたが、すべてのサンプルで同じ出力しか得られませんでした。これは、入力が与えられると、オートエンコーダーが入力を再構築しようとするが、代わりに得られるのは、どの入力に対しても同じ (ほぼ正確に) 画像であることを意味します (これは、データセット内のすべての画像の平均のように見えます)。これは、オートエンコーダーがそこから画像を再構築できないため、内部表現が十分でないことを意味します。
データセット:スキャンされた書籍 (表紙を含む) の 1400 ~ 2000 枚の画像 (それぞれ約 60.000 ピクセル) (これは 60.000 要素の特徴ベクトルに変換されます)。各特徴ベクトルは [0,1] で正規化されており、元の値は [0,255] でした。
問題: オートエンコーダーで次元を減らす (可能であれば)
追加情報が必要な場合、または問題をよりよく理解するのに役立つ可能性のある情報を見逃した場合は、コメントを追加してください。喜んでお手伝いさせていただきます =)。
注: 現在、データセット全体でより多くのエポックを使用してテストを実行しています。結果に応じて投稿を更新しますが、しばらく時間がかかる場合があります。
dimensionality-reduction - 非線形次元削減のwikiで文字「A」の例を実装する方法
非線形次元削減のウィキ( https://en.wikipedia.org/wiki/Nonlinear_Dimensionity_reduction )を読んでいると、文字「A」の面白い例を見つけたので、Pythonで実装したいのですが、いくつか問題が発生しますここ。データの生成に使用するコードは次のとおりです。
次に、Waffles パッケージで pca とマニホールド スカルプティングを使用して次元削減を行いますが、wiki の図とは異なる結果が得られます。
matlab - サブセット選択方法によってこのデータセットで選択されるフィーチャが少なすぎる理由
148 個の入力フィーチャを含む分類データセットがあります (そのうち 20 個はバイナリで、残りは [0,1] の範囲で連続しています)。データセットには 66171 の負の例と 71 の正の例しかありません。
データセット (arff
テキスト ファイル) は、次のドロップボックス リンクからダウンロードできます: https://dl.dropboxusercontent.com/u/26064635/SDataset.arff。
Weka スイートで and を使用するCfsSubsetEval
とGreedyStepwise
( と をsetSearchBackwards()
セットしtrue
てfalse
)、選択した機能セットには 2 つの機能 (つまり79
と140
) しか含まれません! この 2 つの特徴による分類性能が非常に悪いことは言うまでもありません。
(Wekaでも)使用ConsistencySubsetEval
すると、ZERO機能の選択につながります!代わりに特徴ランキング方式を使用し、最良の (たとえば 12) 特徴を選択すると、はるかに優れた分類パフォーマンスが達成されます。
2 つの質問があります。
まず、そのようないくつかの機能の選択につながるデータセットについてはどうですか? 正例と負例の数のバランスが悪いからでしょうか。
2番目に、そしてもっと重要なことに、私が試すことができ、より多くの機能の選択につながる可能性のある他のサブセット選択方法(Matlabまたはその他)はありますか?
matlab - matlab での次元削減に主成分分析 (PCA) を使用する方法
80*80 次元のデータの行列が 50 あります。それらを分類する必要がありますが、その前にデータの次元を削減する必要があります。Web を検索したところ、最良のツールは PCA です。分類の前に、各行列を行ベクトルに変換する必要があることは知っていますが、PCA については知りません。行列を行ベクトルに変換してから、PCA によって次元を減らすか、基本的な形状を持つ各行列に対して PCA を使用しないでください。
machine-learning - 機能ハッシュ/雪崩効果
次元削減のための機能ハッシュについて少し読んでいます。均一な出力分布を持つハッシュ関数を使用することが重要であることを理解しています (入力が特定の値にマッピングされる可能性は、範囲内の他のすべての値と同じです)、雪崩/カスケード効果 (小さなインプットの変化はアウトプットの大きな変化を生み出す)。これらのプロパティにより、フィーチャ間の衝突が頻度に依存しないことが保証されます。ただし、雪崩効果が(具体的に)これにどのように影響するかについては、まだ不明です. ここでなぜ/どのように重要なのか誰か説明できますか? 出力の「大きな変化」を構成するものは何ですか?
参考文献: http://blog.someben.com/2013/01/hashing-lang/ http://metaoptimize.com/qa/questions/6943/what-is-the-hashing-trick#6945
machine-learning - 次元削減アルゴリズム
ほぼ 2000 の入力パラメーターと 4 つの出力パラメーターを含むデータシートがあります。入力パラメータを最適化して出力を定義します
入力パラメータが線形に関連しているかどうかわからないので、非線形の次元削減アルゴリズムを探しています。自己組織化マップは、2000 の入力パラメーターをいくつかのコンポーネントに削減するための適切なオプションになりますか?
PCA を試しましたが、あまり役に立ちません。誰かが私が試すことができる標準的なアルゴリズムとコードを提案できるかどうか教えてください。
matlab - PCA を使用して Octave の低次元空間に投影する
サイズが 300 x 2 の次のマトリックスがあります。これには、最小値と最大値の正規化されたデータが含まれています。
preprocess
はスケーリング関数です。
データを (1 次元に) 縮小して射影し、単一の列ベクトルを作成するにはどうすればよいですか?
machine-learning - 教師なし次元削減を使用したファジー クラスタリング
教師なし次元削減アルゴリズムは、行列 NxC1 を入力として取ります。ここで、N は入力ベクトルの数、C1 は各ベクトルのコンポーネントの数 (ベクトルの次元) です。その結果、新しい行列 NxC2 (C2 < C1) が返されます。ここで、各ベクトルのコンポーネント数は少なくなります。
ファジー クラスタリング アルゴリズムは、行列 N*C1 を入力として受け取ります。ここで、ここでも、N は入力ベクトルの数であり、C1 は各ベクトルのコンポーネントの数です。その結果、新しい行列 NxC2 (通常、C2 は C1 よりも小さい) が返されます。ここで、各ベクトルの各コンポーネントは、ベクトルが対応するクラスターに属する度合いを示しています。
両方のクラスのアルゴリズムの入力と出力の構造は同じで、結果の解釈のみが異なることに気付きました。さらに、scikit-learn にはファジー クラスタリングの実装がないため、次の質問があります。
ファジークラスタリングを実行するために次元削減アルゴリズムを使用することは理にかなっていますか? たとえば、テキスト データから抽出された TF-IDF ベクトルから構築されたデータセットにFeatureAgglomerationまたはTruncatedSVDを適用し、その結果をファジー クラスタリングとして解釈するのはナンセンスですか?