私のアドバイスは、すべてのオブジェクトを3 次元空間のベクトルに変換してから、2 つのベクトル (オブジェクト) 間のユークリッド距離を見つけることです。
- まず、salary、location、sizeをそれぞれx軸、y軸、z軸に割り当てます。
- 次に、プロパティを
[0, 1]
軸の間隔にマップします。
たとえば、最低給与が 1,000 で、最高給与が 10,000 の場合、次のようにマッピングします。
- $ 1'000 -> x軸の 0、
- $ 10'000 -> x軸で 1 に。
位置をマッピングするのは難しいですが、マップ グリッドがあり、地理的位置に応じてグリッドの各パッチに値を割り当てるとします。近いものは同様の値になります。たとえば、米国の州は良い例を提供してくれます。
- ニューヨーク -> y軸で 1.0、
- ニュージャージー -> y軸で 0.99、
- ...
- カリフォルニア -> y軸で 0.1 。
会社の規模を次のようにマッピングします。
- 起動 -> z軸で 0.2、
- ...
- 多国籍 -> z軸で 1.0 。
例を挙げると、ジョンは 9,000 の給与を希望し、ニューヨークでの仕事を希望し、新興企業で働きたいと考えています。3D 空間での彼のベクトルは[0.82, 1.00, 0.1]
.
ピーターは 5,500 の給与を希望し、ニュージャージーでの仕事を希望し、本当に大きな会社で働きたいと思ってい[0.5, 0.99, 0.8]
ます。そして最後に、マイクは 8,000 の給与、カリフォルニアでの仕事、そしてスタートアップも望んでいます - [0.73, 0.1, 0.1]
.
3D 空間でのユークリッド距離の公式によると:
d(a, b) = sqrt((a1-b1)^2 + (a2-b2)^2 + (a3 - b3)^2)
Distance between John and Peter is: d(J, P) = 0.77
Distance between John and Mike is: d(J, M) = 0.90
したがって、ジョンとピーターはジョンとマイクよりも近いという結論になります。
もう1つできることは、各軸にいくつかの定数を導入して、その重要性を強調することです(たとえば、会社の規模よりも場所が重要です)。式では次のようにすることができます。
d(a, b) = sqrt((a1-b1)^2 + (C*a2 - C*b2)^2 + (a3 - b3)^2), where C = 10