Correlazioni - ottenere i valori nel modo che vogliamo
-
16-10-2019 - |
Domanda
ho:
-
una matrice X con linee N
-
un vettore Y
Ho calcolato la distanza euclidea con Y per ciascuna linea di X.
Quello che ottengo è un vettore di distanze.
Quello che voglio è un vettore di punteggi tra 0 e 1, 1 significa "molto" forte correlazione, 0 significa "no" di correlazione.
Ecco quello che ho fatto:
I diviso il vettore delle distanze per la distanza massima al suo interno. Ottengo vettore D.
1 -. D è il risultato finale con valori compresi tra 0 e 1
Il problema è che ottengo molti valori (75%) troppo vicino a 1. Pensi che quello che ho fatto è corretto?
Come vi ottenere un risultato migliore? (Tra 0 e 1, ma non tutto troppo vicino a 1)
Per il momento, ho cercato di prendere la quadrata del risultato. (Per rimanere tra 0 e 1, ma per ridurre al minimo i valori)
Ecco un quadro della distanza valori che voglio trasformare in una partitura
Soluzione
Diverse funzioni del kernel possono servire come funzioni di similarità (= spartiti). Consulta l'elenco, ad esempio, qui . Si può provare alcuni di loro e vedere quale si adatta il meglio.
Hai bisogno di qualcosa che cade veloce alle basse distanze. Puoi provare
$$ punteggio = 1 / (1 + a distanza) ^ 2 $$
e regolare coefficiente di fronte a distanza in modo che le crisi punteggio tra 0 e 1
A proposito di tua immagine: quali sono le etichette degli assi? e quali sono x-zecche?
Altri suggerimenti
Utilizzare sigmoidale funzioni per ottenere il miglior valore di correlazione. Utilizzare Octave / MATLAB per l'elaborazione della matrice utilizzando la funzione.