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

判別分析_線形判別関数_計算2次元1

本記事のテーマ

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

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

  • ①データ事例
  • ➁平方和(全変動、群間変動)、相関比を計算
  • ➂線形判別関数の係数導出方法1
  • ➃線形判別関数の係数導出方法2
  • ➄線形判別関数を図示する
  • ⑥線形判別関数とデータの値の比較
QC検定®1級合格したい方、多変量解析をしっかり学びたい方におススメです。
【QC検定®合格】「多変量解析」問題集を販売します! 内容は、①回帰分析 単回帰分析・重回帰分析 の復習、➁ 主成分分析、➂判別分析、➃因子分析、➄数量化分析の5章全42題!

判別分析は自分で解けます!
Excelや公式は暗記不要!
自力で導出できるぜ!

まずは、

2次元でしっかり導出過程を理解しましょう。

①データ事例

2次元データで線形判別関数を作る

以下のデータを用意しましょう。このデータの線形判別関数を作っていきます。

\(x_1\) \(x_2\)
1群 4 8
6 10
2 12
2群 10 16
5 10
8 12
7 16

なお、グラフで図示すると下図になります。 2つの群に分けたので、線を引いて区別してみましょう。この線の直線式を求めます。

線形判別関数

➁平方和(全変動、群間変動)、相関比を計算

線形判別関数\(Z\)を定義

関連記事のとおり、2次元における線形判別関数\(Z\)を定義します。

線形判別関数Zの導出がわかる(2次元、平方和の分解)
線形判別関数を導出するための平方和の計算、平方和の分解を解説します。多変量解析を学ぶ人は必読!

●線形判別関数\(Z\)
\(Z\)=\(a_1 x_1 +a_2 x_2\)

各値に代入しましょう。下の結果になります。

x1 x2 Z 群平均
1群 4 8 4\(a_1\)+8\(a_2\) 4\(a_1\)+10\(a_2\)
6 10 6\(a_1\)+10\(a_2\)
2 12 2\(a_1\)+12\(a_2\)
2群 10 16 10\(a_1\)+16\(a_2\) 7.5\(a_1\)+13.5\(a_2\)
5 10 5\(a_1\)+10\(a_2\)
8 12 8\(a_1\)+12\(a_2\)
7 16 7\(a_1\)+16\(a_2\)
全体の平均 6\(a_1\)+12\(a_2\)

平方和(全変動、群間変動)を計算

上表と関連記事を使って、平方和を計算します。

全変動を計算

全変動\(S_T\)は
\(S\)=\(\sum_{i=1}^{7}(Z-\bar{Z})^2\)
=\(((4a_1+8a_2)-(6a_1+12a_2))^2\)
+\(((6a_1+10a_2)-(6a_1+12a_2))^2\)
+\(((2a_1+12a_2)-(6a_1+12a_2))^2\)
+\(((10a_1+16a_2)-(6a_1+12a_2))^2\)
+\(((5a_1+10a_2)-(6a_1+12a_2))^2\)
+\(((8a_1+12a_2)-(6a_1+12a_2))^2\)
+\(((7a_1+16a_2)-(6a_1+12a_2))^2\)
=\(42a_1^2 + 60a_1 a_2 +56 a_2^2\)
=(式1)

群間変動を計算

群間変動\(S_B\)は
\(S_B\)=\(\sum_{i=1}^{3}(\bar{Z_1}-\bar{Z})^2\)+\(\sum_{i=1}^{4}(\bar{Z_2}-\bar{Z})^2\)
=3\((\bar{Z_1}-\bar{Z})^2\)+4\((\bar{Z_2}-\bar{Z})^2\)
=3\(((4a_1+10a_2)-(6a_1+12a_2))^2\)+4\(((7.5a_1+13.5a_2)-(6a_1+12a_2))^2\)
=21\((a_1 + a_2)^2\)
=(式2)

相関比を導出

線形判別関数は相関比を最大にする(最も区別できる条件)として計算します。

相関比\(F\)=\(\frac{S_B}{S_T}\)
と定義します。

相関比\(F\)=\(\frac{S_B}{S_T}\)
=\(\frac{21(a_1 + a_2)^2}{42a_1^2 + 60a_1 a_2 +56 a_2^2}\)

ここから、線形判別関数を導出する方法が2つあります。結果は同じになりますが紹介します。

  1. 相関比が最大になる条件を計算
  2. ラグランジュの未定乗数を使って計算

➂線形判別関数の係数導出方法1

単純に\(F\)が最大,最小になる条件を計算します。これは2変数限定の解法です。

\(\frac{a_1}{a_2}\)=\(k\)とおき、相関比\(F(k)\)を再定義します。
\(F\)= \(\frac{21((\frac{a_1}{a_2}) + 1)^2}{42(\frac{a_1}{a_2})^2 + 60(\frac{a_1}{a_2}) +56}\)
\(F(k)\)= \(\frac{21(k + 1)^2}{42k^2 + 60k +56}\)

これを微分します。高3数学レベルですね。
\(F’(k)\)=\(\frac{42(k+1)(分母)-(分子)(84k+60))}{分母^2}\)
で、\(F’(k)\)=0となる\(k\)が欲しいので、\(F’(k)\)の分子のみ取り出します。

\(F’(k)\)の分子
=\(42(k+1)(42k^2+60k+56)-21(k+1)^2(84k+60)\)=0
\(2(k+1)(2(42k^2+60k+56)-(k+1)(84k+60))\)=0
\((k+1)(24k-52)\)=0
よって、
\(k\)=-1,\(\frac{13}{6}\)

\(F(k\)のグラフを描くと、確かに\(k\)=―1,\(\frac{13}{6}\)の時がそれぞれ最小、最大になります。

線形判別関数

次は、ラグランジュの未定乗数法を使った解法を解説します

➃線形判別関数の係数導出方法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\)は高いですね。
線形判別関数を計算した後も、正しく判別できるかはちゃんとチェックしましょう。

まとめ

まとめ

「線形判別関数が計算できる」を解説しました。

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

error: Content is protected !!