【基本】モデルによる加工結果の予測

1. 加工結果の予測

レーザー加工には多くのパラメータ(変数)が影響します。例えば、穴加工を例にすると、レーザーのパワーを増大させると穴直径が大きくなったとします。レーザーのパワーという変数\(x\)を変動させながら、穴直径という変数\(y\)を測定すると、両者にはある関係が見えてきます。この関係を数式(モデル)\(y=f(x)\)で表すことで、ある変数\(x\)(レーザーパワー)での穴直径\(y\)という加工結果を予測できます。

結果を説明する方の変数\(x\)を説明変数(独立変数、予測変数)、説明される方の変数\(y\)を被説明変数(従属変数、目的変数、応答変数)と呼ばれます。

モデル化には様々な種類や方法がありますが、ここでは最も簡単な1つの説明変数\(x\)による単回帰分析を行いたいと思います。

これがさらに進んでいくと、重回帰分析やAI(機械学習)につながっていくことになります。

2. モデル化と予測

2.1 データ

次のような仮想のデータを考えます。変数\(x\)に対して変数\(y\)の関係が次のように10点得られたとします。

X =  1  2  3  4  5  6  7  8  9 10
y = 6.8  6.8  9.7 11.3 11.4 16.6 16.0 17.2 20.3 24.8

これをプロットすると下図のようになります。

何となく1つの直線が描けそうです。この直線をどのように描くと最も良いでしょうか?考え方はいくつかあります。それを次から見ていきます。

2.2 単回帰分析(最小二乗法)

単回帰分析は、一つの説明変数\(x\)と一つの目的変数\(y\)の関係を1次式で表したものです。$$ y=a + bx $$というように、2つの変数の関係が直線で表されます。求める値は、\(a, b\)となります。

このモデルの最も代表的な求め方は最小二乗法で、次のように\(a, b\)を求めます。

観測値の実際の値\(y_i\)と回帰直線から得られる\( \hat{y_i} \)の差(残差\(e_i\))の平方和を考えます。残差平方和は、$$ \sum^{n}_{i=1} e_i = \sum^{n}_{i=1} (y_i – \hat{y_i})^2 = \sum^{n}_{i=1} \{ y_i – (\hat{a} + \hat{b} x_i) \}^2 $$で表されます。この残差平方和を最小にする\(a, b\)を求めることが目的です。

残差平方和を\( \hat{a}, \hat{b}\)の関数としてみたとき、2次式となりますから、最小となるのは、それぞれの変数で偏微分した値が0となるときです。このことを考慮しますと、次の連立1次方程式が得られます。
$$ n \hat{a} + \hat{b} \sum x_i = \sum y_i$$
$$ \hat{a} \sum x_i + \hat{b} \sum x^2_i = \sum x_i y_i $$

これを解くことで、
$$ \hat{b} = \frac{ \sum (y_i – \bar{y})(x_i – \bar{x_i})}{ \sum(x_i – \bar{x})^2 } $$
$$ \hat{a} = \bar{y} – \hat{b} \bar{x} $$
が求まります。

R言語を用いると下記のように簡単に計算できます。

x<-c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
y<-c(6.8, 6.8, 9.7, 11.3, 11.4, 16.6, 16.0, 17.2, 20.3, 24.8)
dat <- data.frame(x=x, y=y)
lm.model <- lm(y~x, dat)
summary(lm.model)
> summary(lm.model)

Call:
lm(formula = y ~ x, data = dat)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.7406 -0.8647 -0.1888  1.0301  2.1654 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   3.6467     0.9668   3.772  0.00545 ** 
x             1.8988     0.1558  12.186 1.91e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.415 on 8 degrees of freedom
Multiple R-squared:  0.9489,	Adjusted R-squared:  0.9425 
F-statistic: 148.5 on 1 and 8 DF,  p-value: 1.906e-06

結果で表示されるCoefficients : Estimate Stdが求める値です。
この場合、
$$ a=3.6467$$
$$ b= 1.8988 $$
ですので、
$$ y = 3.6467 + 1.8988 x $$が求めたモデルになります。プロットとモデルを表示すると下図の通りとなり、それらしい直線になっていることがわかります。

このように求めたモデルから加工結果の予測ができます。例えば、\(x=11\)の場合、穴直径は\(y=24.5335\)と予測されます。

2.3 回帰分析(ガウス過程回帰)

今度は、前節とは別の方法で回帰直線を求めてみます。この方法はガウスによって発明されました。実はこの方法も考え方は最小二乗法なのですが、行列式を使って解くところがポイントとなります。詳細は、省きますが、連立方程式を行列とベクトルを用いて$$ Y = XW $$と表されるとき、求めたいベクトルWは次の式で求められます。$$ W = (X^T X)^{-1} X^T Y $$ただし、\(X^T\)は転置行列、\(X^{-1}\)は逆行列です。

今回の例を用いて、もう少し具体的に記します。求めたいモデル$$ y = a + b x $$は次のようにベクトルで表すことができます。$$ y = \left( \begin{array}{rr} 1 & x \end{array} \right) \left( \begin{array}{c}a \\ b \end{array} \right) $$

ここで、$$ Y=y, X=\left( \begin{array}{rr} 1 & x \end{array} \right) , W = \left( \begin{array}{c} a \\ b \end{array} \right) $$とすることで、Wを求めることができます。

では、具体的にRを使って解いてみます。

x<-c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
y<-c(6.8, 6.8, 9.7, 11.3, 11.4, 16.6, 16.0, 17.2, 20.3, 24.8)

dat <- data.frame(c(rep(1, length(x))), x)
xx <- as.matrix(dat)

t_xx <- t(xx)
ans <- solve(t_xx %*% xx) %*% t_xx %*% y
ans %*% y
ans
> ans
                         [,1]
c.rep.1..length.x... 3.646667
x                    1.898788

前節と同じように、$$ a= 3.6467, b=1.8988 $$と求められました。この方法の素晴らしいところは、モデルが1次式でなくても解くことができる点です。

3. 終わりに

実験結果のモデル化のため、回帰分析を行ってみました。単回帰分析によりパラメータを変化させたときの加工結果を求められることを示しました。このようにモデル化することで、未知のパラメータについての加工結果の見通しが立つようになりますので、非常に有効な手段です。さらに進めると機械学習へ発展できます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です