線形判別関数が計算できる(2次元、その2)
「線形判別関数Zが作れない」などと困っていませんか?
こういう疑問に答えます。
本記事のテーマ
おさえておきたいポイント
- ①データ事例(その1)
- ➁平方和(全変動、群間変動)、相関比を計算(その1)
- ➂線形判別関数の係数導出方法1(その1)
- ➃線形判別関数の係数導出方法2
- ➄線形判別関数を計算する
- ⑥線形判別関数とデータの値の比較
Excelや公式は暗記不要!
自力で導出できるぜ!
①➁➂は関連記事で
「線形判別関数が計算できる(2次元、その1)」は関連記事で解説しています。後半戦を本記事で解説します。
線形判別関数が計算できる(2次元、その1) 判別分析において、線形判別関数が計算できますか?本記事では2次元データを例に2記事にわたり線形判別関数の求め方をわかりやすく解説します。多変量解析を学ぶ人は必読です。 |
➃線形判別関数の係数導出方法2
ラグランジュの未定乗数法
もう1つはラグランジュの未定乗数法を使う方法です。主成分分析で必須の解法ですね。
ここで、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}\)と
計算結果は一致しましたね。
変数が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の判別を見ましょう。
結構、正しく判別できているがわかりますね。
どうも、
●判別正誤が悪い場合(解が極小値の場合\(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