こんにちは、
次の状況で距離をデータテーブルに保存するためにホットスポットを使用して距離がどのように計算されるかについて、誰かが参照を持っていますか?
- 分析->予測モデリング-> K最近傍->「変数」を「X、Faktor」として-> OK->ホットスポット「最近傍距離を保存」
- 分析->スクリーニング->外れ値の探索->「変数」を「Y、列」として->多変量:K最近傍外れ値-> OK->ブトン「NN距離の保存」
なぜ私は尋ねているのですか:
- 結果は両方のモジュールで同じではありません(添付のデータ表を参照してください:「Distanz1-4」は上記の1からのものであり、「Nächste1Distanz_OutlierModule1-4」は2からのものです)。
- これらのどれも真正距離を計算していないようです(変数のすべての値/行に対して最初の最近傍距離を1にするべきではありません)?)最大距離を計算し、比率部分(距離1と1として0.25)に基づいて他の距離を計算しているようです。距離4として(変数値1から最も遠いため、最大距離の4分の1が保存されたNN距離ですが、データテーブルの最初の行のNN距離として1,2,3,4を期待します)。 また、モデリングモジュールでは、値は(比率に関して)何らかの形で類似していますが、絶対値とは異なります。
私は以下を参照して文書を見ました: Hastie etal。 (( 2009年)、Hand etal。 (( 2001年)、およびShmueli etal。 (( 2017年)。 (( K最近傍プラットフォームの概要)、ここで言及されている場合、その観測値の予測値と他の各観測値の予測値の間の最小ユークリッド距離を識別します。 しかし、それは私に異なる結果を説明していません。
大いに感謝する! 標準化を元に戻す、または防ぐ方法はありますか?
文書化されていませんが、ユークリッド距離を計算する前に、(x_i --m_i)/ s_iで標準化されたK最近傍プラットフォームを推測します。ここで、m_iは平均で、s_iはx_iの標準偏差です。
Clear Globals();
x = [1,2,3,4,5];
s = Stddev(x);
m = Mean(x);
z = (x - m)/s;
n = Number(x);
dist_z = J(n, n, 0);
For(i = 1, i <= n - 1, i++,
For(j = 1, j <= n, j++,
dist_z[i, j] = dist_z[j, i] = Sqrt(Sum((z[i,0]-z[j,0])^2));
)
);
Show(dist_z);
Siriusの次のエントリは、変数がExplorerOutliersプラットフォームのQ90-Q10によって標準化されていることを示しています。
https://sirius.na.sas.com/Sirius/GSTS/ShowTrack.aspx?trknum=7612927109
https://sirius.na.sas.com/Sirius/GSTS/ShowTrack.aspx?trknum=7612540893
Clear Globals();
x = [1,2,3,4,5];
n = Number(x);
q90 = Quantile(0.9, x);
q10 = Quantile(0.1, x);
mid = (q90 + q10)/2;
range = q90 - q10;
w = (x - mid)/range;
dist_w = J(n, n, 0);
For(i = 1, i <= n - 1, i++,
For(j = 1, j <= n, j++,
dist_w[i, j] = dist_w[j, i] = Sqrt(Sum((w[i,0]-w[j,0])^2));
)
);
Show(dist_w);