3

私の目的は、その属性に基づいて2人のユーザー間の類似度を計算することです。たとえば、プレーヤーを考えて、年齢、給料、ポイントを属性として考えてみましょう。属性に基づいて類似度を計算する

また、重要度の順に各属性に重みを付けたいとします。私の場合、年齢は給料とポイントよりも重要な属性です。したがって、ユークリッド距離を使って類似度を計算すると仮定しましょう。

Given user 1 who is age 20, salary 50, points scored 100 

Given user 2 who is age 24, salary 60, points scored 85 

Given user 3 who is age 19, salary 62, points scored 80 

Iは、((20-24)^ 2 +(60-50)^ 2 +(85-100)の

SQRTを行うことができ、ユーザ1とユーザ2との間の類似度を計算します^ 2)

ここでも、私たちはユークリッド距離において、類似度の点から見て、より近い2つのオブジェクトの数が少ないほど、重みを追加したいと考えています。 (0.60 *(20-24)^ 2 + 0.20 *(60-50)^ 2 + 0.20 *(60-50)^ 2 + 0.20 *(85- $))のように、年齢が最も重要なので、 100)^ 2)

私のアプローチは正しいですか?また、私は類似性を計算するためにコサインの類似性などの他のアルゴリズムを検討する必要がありますか?

+0

何について修正しますか?このアプローチは少なくとも妥当である。他にどの類似性指標を使用するかは、アプリケーションにのみ依存します。そして、あなたはおそらくいくつかをテストして、どれが最もうまくいくかを見いだす必要があります。 –

+0

@NicoSchertler私は重みを正しく加えているかどうか分からず、また、2人のユーザー間の類似度をより正確に計算する他のアルゴリズムがあるかどうかも疑問でした。例えば、年齢は私のアプリケーションにとって最も重要な要素です。 – user1010101

+0

重み付けは私には良く見えます。もちろん、属性の範囲に注意する必要があります。それらが異なる場合は、正規化を導入することもできます。他にも多くの類似点があります。 [Wolfram](https://reference.wolfram.com/language/guide/DistanceAndSimilarityMeasures)。html)はそれらのいくつかをリストしています(数値データを参照)。 –

答えて

0

現在、私はあなたの問題に精通しているので、異なるエンティティ間の測定値の計算を含むプロジェクトに取り組んでいます。

あなたのケースでは、さまざまな混合タイプ(テキストやカテゴリなど)の機能がないことが良いケースです。年齢、給料、ポイントは数字です。コメントですでに述べたように、まず最初にすべきことは正規化です。あなたがそれをしなければ、距離を計算するときに1つの特徴が支配的になる危険があるので、「する必要があります」です。

慎重にデータをチェックし、必要に応じて清掃する必要があります。例えば年齢が200のときの値が悪いと正規化が乱れ、スケールされた年齢の値の大部分が下部になります(ゼロに近い)。

あなたは重さに関しては正しいですし、重み付けされたユークリッドを計算しています。これらの重みの合計値は1です(例0.6 + 0.2 + 0.2 = 1で示したように)。

どの距離メトリックを使用するかは、良い質問です。それらの束があります。例えばチェックhttps://docs.scipy.org/doc/scipy/reference/spatial.distance.html

euclideanしかし、あなたは少し試して、それがあなたのデータでどのように動作するかチェックする必要があります。

関連する問題