Salut,
Quelqu'un a-t-il une référence sur la façon dont les distances seront calculées à l'aide du hotspot pour enregistrer les distances dans le tableau de données dans les situations suivantes:
- Analyser -> Modélisation prédictive -> K voisins les plus proches -> "Variable" comme "X, Faktor" -> OK -> Hotspot "Enregistrer les distances des voisins proches"
- Analyze -> Screening -> Explore Outliers -> "Variable" as "Y, Columns" -> Multivariate: K Nearest Neighbor Outliers -> OK -> Buton "Save NN Distances"
Pourquoi je demande:
- Les résultats ne sont pas identiques pour les deux modules (voir le tableau de données ci-joint: "Distanz 1-4" sont de 1. ci-dessus, "Nächste 1 Distanz_OutlierModule 1-4" sont de 2).
- Aucun de ceux-ci ne semble calculer la distance euklidienne (la première distance du voisin le plus proche ne devrait pas être 1 pour toutes les valeurs / lignes de variable)?) Il semble qu'il ait un certain calcul de la plus grande distance, puis calcule les autres en fonction de leur partie de proportion (0,25 comme distance 1 et 1 comme distance 4 (la plus éloignée de la valeur variable 1, donc un quart de la distance maximale est la distance NN enregistrée, alors que je m'attendrais à 1,2,3,4 comme distances NN pour la première ligne du tableau de données). Et dans le module de modélisation, les valeurs sont en quelque sorte similaires (pour les proportions) mais différentes des valeurs absolues.
J'ai vu la documentation avec une référence à: Hastie et coll. ( 2009 ), Hand et coll. ( 2001 ) et Shmueli et al. ( 2017 ). ( Présentation de la plateforme K Nearest Neighbours ), où est mentionné, il identifie les plus petites distances euclidiennes entre les valeurs de prédicteur pour cette observation et les valeurs de prédicteur pour chacune des autres observations. Cependant, cela ne m'explique pas les différents résultats.
Merci beaucoup! Existe-t-il un moyen d'annuler ou d'empêcher la normalisation?
Bien que cela ne soit pas documenté, je suppose qu'avant de calculer les distances euclidiennes, la plate-forme K-Nearest Neighbours normalisée par (x_i - m_i) / s_i où m_i est la moyenne et s_i est le stddev pour le 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);
Les entrées suivantes dans Sirius indiquent que les variables sont normalisées par Q90 - Q10 sur la plate-forme Explorer Outliers.
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);