あなたは数字の二組があれば検討します線形最小二乗を使用して同様の数値のセットをマッチングしますか?
瀬田:
10
20
30
40
と数字の別の大きなセット:
SETB:
15
20
35
40
50
をゴールは排除することです2つのセットのうちの大きい方のアイテムから、両方のセットに同じ数のアイテムが存在するようになり、あなたは可能な限り「近い」セットとして残りますble。私は、各アイテムのすべてのペアを試し、その差の二乗を最小限に抑えることができるという考えを得ました。例えば、私は上記の解決策があることだと思う:それはあなたの最も小さいDiffSquaredSumを与える組み合わせですので
SetA SetB Diff DiffSquared
10 15 5 25
20 20 0 0
30 35 5 25
40 40 0 0
DiffSquaredSum == 50
それは解決策です。私は本当に一緒にアイテムのペアリングを気にしませんが、それは主に、より大きなセットを同じ数のアイテムであるセットにトリミングすること、およびアイテムができるだけ接近しているところです。私はこれを解決するために線形最小二乗法の概念を使うことができたことに気付きましたが、私はこれをコーディングするところでどこから始めるのかは分かりません。私はSQLを使用する方が好きですが、一般的なアプローチのアイデアを得て正確なソリューションを生成することには心配していません。
は、私はそれが二組のすべての可能な組み合わせを試す基本的に伴うだろうと思います:
SetA SetB Diff DiffSquared
10 15 5 25
20 20 0 0
30 35 5 25
40 50 10 100
SetA SetB Diff DiffSquared
10 15 5 25
20 20 0 0
30 40 10 100
40 50 10 100
等は、その後DiffSquaredの最小和のグループを選択します。私は、瀬田のためROW_NUMBERを生成することから始め、その後、SETBのため、そしてその上で参加し、答えを与えるために起こっているが、それは唯一の偶然である可能性があります
Row# SetA SetB
1 10 15
2 20 20
3 30 35
4 40 40
5 NULL 50
私は希望の答えを見つけてくださいするには何とかこれを何度もやり直す必要があり、どのグループが私にそれによってグループを行い、次にそれぞれの合計を見ることができるかを教えてくれるIDを持っている必要があります。 でも、私はこのセットを取得する方法がわからないです:
Attempt# Row# SetA SetB
1 1 10 15
1 2 20 20
1 3 30 35
1 4 40 40
2 1 10 15
2 2 20 20
2 3 30 35
2 4 40 50
3 1 10 15
3 2 20 20
3 3 30 40
3 4 40 50
etc....
お知らせ私はSETBから異なるアイテムを排除した各試行#。実際には、SetBはAよりも多くのアイテムである可能性があります。そのため、削除されるアイテムが増え、可能性が増します。私は上記を持っていると、私はフィールドを追加するだけで差の二乗を計算し、次にグループとの合計を試行#で行います。次に、最小のSumDiffSquaredで試行#を選択することができました。おそらく中間テーブルを一時テーブルまたはテーブル変数に格納する必要があるため、そのIDから後ろに歩いて成功したセットの要素を取得することができます。
問題は次のとおりです。これらの「試行」のすべての順列を生成するにはどうすればよいですか?
最初に二乗の差について学んだとき、私は同じことを考えました。平方和は、2つのデータセットがどれだけ近いかを判断する概念です。しかし、これは伝統的に曲線をデータに適合させるために適用されます。しかし基本的にコンセプトは、あなたが(1,12)と(6,7)を持っていれば、1と6は5の差があり、12と7は5の差があるので、差の合計は10であるが、平方和は50(25 + 25)である。あなたが(5,16)と(6,7)を持っていれば、差の合計も10ですが、平方和はもっと大きくなります**、81 = 1^2 + 9^2、そうですより悪い「フィット」と考えられる。 – AaronLS
これがビジネスが最も近い「適合」を定義する方法であれば、それを実行する必要があります。 – Beth