QCプラネッツ 品質のプロフェッショナルを育成するサイト

線形判別関数が計算できる(2次元、その2)

多変量解析

「線形判別関数Zが作れない」などと困っていませんか?

こういう疑問に答えます。

本記事のテーマ

線形判別関数が計算できる(2次元、その2)

おさえておきたいポイント

  • ①データ事例(その1)
  • ➁平方和(全変動、群間変動)、相関比を計算(その1)
  • ➂線形判別関数の係数導出方法1(その1)
  • ➃線形判別関数の係数導出方法2
  • ➄線形判別関数を計算する
  • ⑥線形判別関数とデータの値の比較
判別分析は自分で解けます!
Excelや公式は暗記不要!
自力で導出できるぜ!
2次元でしっかり導出過程を理解しましょう。

①➁➂は関連記事で

「線形判別関数が計算できる(2次元、その1)」は関連記事で解説しています。後半戦を本記事で解説します。

線形判別関数が計算できる(2次元、その1)
判別分析において、線形判別関数が計算できますか?本記事では2次元データを例に2記事にわたり線形判別関数の求め方をわかりやすく解説します。多変量解析を学ぶ人は必読です。

➃線形判別関数の係数導出方法2

ラグランジュの未定乗数法

もう1つはラグランジュの未定乗数法を使う方法です。主成分分析で必須の解法ですね。

ここで、1つ仮定を入れます。

計算で求めたいのは\(a_2,a_1\)の比。
ここで全変動\(S_T\)=1と仮定したときの、
群間変動\(S_B\)の最大値を考える。

全変動\(S_T\)=\(42a_1^2 + 60a_1 a_2 +56 a_2^2\)=1としたときの
群間変動\(S_B\)=21\((a_1 + a_2)^2\)の最小値、最大値を考えます。

ラグランジュの未定乗数法から固有方程式へ

