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