2010年3月22日月曜日

重回帰分析による 適応的なウィンドウサイズの決定

森田君が計測してくれた以下のデータに対して 統計言語 R を用いた重回帰分析を行ったので報告します。



実行時間 T は、CPU におけるウィンドウサイズ Wcと GPUにおけるウィンドウサイズと Wg の2変数の組み合わせによって、実験的に得られているので、実行時間 Tを Xc, Xg から説明する重回帰式を求めてみましょう。
T= a0 + a1 * Wc + a2 * Wg

以下, R 言語を持ちた分析. 第1フィールドに実行時間、第2フィールドに CPU のウィンドウサイズ、第3フィールドに GPU のウィンドウサイズから構成されるCSV 形式のデータを読み込みます。

> data1<-read.csv("C:/temp/streamgpu1.csv")
Time,CPU,GPU
1.8883369,50,500
2.3832237,50,600
2.7971815,50,700
3.2233268,50,800
3.773477,50,900
4.4216436,50,1000
5.1433544,50,1100
5.8385782,50,1200
6.5608456,50,1300
...

R による重回帰分析の実行と結果の表示
> data1.lm<-lm(Time~CPU+GPU,data=data1)
> summary(data1.lm)

Call:
lm(formula = Time ~ CPU + GPU, data = data1)

Residuals:
Min 1Q Median 3Q Max
-26.076 -4.510 1.308 5.718 30.277

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.638e+01 1.488e+00 -17.73 <2e-16>
CPU 4.471e-02 2.677e-03 16.70 <2e-16>
GPU 2.541e-02 6.373e-04 39.87 <2e-16>
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 8.565 on 249 degrees of freedom
Multiple R-squared: 0.8824, Adjusted R-squared: 0.8814
F-statistic: 934 on 2 and 249 DF, p-value: <>

決定係数は 0.8824, 調整済みの決定係数は 0.8814
次に係数の算出。

> round(coefficients(data1.lm),6)
(Intercept) CPU GPU
-26.376838 0.044705 0.025407

これによって、以下の関係式が得られることがわかります。
T (s) =-26.38 + 0.044705 * Wc + 0.025407 * Wg

次に、説明変数 Xg, Xc に相関関係があると思われるので、以下のように相互作用を考慮した回帰係数を求めます。

> data1.lm2<-lm(Time~(CPU+GPU)^2,data=data1)

Call:
lm(formula = Time ~ (CPU + GPU)^2, data = data1)

Residuals:
Min 1Q Median 3Q Max
-25.4525 -4.4603 0.4802 4.4581 31.8098

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.258e+01 2.023e+00 -6.217 2.13e-09 ***
CPU 7.909e-03 4.752e-03 1.664 0.0973 .
GPU 1.621e-02 1.175e-03 13.798 <>
CPU:GPU 2.453e-05 2.759e-06 8.891 <>
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 7.473 on 248 degrees of freedom
Multiple R-squared: 0.9108, Adjusted R-squared: 0.9097
F-statistic: 844.2 on 3 and 248 DF, p-value: <>


決定係数は 0.9108, 調整済みの決定係数は 0.9097で、相互作用効果を考慮していない場合の 0.8824, 0.8814 より増加しており、相互作用効果を考慮したモデルの当てはめがよいと言える。

次に係数の決定。
> round(coefficients(data1.lm2),6)
(Intercept) CPU GPU CPU:GPU
-12.578282 0.007909 0.016208 0.000025

Y(g,c) = a0 + a1 * Wc + a2 * Wg + a3 Wc Wg
T (s) = -12.578282 + 0.007909 * Wc + 0.016208 * Wg + 0.000025 * Wc * Wg

前処理の実験データによって上記の回帰式を得ることができたので、応答時間(異常検知までの最大値)の T (秒) がアプリケーションによって与えられ、かつ Wg のウィンドウサイズを 1000 と設定すれば、この式によって、適切な CPU 側でのウィンドウサイズ Wc を以下の式によって求めることができます。

Wc = (T + 12.578282 - 0.016208 * Wg) / (0.007909 + 0.000025 * Wg)

例えば、T=5 と設定したときは、Wc = 41.6385。T=30 と設定したときは Wc = 801 と求められます。

以上です。

0 件のコメント:

コメントを投稿