Ciao,
qualcuno ha un riferimento su come verranno calcolate le distanze utilizzando l'hotspot per salvare le distanze nella tabella dati nelle seguenti situazioni:
- Analizza -> Modellazione predittiva -> K Vicini più vicini -> "Variabile" come "X, Faktor" -> OK -> Hotspot "Salva distanze vicine"
- Analizza -> Screening -> Esplora valori anomali -> "Variabile" come "Y, colonne" -> Multivariata: K Valori anomali vicini più vicini -> OK -> Pulsante "Salva distanze NN"
Perché chiedo:
- I risultati non sono identici per entrambi i moduli (vedi tabella dati allegata: "Distanz 1-4" sono da 1. sopra, "Nächste 1 Distanz_OutlierModule 1-4" sono da 2).
- Nessuno di questi sembra calcolare la distanza euklidea (non dovrebbe essere la prima distanza vicina più vicina essere 1 per tutti i valori / righe di variabile)?) Sembra che abbia qualche calcolo della distanza maggiore e quindi calcoli gli altri in base alla loro parte proporzionale (0,25 come distanza 1 e 1 come distanza 4 (più lontana dal valore della variabile 1, quindi un quarto della distanza massima è la distanza NN salvata, mentre mi aspetterei 1,2,3,4 come distanze NN per la prima riga nella tabella dati). E nel modulo di modellazione i valori sono in qualche modo simili (per le proporzioni) ma diversi dai valori assoluti.
Ho visto la documentazione con un riferimento a: Hastie et al. ( 2009 ), Hand et al. ( 2001 ) e Shmueli et al. ( 2017 ). ( Panoramica della piattaforma K Nearest Neighbors ), dove è menzionato, identifica le distanze euclidee più piccole tra i valori predittori per quell'osservazione ei valori predittori per ciascuna delle altre osservazioni. Tuttavia, non mi spiega i diversi risultati.
Grazie mille! C'è un modo per annullare o impedire la standardizzazione?
Sebbene non sia documentato, immagino selvaggiamente che prima di calcolare le distanze euclidee, la piattaforma K-Nearest Neighbors standardizzata da (x_i - m_i) / s_i dove m_i è la media e s_i è lo stddev per 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);
Le seguenti voci in Sirius dicono che le variabili sono standardizzate da Q90 - Q10 sulla piattaforma 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);