問題タブ [cosine-similarity]
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 - ベクトルの 1 つがすべてゼロの場合の余弦類似度
コサイン類似度の表現方法 ( http://en.wikipedia.org/wiki/Cosine_similarity )
ベクトルの 1 つがすべてゼロの場合は?
v1 = [1, 1, 1, 1, 1]
v2 = [0, 0, 0, 0, 0]
古典的な公式に従って計算すると、ゼロ除算が得られます。
この類似性尺度をクラスタリング アプリケーションで使用したいと考えています。そして、そのようなベクトルを比較する必要があることがよくあります。また、[0, 0, 0, 0, 0] 対 [0, 0, 0, 0, 0]
経験はありますか?これは類似性 (距離ではない) の尺度であるため、特殊なケースを使用する必要があります。
d( [1, 1, 1, 1, 1]; [0, 0, 0, 0, 0] ) = 0
d([0, 0, 0, 0, 0]; [0, 0, 0, 0, 0] ) = 1
どうですか
d([1, 1, 1, 0, 0]; [0, 0, 0, 0, 0] ) = ? 等
python - 方程式のラテックスコードの余弦類似度
私はこのSOの質問を拡張し、 2つのラテックス方程式を比較しています。2 つの二次方程式の例を次に示します。
x、bの代わりに*を使用しているため、これらを正しいものとして比較する必要があります。私がしているのは、方程式を単語リストに変換することだけです。
したがって、ベクトルは
今私の拡張は、私は eqn1_word の * のパーセンテージをチェックしており、その答えで与えられた通常のコサイン類似度でチェックしています。最後に、ほぼ 1 に等しくなければならない 2 つの値を追加します。
これは、ほとんどのシナリオで問題なく機能します (1 つの変数が * に置き換えられた場合)。* eqn1_vec の値は 3 で、eqn2_vec では b = 2、x=1 です。
詳細な説明と理解を深めるために、これを確認してください。その参照から、私のコードは次のようになります。
問題は、交差値が小さいため、分子が小さくなっているということです。クラスからコピーしました。自分は無視してください。
これを解決する方法。前もって感謝します。質問に間違いや私のコンセプトが間違っている場合は、私と共有してください.
python - リスト内のコンテンツの違いを測定する方法
ここで混乱を招きたくない。各リストに値を付ける理由は、各リスト内のコンテンツをクラスタリング アルゴリズムの特徴値として使用したいからです。元のアイデアは、会社名のリストを持つ 1000 個のアイテムをそれぞれ持っているというものです。このリストの内容を値に変換したい。そのため、このアイテムの機能の 1 つとして、各リストに各値を添付したいと考えています.. ありがとう.. (これが、ベース リストを使用する理由でもあります..)
Python を使用していくつかのテキストを分析しようとしていますが、今では 1000 個のリストがあり、それぞれに会社名のリストが含まれています。例えば:
これらのリストの類似性を測定したいと思います。list1
とlist2
は類似点がありませんが、list1
とlist3
、list2
と にlist3
はいくつかの類似点があります。しかし、それをどのように測定するのですか?
最初に、これらのリストのすべての単語を含む 1 つの基本ベクトルを使用することを考えました。ここで、この基本リストは次のようになります。
そのベクトル値は次のとおりです。
次に、これらの各リストには、単語の出現とその位置の両方に応じたベクトル値があります。(ここではbase_list
、list1
、list2
、list3
はすべてソートされています)
それぞれの違い (または類似点) を base_vector と比較して角度の値を取得したいと考えています。
しかし!大きな問題になる可能性があります
次に、基本ベクトルとの角度値は同じです!
そして提案?リスト内のコンテンツの類似性を測定する方法について教えてください。つまり、このベクトル メソッドを使用する必要はありません。ブロックされただけです。
ありがとう!
python - 値を使用してコサイン類似度を計算するために辞書キーを反復処理する方法は?
次のような辞書があります。
2 つのベクトルを取る関数を記述した各単語間の余弦類似度を計算したいと考えています。まず、'in' と 'and' の値を取り、次に 'in' と 'to' の値を取る必要があります。
この結果を別の辞書に保存したいのですが、「in」がキーで、値はコサイン類似度を計算した後に返されるものでなければなりません。同様に、他の単語についても辞書が必要です。
これは、コサイン類似度を計算するための私の関数です:
[0.01, -0.07, 0.09, -0.02]
vec1 と vec2 は、とのような 2 つのリストにすることができ、次[0.2, 0.3, 0.5, 0.6]
のような結果を返します。0.14
キーごとにこの方法で計算し、結果をこの方法で辞書に保存するにはどうすればよいですか? :
python - これらの関数で辞書の辞書を作成する方法は?
次のような辞書があります。
2 つのベクトルを取るコサイン類似度関数を持つ各単語間のコサイン類似度を計算したいと考えています。まず、'in' と 'and' の値を取り、次に 'in' と 'to' の値を取る必要があります。
この結果を別のディクショナリに保存する必要があります。ここで、「in」がキーであり、値はそのキーで計算された各コサイン類似度のディクショナリである必要があります。出力を次のようにしたいのと同じように:
以下は、これらすべてを実行しているコードです。
しかし、それは次のような結果を与えています:
私はそれが次のようになりたい:
resultInDict 関数で新しい辞書 new_dict を定義して内部辞書のキー値を追加しているためだと思いますが、関数 resultInDict が呼び出されるたびに、この行の new_dict を空にしnew_dict={}
、1 つのキーと値のペアのみを追加します。 .
どうすればこれを修正できますか??
similarity - ピアソン相関類似度と調整コサイン類似度の違いは何ですか?
それらは非常に似ていますが、ピアソン相関類似度と調整コサイン類似度にはいくつかの違いがあると確信しています。これは、すべての論文と Web ページがそれらを 2 つの異なる種類に分けているためです。
しかし、どれも明確な定義を提供していません。ここにページの 1 つがあります。
誰でも違いがわかりますか?
ありがとう
java - Java でのコサイン類似度のパフォーマンスは、同等の C よりも 15 倍遅いですか?
2 つの関数があり、それぞれが 2 つの異なるベクトルのコサイン類似度を計算します。1 つは Java で記述され、もう 1 つは C で記述されています。
どちらの場合も、2 つの 200 要素配列をインラインで宣言し、それらのコサイン類似度を 100 万回計算しています。jvm が起動するまでの時間を数えていません。Java 実装は、C 実装よりも約 15 倍遅くなります。
私の質問は次のとおりです。
1.) 単純な数学のタイトなループの場合、c は Java よりも 1 桁高速であると仮定するのは合理的ですか?
2.) Java コードに誤りがありますか、それとも劇的に高速化する適切な最適化がありますか?
ありがとう。
子:
$ time ./cosine-similarity
0m2.952秒
ジャワ:
$ java -cp . -server -Xms2G -Xmx2G CosineSimilarity
44秒かかった
編集:
実際、Math.pow が原因でした。それを取り除くと、パフォーマンスは C と同等になりました。