Wydaje się, że problemem jest to, że każda kolumna ma inną skalę, więc nie można ich łatwo połączyć. Ten problem można rozwiązać za pomocą techniki zwanej wybielaniem. Obejmuje to obliczenie średniej i odchylenia standardowego każdej kolumny (można to zrobić w 1 instrukcji SQL), a następnie przeskalowanie każdej kolumny do tego przy wyborze:
colSortPos = (colValue-colMean) / colStdev
Spowoduje to, że każda kolumna będzie miała zakres około 0, czyli +/- 1 odchylenie standardowe w zakresie +/- 1. Sztuczka polega na tym, aby połączyć je tak, aby podobne daty były razem. Problem polega na tym, że nie jest to problem dwuwymiarowy, więc musisz myśleć wielowymiarowo. Sugeruję więc, aby jako porządek sortowania przyjąć odległość euklidesową.
SELECT
date,
i,
j,
k,
SQRT( POW(([email protected])/@iStdDEv, 2) + POW(([email protected])/@jStdDEv, 2) + POW(([email protected])/@kStdDEv, 2) )
AS
sort_order
FROM
table
ORDER BY
sort_order
Jedynym problemem jest to, że rzutuje twój problem na jednowymiarową przestrzeń, co może sprawić, że przegapisz niektóre korelacje. Aby obejść ten problem, sugeruję użycie techniki klastrowania, takiej jak K-średnie, która jest dość prosta w implementacji i jest naprawdę szybka. Umożliwi to pogrupowanie dat w k klastrów, które wykazują największe podobieństwo [ http:// pl.wikipedia.org/wiki/K-means_clustering ]. Jeśli masz surowe dane i chcesz poeksperymentować z tymi (i innymi) technikami, sugeruję wypróbowanie zestawu narzędzi weka [ http://www.cs.waikato.ac.nz/ml/weka/ ], które pozwolą Ci pobawić się tymi technikami.