你好
在以下情况下,有没有人有参考资料说明如何使用热点计算距离以将距离保存到数据表中:
- 分析->预测建模-> 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);