問題タブ [dimension-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.
algorithm - ヒルベルト曲線上の点への N 次元値のマッピング
N次元のポイントの膨大なセットがあります(数千万、Nは100に近い)。
空間的な局所性を維持しながら、これらの点を 1 つの次元にマッピングする必要があります。ヒルベルトの空間充填曲線を使用してそれを行いたいです。
各点について、曲線上の最も近い点を選びたいと思います。点のヒルベルト値 (曲線の始点から選択した点までの曲線の長さ) は、私が求める単一次元の値です。
計算は即時である必要はありませんが、まともな最新の家庭用 PC ハードウェアでは数時間以内で済むと思います。
実装に関する提案はありますか?私を助けるライブラリはありますか?(言語はあまり関係ありません。)
math - 次元削減
高次元のデータセットを 2 次元に縮小しようとしています。ただし、事前にデータセット全体にアクセスすることはできません。したがって、N 次元ベクトルを取り、2 次元ベクトルを返す関数を生成して、N 次元空間で近いベクトルに与えると、結果が 2 次元で近くなるようにしたいと思います。スペース。
私はSVDが必要な答えだと思っていましたが、うまくいきません。
簡単にするために、N=3 とし、15 個のデータポイントがあるとします。すべてのデータを 15x3 行列 X に前もって持っている場合、次のようになります。
私がしたいことをします。しかし、1x3 ベクトルである新しいデータポイント A を取得したとします。U、S、または V を使用して A を適切な 1x2 ベクトルに変換する方法はありますか?
SVDが失われた原因である場合、誰かが私が代わりに何をすべきか教えてもらえますか?
注: これは Matlab コードですが、答えが C、Java、または単なる数学であるかどうかは気にしません。Matlab が読めない場合は、質問してください。明確にします。
cluster-analysis - Mahoutバイナリデータクラスタリング
バイナリ機能のポイントがあります:
行列のサイズは約20k*200kですが、スパースです。kmeansアルゴリズムによるデータのクラスタリングにMahoutを使用していますが、次の質問があります。
- kmeansはバイナリ機能の良い候補ですか?
- マンハッタン距離測度の概念を維持しながら寸法を縮小する方法はありますか(コサインや谷本の代わりにマンハッタンが必要です)
- kmeansのメモリ使用量は高く、Map / Reduceタスクごとに4GBのメモリが必要です(3kクラスターの400Mbベクターファイルの4Mbブロック)。MahoutのVectorオブジェクトがダブルエントリを使用していることを考えると、ポイントにはブールエントリだけを使用し、センターにはダブルエントリを使用する方法はありますか?
matlab - Matlab:関数@(x、y、z)の1次元積分
まあ言ってみれば
そして、xのfを[0,1]に統合したいと思います。gを定義してquad(g、0,1)を実行する必要があるようです
私が持っている質問は、新しい関数を定義せずにfで直接quadを実行できるかどうかです。
math - ベクトルの次元を減らす方法
ベクトルのセットがあります。n 次元のベクトルを単項値 (1-d) に減らす方法に取り組んでいます。
この単一の値は、ベクトルの特性値である必要があります。一意の各ベクトルは、一意の出力値を生成します。次の方法のうち、適切なものはどれですか。
1- ベクトルのノルム - 原点からのユークリッド距離を測定する平方和の平方根
2- 衝突を回避するいくつかのハッシュ技術を使用して、F のハッシュを計算する
3- 線形回帰を使用して計算します。y = w1*x1 + w2*x2 + ... + wn*xn - 入力値が出力に適切に依存していない場合、適切である可能性は低いです。
4-入力ベクトルのセットに基づいて x1、x2、..xn のそれぞれに重みを割り当てる PCA のような特徴抽出手法
out-of-memory - メモリ不足エラーを解決するには?
私は OCR でプロジェクトを行っています。このために、32x32 などを試したときに一部のピクセルが失われるため、64x64 の画像サイズを使用しています。ゾーン密度、ゼルニケのモーメント、投影ヒストグラム、距離プロファイル、クロッシングなどの機能を試しました。メイン問題は、特徴ベクトルのサイズが大きすぎることです。上記の特徴を組み合わせて試してみましたが、ニューラル ネットワークをトレーニングするたびに、「メモリ不足」というエラーが発生しました。PCA の次元削減を試みましたが、うまくいきませんでした。トレーニング中に効率が上がりませんでした。PC とラップトップでコードを実行しました。両方で同じエラーが発生しました。RAM は 2GB です。削減を考えています。画像のサイズ。この問題を解決する解決策はありますか。
同じ機能の結果を使用してニューラル ネットワークをトレーニングしようとすると、もう 1 つ問題が発生します。これを解決するにはどうすればよいですか?
r - R で列方向の行列を読み取る
私は多くの時間を試してみましたが、どういうわけか何もうまくいきません.Rの上級ユーザーにとっては簡単だと思います. 各要素が行ごとに発生する Dataformat を取得しました。最初に文字列としてのラベル、その後に 1000 個の数値機能が続き、すべて空白で分割されます。
私が抱えている問題は、行列を読み取るときのラベルです(最初の行または常に最初の列)。この行列を tsne (次元削減) に適用したいのですが、ラベルが問題を引き起こします。したがって、ラベルのないマトリックスが必要ですが、後でラベルを保存したいので、新しい次元で印刷できます。これまでに得たものは次のとおりです(疑似コードではありません):
ここでは、次のように、新しい 2 次元マトリックスを各ラベルと共に出力するものが必要です。label[x] + tsne[xDimension] + tsne[yDimension]
よろしくお願いします。よろしくお願いします。
matlab - 論理配列の次元削減
2 つの異なる時点で 5 つのデバイスを測定しました。測定値は基本的に、対応する位置のビット値に対応する 1 と 0 の配列で構成されます。
特定のデバイスの場合、測定の時間 1 と時間 2 の間の変化は一意であると想定しています。ただし、32768 ビットをさまざまな場所で扱っているため、何らかの依存関係があるかどうかを視覚化するのは非常に困難です。
ロケーションのすべてのビットx
は観測の 1 つの次元と見なすことができるため、PCA を使用して次元数を減らすことを考えました。
したがって、5 つのデバイスごとに次のようになります。
n
測定値をポイントでt1
ランダムにサンプリングし、t2
個別にサンプリングします- *n 列 ( < 32768; 元のデータが pca には大きすぎる可能性があるため、観測されたすべてのビットのサブセット) と 4 行 (デバイスごとに 1 行) の入力として配列を準備し
pca()
ます。m
m
- この配列
A
で pca を計算します: ``[係数スコア潜在] = pca(zscore(A))``` - 次に、次を使用して視覚化しようとし
biplot
ます。biplot(coeff(:,1:2), 'score', score(:,1:2))
しかし、これは私に本当に奇妙な結果をもたらします。おそらく、PCA はこの問題に対する適切なアプローチではないでしょうか? また、入力データを変更して、論理ビット配列自体ではなく PCA を実行しました。代わりに、元の測定配列に「1」があるインデックスを保持するベクトルを作成しました。また、これは奇妙な結果をもたらします。
私は PCA にまったく慣れていないので、プロセスに欠陥があるかどうか、または 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 マシン (または他のカーネル手法) を使用して分類を行う場合、どのカーネルを使用すればよいですか?
どうもありがとう!