你好
在以下情況下,有沒有人有參考資料說明如何使用熱點計算距離以將距離保存到數據表中:
- 分析->預測建模-> K最近鄰->“變量”為“ X,Faktor”->確定->熱點“保存近鄰距離”
- 分析->篩選->探索異常值->“變量”為“ Y,列”->多元:K最近鄰值->確定-> Buton“保存NN距離”
我為什麼要問:
- 兩個模塊的結果都不相同(請參見隨附的數據表:“ Distanz 1-4”來自上述1,“Nächste1 Distanz_OutlierModule 1-4”來自2)。
- 這些似乎都沒有計算歐幾里得距離(對於變量的所有值/行,不是第一個“最近鄰居距離”是1嗎?)似乎它對最大距離進行了一些計算,然後根據其他部分的比例部分(距離1和1為0.25)進行計算。作為距離4(距離變量值1最遠,因此最大距離的四分之一是保存的NN距離,而我希望數據表中第一行的1,2,3,4作為NN距離)。 並且在建模模塊中,值在某種程度上(對於比例)相似但與絕對值不同。
我看到了有關以下內容的文檔: Hastie等。 ( 2009年),Hand等人。 ( 2001 )和Shmueli等人。 ( 2017年)。 ( K最近鄰居平台概述),它指出該觀察值的預測值與其他每個觀察值的預測值之間的最小歐幾里得距離。 但是,它沒有向我解釋不同的結果。
儘管沒有記錄,但我很瘋狂地猜測,在計算歐幾里得距離之前,K最近鄰平台由(x_i-m_i)/ s_i標準化,其中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中的以下條目表示變量是在Explorer Outliers平台上由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);