関数\(F\)を
\(F(a_1,a_2\)=21\((a_1 + a_2)^2\)-\(λ(42a_1^2 + 60a_1 a_2 +56 a_2^2-1)\)
を定義して、偏微分=0の式を立てます。その後、固有方程式と流れますね。

●\(\displaystyle \frac{\partial F(a_1,a_2)}{\partial a_1} \)=\(42(a_1 + a_2)-λ(84a_1 + 60a_2)\)=0
●\(\displaystyle \frac{\partial F(a_1,a_2)}{\partial a_2} \)=\(42(a_1 + a_2)-λ(60a_1 + 112a_2)\)=0

行列表記しましょう。
\(\left(
\begin{array}{cccc}
7-14λ & 7-10λ \\
21-30λ & 21-56λ \\
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
a \\
b\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
0 \\
0\\
\end{array}
\right)
\)

\((7-14λ)(21-56λ)-(7-10λ)(21-30λ)\)=0
\(λ(484λ-266)\)=0

よって、固有値λは
λ=0,\(\frac{133}{242}\)
となります。

固有ベクトルを算出

固有ベクトルから\(a,b)を計算します。

固有値0のとき

固有値0のときは、
\(\left(
\begin{array}{cccc}
7 & 7 \\
21 & 21 \\
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
a\\
b\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
0 \\
0\\
\end{array}
\right)
\)
より、
●\(a+b\)=0
となるので、
\(
\left(
\begin{array}{c}
a\\
b\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
1 \\
-1\\
\end{array}
\right)
\)
となります。

固有値\(\frac{133}{242}\)のとき

固有値\(\frac{133}{242}\)のときは、
\(\left(
\begin{array}{cccc}
7-14\frac{133}{242} & 7-10\frac{133}{242} \\
21-30\frac{133}{242} & 21-56\frac{133}{242} \\
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
a\\
b\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
0 \\
0\\
\end{array}
\right)
\)
より、
●\(-\frac{168}{242}a+\frac{364}{242}b\)=0
となるので、168と364はそれぞれ28で割り切れるから
\(
\left(
\begin{array}{c}
a\\
b\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
13 \\
6\\
\end{array}
\right)
\)
となります。

線形判別関数の係数比の結果をまとめると

➂では相関比を\(k=\frac{a_2}{a_1}\)として極値を求め、
➃では、ラグランジュの未定乗数法から固有ベクトルを求めました。

➂の方法では、\(k=\frac{a_2}{a_1}\)=-1,\(\frac{13}{6}\)
➃の方法からも\(\frac{a_2}{a_1}\)=-1,\(\frac{13}{6}\)と
計算結果は一致しましたね。

解法はどちらでもOKですが、
変数が3以上になると
ラグランジュの未定乗数法しか解けないですね。

➄線形判別関数を計算する

係数比から線形判別関数を作る

さて、係数比は
\(\frac{a_2}{a_1}\)=-1,\(\frac{13}{6}\)
となりました。

ここで、あえて、
●\(a_1\)=1,\(a_2\)=-1
●\(a_1\)=13,\(a_2\)=6
と置いて、線形判別関数を
●\(Z_1\)=\(a_1 x_1\)+\(a_2 x_2\)+\(b_1\)
●\(Z_2\)=\(a_1 x_1\)+\(a_2 x_2\)+\(b_2\)
に値を代入して、切片\(b_1,b_2\)を決めましょう。
●\(Z_1\)=\( x_1\)-\( x_2\)+\(b_1\)
●\(Z_2\)=13\( x_1\)+6\(x_2\)+\(b_2\)

データの平均を線形判別関数\(Z\)は通る

切片\(b_1,b_2\)を決める条件は、
データの平均(6,10)を線形判別関数\(Z\)は通る
として、代入すると
●\(Z_1\)=0=6-12+\(b_1\)
●\(Z_2\)=0=13×6+6×12+\(b_2\)
より
\(b_1\)=6,\(b_2\)=-150
となるので、線形判別関数はそれぞれ
●\(Z_1\)=\( x_1\)-\( x_2\)+6
●\(Z_2\)=13\( x_1\)+6\(x_2\)-150
となります。

⑥線形判別関数とデータの値の比較

線形判別関数\(Z\)=0の直線とデータを比較

では、グラフに図示してみましょう。うまく判別できたでしょうか?

まず、全部のデータをグラフで図示します。
2本の線形判別関数の直線があり、互いにデータの平均(\(\bar{x},\bar{y}\)で交わっています。

線形判別関数

次に線形判別関数\(Z_1\)=0の判別を見ましょう。
結構、判別ミスっているのがわかりますね。

線形判別関数

次に、線形判別関数\(Z_2\)=0の判別を見ましょう。
結構、正しく判別できているがわかりますね。

線形判別関数
2次元の場合は、2次方程式から2本の線形判別関数ができるのですが、
どうも、
●判別正誤が悪い場合(解が極小値の場合\(k\)=-1)

●判別正誤が良い場合(解が極大値の場合\(k\)=\(\frac{13}{6}\))
の2本ができるようですね。

線形判別関数の判別正誤率を確認

判別正誤率を表でまとめます。

x1 x2 Z1 Z1 群 Z1 正誤 Z2 Z2 群 Z2 正誤
1 4 8 2 2群 × -50 1群
6 10 2 2群 × -12 1群
2 12 -4 1群 -52 1群
2 10 16 0 × 76 2群 ×
5 10 1 2群 -25 1群
8 12 2 2群 26 2群
7 16 -3 1群 × 37 2群
1群 25% 1群 100%
2群 50% 2群 75%

確かに、\(Z_1\)の判別正誤率は低く、\(Z_2\)は高いですね。
線形判別関数を計算した後も、正しく判別できるかはちゃんとチェックしましょう。

では、後半戦行きましょう。

線形判別関数が計算できる(2次元、その2)
判別分析において、線形判別関数が計算できますか?本記事では2次元データを例に2記事にわたり線形判別関数の求め方をわかりやすく解説します。線形判別関数の結果と判別正誤率も解説します。多変量解析を学ぶ人は必読です。

まとめ

「線形判別関数が計算できる(2次元、その2)」を解説しました。

  • ①データ事例(その1)
  • ➁平方和(全変動、群間変動)、相関比を計算(その1)
  • ➂線形判別関数の係数導出方法1(その1)
  • ➃線形判別関数の係数導出方法2
  • ➄線形判別関数を計算する
  • ⑥線形判別関数とデータの値の比較


Warning: count(): Parameter must be an array or an object that implements Countable in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 119

    Warning: Invalid argument supplied for foreach() in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 122
error: Content is protected !!