-1

MatlabでMuPadを使用して計算したいという簡単な質問があります。ペンと紙を使って計算するのに約 1 時間かかりましたが、MuPad を使用して解決できると興味深いです。

2 つのグループ (p と q) にクラスター化された n 個の数値があり、それぞれに平均 (Mp と Mq) があります。私は、グループ内の任意の数とその平均との間の二乗距離の合計を計算する SSE (二乗誤差の合計) と呼ばれる測定値を持っています(sum (x[i]-Mp)^2 + sum (x[j]-Mq)^2。ここで、i は最初のグループでループし、j は 2 番目のグループでループします)。私の質問は、2 つのレコードの位置を元のグループから隣接するグループに交換した場合の測定値に関するものです( q <= xq,xp => p )。交換後もグループの手段が変わりますのでご注意ください。最終的な式 (ペンと紙に基づく) は次のとおりです。

d = xq - xp

deltaSSE = SSE1 - SSE2 = d(d (np + nq)/(np nq) -2 (Mq-Mp))

ここで、np と nq はグループ内のレコード数、xq と xp は交換対象と見なされる 2 つのレコード、Mq と Mp は対応する平均 (交換前) です。

MuPad に関して私が抱えている最も重要な問題は、グループ内のレコード数に関するものです (常に 10 未満です)。

ご協力ありがとうございました。


上記の式の例: 2 つのグループ "1 2 3" と "4 5 6" があります。このようなクラスタリングの SSE は、1^2+0^2+1^2 + 1^2+0^2+1^2 = 4 です。3 の場所を交換すると、SSE が何であるかを知りたいです。 6、完全な計算なし。上記の式に基づいて、d=6-3=3、np=nq=3、Mp=(1+2+3)/3=2、Mq=(4+5+6)/3=5、つまり deltaSSE = 3(3(3+3)/(3*3)-2(5-2))=-12、つまり新しい SSE は 4+12=16 です。私の質問は、MuPad で正確な数を知らなくても、数のクラスターを表す方法についてです。グループ内の要素の数がわかっている単純な形式は、MuPad で簡単に解くことができます。

4

1 に答える 1

1

数のクラスターを表すために必要なのは、カウント、平均、分散だけかもしれません。

Mp = SUM(x{i},i=1..np)/np
Sp = (SUM(x{i}^2,i=1..np)-np*Mp^2)/(np-1)

あなたの例で:

np = 3                                  nq = 3
Mp1 = (1.0+2.0+3.0)/3 = 2.0             Mq1 = (4.0+5.0+6.0)/3 = 5.0
Sp1 = ((1+2^2+3^2)-3*2^2)/(3-1)=1.0     Sq1 = ((4+5^2+6^2)-3*5^2)/(3-1)=1.0

SSE1 = (np-1)*Sp1 + (nq-1)*Sq1 = 4.0

今、の間で変更を加えるためにxp=3.0xq=6.0あなたは新しい量を持っています

d = xq - xp = 3.0

Mp2 = Mp1+d/np = 3.0                     
Sp2 = Sp1 + d*(2*(xp-Mp1)/(np-1)+d/np) = 7.0

Mq2 = Mq1-d/nq = 4.0
Sq2 = Sq1 + d*(2*(Mq1-xq)/(nq-1)+d/nq) = 1.0

SSE2 = (np-1)*Sp2 + (nq-1)*Sq2 = 16.0

または代数を少し使って

SSE2 - SSE1 = 2*d*(Mq1-Mp1)-d^2/np-d^2/nq = 12.0

x{i}したがって、これをすべて行うために、すべての数値とを追跡する必要はありません。x{j}それらの平均と分散だけをMp追跡Mqする必要がありSpますSq

于 2012-07-16T13:50:38.453 に答える