あなたが抱えていると思われる問題は、各列のスケールが異なるため、それらを簡単に組み合わせることができないことです。この問題は、ホワイトニングと呼ばれる手法を使用して解決できます。これには、各列の平均と標準偏差を計算し(1つのSQLステートメントでこれを行うことができます)、次を選択するときに各列をこれに再スケーリングすることが含まれます。
colSortPos = (colValue-colMean) / colStdev
これを行うと、0前後の範囲の各列が得られ、+ /-1の範囲内で+/-1標準偏差になります。次に、これらを組み合わせて、類似した日付が一緒になるようにします。ここでの問題は、これは2次元の問題ではないため、多次元的に考える必要があるということです。だから私の提案は、あなたのソート順としてユークリッド距離を取ることです。
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
これに関する唯一の問題は、問題を1次元空間に投影するため、いくつかの相関関係を見逃す可能性があることです。これを回避するには、K-meansのようなクラスタリング手法を使用することをお勧めします。これは、実装が非常に簡単で、非常に高速です。これにより、日付を最も類似性の高いk個のクラスターにグループ化できます[ http:// en.wikipedia.org/wiki/K-means_clustering ]。生データがあり、これらの(およびその他の)手法を試してみたい場合は、wekaツールキット[ http://www.cs.waikato.ac.nz/ml/weka/ ]これにより、これらのテクニックを試すことができます。