Table of contents
Open Table of contents
- ๋ค์ด๊ฐ๋ ๊ธ
- ๋จผ์ ํ๋ฅ ํ๊ธฐ๋ถํฐ
- ๋ฒ ์ด์ฆ ๋ถ๋ฅ๊ธฐ
- ๋ฒ ์ด์ฆ ์ ๋ฆฌ
- ์์ฑ ๋ชจ๋ธ๊ณผ ํ๋ณ ๋ชจ๋ธ
- ์ ๊ท ๋ถํฌ๋ก ํด๋์ค ๋ชจ์ ํํํ๊ธฐ
- QDA - ๋ถ์ฐ์ด ๋ค๋ฅด๋ฉด ์ด์ฐจ์์ด ๋จ๋๋ค
- LDA - ๋ถ์ฐ์ด ๊ฐ์ผ๋ฉด ์ง์ ์ด ๋๋ค
- ๋ค์ฐจ์์ผ๋ก ํ์ฅํ๊ธฐ
- ํด๋์ค๊ฐ 3๊ฐ ์ด์์ด๋ฉด
- LDA์ ๋ก์ง์คํฑ ํ๊ท์ ๊ด๊ณ
- ๋์ด๋ธ ๋ฒ ์ด์ฆ
- Play Golf ์์
- ๋์ด๋ธ ๋ฒ ์ด์ฆ์ ๋ ๊ฐ์ง ์ค์ ๋ฌธ์
- ๋ถ๋ฅ ๋ชจ๋ธ ํ๊ฐ
- ํผ๋ ํ๋ ฌ
- ์๊ณ๊ฐ๊ณผ ํธ๋ ์ด๋์คํ
- ROC์ AUC
- ์ ๋ฆฌ์ ๋ค์ ๊ธ ์๊ณ
๋ค์ด๊ฐ๋ ๊ธ
์ง๋ ๊ธ์์ ๋ก์ง์คํฑ ํ๊ท(Logistic Regression)๋ฅผ ๋ฐฐ์ ๋ค. ๋ก์ง์คํฑ ํ๊ท๋ ์ ๋ ฅ ๊ฐ ์ฃผ์ด์ก์ ๋ ์ ๋ต์ด 1์ผ ํ๋ฅ ์ ๋ฐ๋ก ๊ณ์ฐํ๋ค.
์๋ฅผ ๋ค์ด ์นด๋ ์ง์ถ์ก์ด ์ฃผ์ด์ก์ ๋, ์ฑ๋ฌด ๋ถ์ดํ(default)ํ ํ๋ฅ ์ ์ง์ ์์ธกํ๋ ์์ด๋ค. ์ด๋ฐ ์ ๊ทผ์ ํ๋ณ ๋ชจ๋ธ(discriminative model)์ด๋ผ ๋ถ๋ฅธ๋ค. ํ๋ณ ๋ชจ๋ธ์ ํด๋์ค๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์ ์ฒด ๋ถํฌ๋ฅผ ๋ฐฐ์ฐ๊ธฐ๋ณด๋ค ํด๋์ค ์ฌ์ด๋ฅผ ๋๋๋ ๊ฒฝ๊ณ์ ์ง์คํ๋ค.
์ด๋ฒ์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ถ๋ฅ๋ฅผ ๋ฐ๋ผ๋ณธ๋ค.
โ๊ฐ ํด๋์ค ๋ฐ์ดํฐ๊ฐ ์๋ ์ด๋ค ๋ชจ์์ผ๋ก ์๊ฒผ๋์ง ๋จผ์ ๋ฐฐ์ด ๋ค์, ์ ๋ฐ์ดํฐ๊ฐ ์ด๋ ํด๋์ค์์ ๋์์ ๊ฐ๋ฅ์ฑ์ด ํฐ์ง ํ๋จํ๋ฉด ์ด๋จ๊น?โ
์ด ๋ฐฉ์์ ๋จผ์ ํด๋์ค๋ณ ๋ฐ์ดํฐ ๋ถํฌ๋ฅผ ์๊ฐํ๋ค. ์๋ฅผ ๋ค์ด default๊ฐ ๋ ๊ณ ๊ฐ๋ค์ ์นด๋ ์ง์ถ์ก์ ์ด๋ค ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋์ง, default๊ฐ ๋์ง ์์ ๊ณ ๊ฐ๋ค์ ์นด๋ ์ง์ถ์ก์ ์ด๋ค ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋์ง ๋ฐ๋ก ๋ณธ๋ค. ๊ทธ๋ค์ ์ ๊ณ ๊ฐ์ ์นด๋ ์ง์ถ์ก์ด ์ด๋ ์ชฝ ๋ถํฌ์์ ๋ ์์ฐ์ค๋ฌ์ด์ง ๋น๊ตํ๋ค.
์ด๋ฐ ์ ๊ทผ์ ์์ฑ ๋ชจ๋ธ(generative model)์ด๋ผ ๋ถ๋ฅธ๋ค. ํด๋์ค๋ณ๋ก ๋ฐ์ดํฐ๊ฐ โ์์ฑ๋๋ ๋ฐฉ์โ์ ๋ชจ๋ธ๋งํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ๊ด์ ์ ๋ถ๋ฅ ๋ฌธ์ ๋ฅผ ์กฐ๊ธ ๋ค๋ฅด๊ฒ ๋ณธ๋ค. ๋ก์ง์คํฑ ํ๊ท๊ฐ ํด๋์ค ์ฌ์ด ๊ฒฝ๊ณ๋ฅผ ์ง์ ๋ฐฐ์ฐ๋ ๋ฐฉ๋ฒ์ด๋ผ๋ฉด, ์์ฑ ๋ชจ๋ธ์ ๊ฐ ํด๋์ค๊ฐ ์ฐจ์งํ๋ ์์ญ์ ๋ชจ์์ ๋จผ์ ๊ทธ๋ฆฐ ๋ค ์ ๋ฐ์ดํฐ๊ฐ ์ด๋ ์ชฝ์์ ๋์์ ๊ฐ๋ฅ์ฑ์ด ํฐ์ง ํ๋จํ๋ค.
์ฐธ๊ณ ๋ก, ์ฌ๊ธฐ์ ๋งํ๋ ์์ฑ ๋ชจ๋ธ์ ChatGPT ๊ฐ์ LLM์ ๋งํ๋ ๊ฒ ์๋๋ค. LLM์์ ์์ฑ ๋ชจ๋ธ์ ๋ณดํต ๋ค์ ํ ํฐ์ ์์ฑํ๋ ๋ชจ๋ธ์ ๋ปํ๋ค. ๋ฐ๋ฉด ์ด ๊ธ์์ ๋งํ๋ ์์ฑ ๋ชจ๋ธ์ ๋ถ๋ฅ๋ฅผ ์ํด ๊ฐ ํด๋์ค์ ๋ฐ์ดํฐ ๋ถํฌ๋ฅผ ๋ชจ๋ธ๋งํ๋ ํต๊ณ์ ์ ๊ทผ์ด๋ค.
๋จผ์ ํ๋ฅ ํ๊ธฐ๋ถํฐ
์์์ด ๋์ค๊ธฐ ์ ์ ํ๋ฅ ํ๊ธฐ๋ถํฐ ์ ๋ฆฌํ์. ์ด ๊ธ์์ ๊ฐ์ฅ ๋ง์ด ๋ณผ ํ๊ธฐ๋ ๋ค์์ด๋ค.
๊ฐ์ด๋ฐ ์ธ๋ก์ค ๋ โ~๊ฐ ์ฃผ์ด์ก์ ๋โ๋ผ๊ณ ์ฝ๋๋ค. ๋ฐ๋ผ์ ๋ ๋ฅผ ์๊ณ ์์ ๋ ์ผ ํ๋ฅ ์ด๋ค.
์๋ฅผ ๋ค์ด ๊ฐ โ์นด๋ ์ง์ถ์ก์ด 2,000๋ฌ๋ฌโ๋ผ๋ ์ ๋ณด์ด๊ณ , ๊ฐ โdefault๊ฐ ๋๋คโ๋ผ๋ ์ฌ๊ฑด์ด๋ผ๋ฉด ๋ค์์ฒ๋ผ ์ฝ๋๋ค.
๋ป์ โ์นด๋ ์ง์ถ์ก์ด 2,000๋ฌ๋ฌ๋ผ๋ ์ฌ์ค์ ์๊ณ ์์ ๋, default๊ฐ ๋ ํ๋ฅ โ์ด๋ค.
์กฐ๊ฑด๋ถ ํ๋ฅ ์ ๊ธฐ๋ณธ ๊ณต์์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ง๋ก ํ๋ฉด ์ด๋ ๋ค.
- ๊ฐ ์ผ์ด๋ ๊ฒฝ์ฐ๋ง ๋ชจ์ ๋๋๋ค.
- ๊ทธ์ค์์ ๋ ๊ฐ์ด ์ผ์ด๋ ๋น์จ์ ๋ณธ๋ค.
์๋ฅผ ๋ค์ด ์ ์ฒด 100๋ช ์ค ์นด๋ ์ง์ถ์ก์ด ๋์ ์ฌ๋์ด 20๋ช ์ด๊ณ , ๊ทธ 20๋ช ์ค default๊ฐ ๋ ์ฌ๋์ด 8๋ช ์ด๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์กฐ๊ฑด๋ถ ํ๋ฅ ์ โ์ ์ฒด ์ค ๋ช ๋ช ?โ์ด ์๋๋ผ, ์ด๋ฏธ ์ด๋ค ์กฐ๊ฑด์ ๋ง์กฑํ ์ฌ๋๋ค ์ค ๋ช ๋ช ?์ ๋ฌป๋๋ค. ๋ฒ ์ด์ฆ ์ ๋ฆฌ์ ๋ถ๋ฅ ๋ชจ๋ธ์ ๋๋ถ๋ถ ์ด ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค.
๋ฒ ์ด์ฆ ๋ถ๋ฅ๊ธฐ
๋ถ๋ฅ ๋ชจ๋ธ์ ๊ฒฐ๊ตญ ๊ฒฐ์ ์ ๋ด๋ฆฐ๋ค. ์ด๋ฉ์ผ์ ์คํธํจ์ผ๋ก ๋ณด๋ผ์ง, ํ์์๊ฒ ์ถ๊ฐ ๊ฒ์ฌ๋ฅผ ๊ถํ ์ง, ์นด๋ ๊ณ ๊ฐ์ ์ํ ๊ณ ๊ฐ์ผ๋ก ๋ณผ์ง ๋ฑ์ ๋ฌธ์ ๋ฅผ ๋ค๋ฃฌ๋ค.
๊ฒฐ์ ์๋ ๋น์ฉ์ด ๋ฐ๋ฅธ๋ค. ์ ์ ๋ฉ์ผ์ ์คํธ์ผ๋ก ๋ณด๋ด๋ ๋น์ฉ๊ณผ ์คํธ ๋ฉ์ผ์ ๋์น๋ ๋น์ฉ์ ๋ค๋ฅด๋ค. ์ ํ์๋ฅผ ์ ์์ผ๋ก ํ๋จํ๋ ๋น์ฉ๊ณผ ์ ์์ธ์ ์์ผ๋ก ์ค์งํ๋ ๋น์ฉ๋ ๋ค๋ฅด๋ค.
์ด ๋น์ฉ์ ์ํ์ ์ผ๋ก ํํํ ๊ฒ์ด ์์ค ํจ์(loss function)๋ค.
๋ ์ง์ง ์ ๋ต์ด๊ณ , ๋ ๋ชจ๋ธ์ ์์ธก์ด๋ค. ์์ค ํจ์๋ โ์ ๋ต์ด ์ธ๋ฐ ๋ชจ๋ธ์ด ๋ผ๊ณ ์์ธกํ์ ๋ ์ผ๋ง๋ ์ํด์ธ๊ฐ?โ๋ฅผ ์ซ์๋ก ๋ํ๋ธ๋ค.
๊ฐ์ฅ ๋จ์ํ ์์ค์ 0-1 ์์ค(0-1 loss)์ด๋ค.
๋งํ๋ฉด 0์ , ํ๋ฆฌ๋ฉด 1์ ๋ฒ์ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
์ด์ ์ ๋ ฅ ํ๋๊ฐ ๋ค์ด์๋ค๊ณ ํ์. ์ด์ง ๋ถ๋ฅ๋ผ์ ์ ๋ต์ ๋๋ ๋ ์ค ํ๋๋ค. ์ฐ๋ฆฌ๋ ๋ก ์์ธกํ ์ง, ๋ก ์์ธกํ ์ง ๊ณจ๋ผ์ผ ํ๋ค.
๋จผ์ ๋ก ์์ธกํ๋ค๊ณ ํด๋ณด์.
- ์ค์ ์ ๋ต์ด ์ด๋ฉด ๋งํ์ผ๋ ์์ค์ 0์ด๋ค.
- ์ค์ ์ ๋ต์ด ์ด๋ฉด ํ๋ ธ์ผ๋ ์์ค์ 1์ด๋ค.
๋ฐ๋ผ์ ๋ก ์์ธกํ์ ๋ ํ๊ท ์์ค์ ๋ค์๊ณผ ๊ฐ๋ค.
์ ํญ์ 0์ด๋ฏ๋ก ์ฌ๋ผ์ง๋ค.
์ฆ, ๋ก ์์ธกํ์ ๋์ ์์ค์ ์ฌ์ค์ ์ผ ํ๋ฅ ์ด๋ค.
์ด๋ฒ์๋ ๋ก ์์ธกํ๋ค๊ณ ํด๋ณด์.
- ์ค์ ์ ๋ต์ด ์ด๋ฉด ๋งํ์ผ๋ ์์ค์ 0์ด๋ค.
- ์ค์ ์ ๋ต์ด ์ด๋ฉด ํ๋ ธ์ผ๋ ์์ค์ 1์ด๋ค.
ํ๊ท ์์ค์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ฐ๋ผ์ ๊ฒฐ์ ๊ท์น์ ์์ฃผ ๋จ์ํ๋ค.
- ์ผ ํ๋ฅ ์ด ๋ ํฌ๋ฉด ์ ๊ณ ๋ฅธ๋ค.
- ์ผ ํ๋ฅ ์ด ๋ ํฌ๋ฉด ์ ๊ณ ๋ฅธ๋ค.
์์ผ๋ก ์ฐ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ด๋ ๊ฒ ์ฌํ ํ๋ฅ ์ด ๊ฐ์ฅ ํฐ ํด๋์ค๋ฅผ ๊ณ ๋ฅด๋ ๊ท์น์ด 0-1 ์์ค์์์ ๋ฒ ์ด์ฆ ๋ถ๋ฅ๊ธฐ๋ค. ์ฌํ ํ๋ฅ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณธ ๋ค์ ํด๋์ค ํ๋ฅ ์ด๋ผ๋ ๋ป์ด๋ค.

๊ฐ์ ๊ท์น์ ๋ก๊ทธ ๋น์จ๋ก๋ ์ธ ์ ์๋ค.
์ด ์์ด ๋ฏ์ค๊ฒ ๋ณด์ผ ์ ์์ผ๋ ์ฒ์ฒํ ์ฝ์ด๋ณด์.
๋ถ์ ์์ชฝ์ ๋ ํ๋ฅ ์ ๋น์จ์ด๋ค.
๋ถ์๊ฐ ๋ ํฌ๋ฉด ์ด ๋น์จ์ 1๋ณด๋ค ํฌ๋ค. ์๋ฅผ ๋ค์ด ๋ค. ๋ถ๋ชจ๊ฐ ๋ ํฌ๋ฉด ๋น์จ์ 1๋ณด๋ค ์๋ค. ์๋ฅผ ๋ค์ด ๋ค.
๋ก๊ทธ ํจ์๋ ๋ค์ ์ฑ์ง์ ๊ฐ์ง๋ค.
- ์ด๋ฉด
- ์ด๋ฉด
๋ฐ๋ผ์ ๋ก๊ทธ ๋น์จ์ด ์์๋ฉด ์ชฝ ํ๋ฅ ์ด ๋ ํฌ๊ณ , ์์๋ฉด ์ชฝ ํ๋ฅ ์ด ๋ ํฌ๋ค. ๋ง์ง๋ง์ ์ ๋ถํธ๋ง ๋ณด๋ ํจ์๋ค. ์์๋ฉด , ์์๋ฉด ์ ๋ด๋๋๋ค.
๋ณต์กํด ๋ณด์ด์ง๋ง ๊ฒฐ๊ตญ ๊ฐ์ ๋ง์ด๋ค.
๋ ํด๋์ค์ ํ๋ฅ ์ ๋น๊ตํด์ ๋ ํฐ ์ชฝ์ ๊ณ ๋ฅธ๋ค.
์ด์ ๋จ์ ๋ฌธ์ ๋ ํ๋๋ค. ๋ฅผ ์ด๋ป๊ฒ ์ ์ ์์๊น?
๋ก์ง์คํฑ ํ๊ท๋ ์ด ๊ฐ์ ์ง์ ๋ชจ๋ธ๋งํ๋ค. ์ด๋ฒ ๊ธ์ ๋ชจ๋ธ๋ค์ ๋ฒ ์ด์ฆ ์ ๋ฆฌ๋ก ์ฐํํ๋ค.
๋ฒ ์ด์ฆ ์ ๋ฆฌ
๋ฒ ์ด์ฆ ์ ๋ฆฌ๋ ์กฐ๊ฑด๋ถ ํ๋ฅ ๊ณต์์์ ๋ฐ๋ก ๋์จ๋ค. ๋จผ์ ์กฐ๊ฑด๋ถ ํ๋ฅ ์ ๋ ๋ฐฉํฅ์ผ๋ก ์จ๋ณด์.
๋ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ์ฐ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋ ๋ฒ์งธ ์์์ ์๋ณ์ ๋ฅผ ๊ณฑํ๋ฉด ๋ค์์ด ๋๋ค.
์ด ๊ฐ์ ์ฒซ ๋ฒ์งธ ์์ ์๋ฆฌ์ ๋ฃ๋๋ค.
์ด๊ฒ์ด ๋ฒ ์ด์ฆ ์ ๋ฆฌ(Bayesโ theorem)๋ค.
์ ์ฉ์นด๋ default ์์๋ก ๊ฐ ํญ์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ณด์. ์ฌ๊ธฐ์๋ ๋ค์์ฒ๋ผ ๋ ์ฌ๊ฑด์ ์ ํ์.
- : ๊ณ ๊ฐ์ด default๋ฅผ ๋ธ๋ค.
- : ๊ณ ๊ฐ์ ์นด๋ ์ง์ถ์ก์ด 1,900~2,100๋ฌ๋ฌ ๊ตฌ๊ฐ์ ์๋ค.
์ ํํ 2,000๋ฌ๋ฌ์ฒ๋ผ ํ ์ ์ผ๋ก ์ก์ผ๋ฉด ์ฐ์๊ฐ์์๋ ํ๋ฅ ์ ๋ค๋ฃจ๊ธฐ ์ ๋งคํ๋ฏ๋ก, ์ฌ๊ธฐ์๋ ์์ ๊ตฌ๊ฐ์ผ๋ก ์๊ฐํ์.
์ ์ฒด ๊ณ ๊ฐ์ด 10,000๋ช ์ด๊ณ , ๊ทธ์ค default๋ฅผ ๋ธ ๊ณ ๊ฐ์ด 333๋ช ์ด๋ผ๊ณ ํ์. ๋ ์นด๋ ์ง์ถ์ก์ด 1,900~2,100๋ฌ๋ฌ ๊ตฌ๊ฐ์ธ ๊ณ ๊ฐ์ด 500๋ช ์ด๊ณ , ๊ทธ 500๋ช ์ค default๋ฅผ ๋ธ ๊ณ ๊ฐ์ด 120๋ช ์ด๋ผ๊ณ ํ์.
์ด๋ ๊ฐ ํญ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ๋ค.
: ์ฌํ ํ๋ฅ (Posterior) ๋ฐ์ดํฐ ๋ฅผ ๋ณธ ๋ค, ํด๋์ค๊ฐ ์ผ ํ๋ฅ ์ด๋ค. ์์์์๋ โ์นด๋ ์ง์ถ์ก์ด 1,900~2,100๋ฌ๋ฌ๋ผ๋ ์ฌ์ค์ ์๊ณ ์์ ๋, ์ด ๊ณ ๊ฐ์ด default๋ฅผ ๋ผ ํ๋ฅ โ์ด๋ค. ์ ์ซ์๋ก๋ ํด๋น ๊ตฌ๊ฐ ๊ณ ๊ฐ 500๋ช ์ค 120๋ช ์ด default๋ฅผ ๋์ผ๋ฏ๋ก ๋ค. ์ฐ๋ฆฌ๊ฐ ์ต์ข ์ ์ผ๋ก ์๊ณ ์ถ์ ๊ฐ์ด๋ค.
: ๊ฐ๋ฅ๋(Likelihood) ํด๋์ค๊ฐ ๋ผ๊ณ ๊ฐ์ ํ์ ๋, ์ด๋ฐ ๋ฐ์ดํฐ ๊ฐ ๋์ฌ ํ๋ฅ ์ด๋ค. ์์์์๋ โdefault๋ฅผ ๋ธ ๊ณ ๊ฐ๋ค ์ค ์นด๋ ์ง์ถ์ก์ด 1,900~2,100๋ฌ๋ฌ ๊ตฌ๊ฐ์ ์์ ํ๋ฅ โ์ด๋ค. default ๊ณ ๊ฐ 333๋ช ์ค 120๋ช ์ด ์ด ๊ตฌ๊ฐ์ ์์ผ๋ฏ๋ก ์ด๋ค.
: ์ฌ์ ํ๋ฅ (Prior) ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ธฐ ์ ์ ํด๋์ค ๊ฐ ๋์ฌ ๊ธฐ๋ณธ ํ๋ฅ ์ด๋ค. ์์์์๋ ๊ณ ๊ฐ์ ์นด๋ ์ง์ถ์ก์ ๋ณด๊ธฐ ์ ์, ์๋ฌด ๊ณ ๊ฐ์ด๋ ํ ๋ช ๋ฝ์์ ๋ default๋ฅผ ๋ผ ํ๋ฅ ์ด๋ค. ์ ์ฒด 10,000๋ช ์ค 333๋ช ์ด default๋ฅผ ๋์ผ๋ฏ๋ก ์ด๋ค.
: ์ฆ๊ฑฐ(Evidence) ์ ์ฒด ๋ฐ์ดํฐ์์ ๊ฐ ๋ํ๋ ํ๋ฅ ์ด๋ค. ์์์์๋ ์๋ฌด ๊ณ ๊ฐ์ด๋ ํ ๋ช ๋ฝ์์ ๋ ์นด๋ ์ง์ถ์ก์ด 1,900~2,100๋ฌ๋ฌ ๊ตฌ๊ฐ์ ์์ ํ๋ฅ ์ด๋ค. ์ ์ฒด 10,000๋ช ์ค 500๋ช ์ด ์ด ๊ตฌ๊ฐ์ ์์ผ๋ฏ๋ก ๋ค.
๋ฒ ์ด์ฆ ์ ๋ฆฌ์ ๋ฃ์ผ๋ฉด ๋ค์์ฒ๋ผ ์ฌํ ํ๋ฅ ์ด ๋์จ๋ค.
์ฆ, ์นด๋ ์ง์ถ์ก์ด ๋์ ๊ตฌ๊ฐ์ ์๋ค๋ ์ ๋ณด๋ฅผ ๋ณด๊ณ ๋๋ฉด default ํ๋ฅ ์ 3.33%์์ 24%๋ก ์ ๋ฐ์ดํธํ๊ฒ ๋๋ค. ์ด๊ฒ์ด ๋ฒ ์ด์ฆ ์ ๋ฆฌ์ ํต์ฌ์ด๋ค. ๊ด์ธกํ ๋ฐ์ดํฐ ๋ฅผ ๊ทผ๊ฑฐ๋ก, ์ผ ํ๋ฅ ์ ๊ฐฑ์ ํ๋ค.
ํ์ง๋ง ๋ถ๋ฅ์์ ์ฌ๊ธฐ์ ํ ๊ฑธ์ ๋ ๋์๊ฐ์ผ ํ๋ค. ๊ณ ๊ฐ์ด default๋ฅผ ๋ผ ๊ฐ๋ฅ์ฑ๋ง ๋ณด๋ ๊ฒ์ด ์๋๋ผ, default๋ฅผ ๋ด์ง ์์ ๊ฐ๋ฅ์ฑ๋ ๋น๊ตํด์ผ ํ๋ค. ์ดํ ๋ ๊ทธ๋ด๋ฏํ ์ชฝ์ ์ต์ข ์์ธก์ผ๋ก ๊ณ ๋ฅธ๋ค.
์ ์์๋ฅผ ์ด์ง ๋ถ๋ฅ ํ๊ธฐ๋ก ์ฐ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- : default
- : default ์๋
- : ์นด๋ ์ง์ถ์ก์ด 1,900~2,100๋ฌ๋ฌ ๊ตฌ๊ฐ์ ์์
๊ทธ๋ฌ๋ฉด ๋น๊ตํด์ผ ํ ๋ ๊ฐ์ ๋ค์์ด๋ค.
๋ ์์ ๋ถ๋ชจ๋ ๋๊ฐ์ด ๋ค. ๊ฐ์ ๋ฅผ ๋๊ณ ํด๋์ค๋ฅผ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ถ๋ชจ๊ฐ ๊ฐ์ผ๋ฉด ๋์ ๋น๊ต์๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ถ์๋ง ๋น๊ตํ๋ค.
์ด๋ฅผ ์งง๊ฒ ์ฐ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋ โ๋น๋กํ๋คโ๋ ๋ป์ด๋ค. ์ ํํ ํ๋ฅ ๊ฐ์ ๊ตฌํ๋ ค๋ฉด ๋์ค์ ์ ์ฒด ํฉ์ด 1์ด ๋๋๋ก ๋๋ ์ค์ผ ํ์ง๋ง, ์ด๋ ํด๋์ค๊ฐ ๋ ํฐ์ง ๊ณ ๋ฅด๋ ๊ฑด ๋ถ์๋ง ๋น๊ตํด๋ ๋๋ค.

์ด์ ๊ฐ์ ์๊ฐ์ ๊ฐ๋จํ ์ฝ๋๋ก ์ฎ๊ฒจ๋ณด์. ์ด๋ฒ์๋ ์ ์ฉ์นด๋๊ฐ ์๋๋ผ ๋ฉ์ผ ๋ถ๋ฅ ์์๋ค. ์ด๋ค ๋ฉ์ผ์ free์ meeting์ด๋ผ๋ ๋จ์ด๊ฐ ๋ค์ด ์๋ค. ์คํธ ๋ฉ์ผ๊ณผ ์ ์ ๋ฉ์ผ์์ ๊ฐ ๋จ์ด๊ฐ ๋์ฌ ํ๋ฅ ์ ์ด๋ฏธ ์ถ์ ํด ๋์๋ค๊ณ ํ์.
import math
priors = {"spam": 0.3, "normal": 0.7}likelihoods = { "spam": {"free": 0.80, "meeting": 0.10}, "normal": {"free": 0.05, "meeting": 0.60},}tokens = ["free", "meeting"]
scores = {}for label in priors: score = math.log(priors[label]) for token in tokens: score += math.log(likelihoods[label][token]) scores[label] = score
best = max(scores, key=scores.get)
for label, score in scores.items(): print(f"{label:6s}: log-score={score:.3f}")print("prediction:", best)spam : log-score=-3.730normal: log-score=-3.863prediction: spam์ฌ๊ธฐ์ ๋ก๊ทธ๋ฅผ ์ด ์ด์ ๋ ๊ณ์ฐ ์์ ์ฑ ๋๋ฌธ์ด๋ค. ํ๋ฅ ์ ๋ณดํต 0๊ณผ 1 ์ฌ์ด์ ์์ ์๋ค. ์ปดํจํฐ ๊ณ์ฐ์์๋ ์์ ์๋ฅผ ์ฌ๋ฌ ๋ฒ ๊ณฑํ๋ฉด ๊ฐ์ด 0์ผ๋ก ์ฌ๋ผ์ง ์ ์๋ค. ๊ทธ๋์ ๊ณฑ์ ์ ๋ง์ ์ผ๋ก ๋ฐ๊พธ๊ธฐ ์ํด ๋ก๊ทธ๋ฅผ ์ทจํ๋ค.
๋์ ๊ด๊ณ๋ ๊ทธ๋๋ก ๋ณด์กด๋๋ค. ๋ก๊ทธ๋ ๋จ์กฐ ์ฆ๊ฐ ํจ์์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, ์ด๋ฉด ๋ค. ๊ทธ๋์ ํ๋ฅ ๊ณฑ์ ์ง์ ๋น๊ตํ์ง ์๊ณ ๋ก๊ทธ ์ ์๋ฅผ ๋น๊ตํด๋ ๊ฐ์ ๊ฒฐ๋ก ์ด ๋์จ๋ค.
์์ฑ ๋ชจ๋ธ๊ณผ ํ๋ณ ๋ชจ๋ธ
์ด์ ๋ ๋ถ๋ฅ ์ ๊ทผ์ ๋ถ๋ช ํ ๋๋ ์ ์๋ค.
ํ๋ณ ๋ชจ๋ธ(discriminative model)์ ๋ฅผ ์ง์ ํ์ตํ๋ค. ์ ๋ ฅ์ด ์ฃผ์ด์ก์ ๋ ํด๋์ค๊ฐ ๋ฌด์์ธ์ง ๋ฐ๋ก ๋งํ๋ ค ํ๋ค. ๋ก์ง์คํฑ ํ๊ท๊ฐ ์ฌ๊ธฐ์ ์ํ๋ค.
์์ฑ ๋ชจ๋ธ(generative model)์ ์ ๋ฅผ ๋จผ์ ํ์ตํ๋ค. ํด๋์ค๋ณ ๋ฐ์ดํฐ ๋ถํฌ๋ฅผ ๋ฐฐ์ด ๋ค, ๋ฒ ์ด์ฆ ์ ๋ฆฌ๋ก ๋ฅผ ๊ณ์ฐํ๋ค.

์์ฑ ๋ชจ๋ธ์ ํต์ฌ ์ง๋ฌธ์ ์ด๊ฒ์ด๋ค.
ํด๋์ค๊ฐ ์ ํด์ก์ ๋, ๋ฐ์ดํฐ ๋ ์ด๋ค ๋ถํฌ์์ ๋์๋ค๊ณ ๋ณผ ๊ฒ์ธ๊ฐ?
๊ฐ์ฅ ๋จผ์ ๋ณผ ๋ต์ ์ ๊ท ๋ถํฌ(Gaussian distribution)๋ค.
์ ๊ท ๋ถํฌ๋ก ํด๋์ค ๋ชจ์ ํํํ๊ธฐ
์ ๊ท ๋ถํฌ๋ ์ข ๋ชจ์์ ๋ถํฌ๋ค. ํ๊ท ๊ทผ์ฒ์ ๋ฐ์ดํฐ๊ฐ ๋ง์ด ๋ชจ์ด๊ณ , ํ๊ท ์์ ๋ฉ์ด์ง์๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ด์ง๋ค.
1์ฐจ์ ์ ๊ท ๋ถํฌ์ ํ๋ฅ ๋ฐ๋ ํจ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
๊ธฐํธ๊ฐ ๋ง์ง๋ง ๊ฐ ๋ถ๋ถ์ ์ญํ ์ ์ด๋ ต์ง ์๋ค.
๋ ํ๊ท ์ด๋ค. ๋ถํฌ์ ์ค์ฌ ์์น๋ฅผ ์ ํ๋ค.
๋ ๋ถ์ฐ์ด๋ค. ๋ฐ์ดํฐ๊ฐ ์ผ๋ง๋ ๋๊ฒ ํผ์ง๋์ง ์ ํ๋ค. ๋ถ์ฐ์ด ์์ผ๋ฉด ์ข๊ณ ๋พฐ์กฑํ ๋ถํฌ๊ฐ ๋๊ณ , ๋ถ์ฐ์ด ํฌ๋ฉด ๋๊ฒ ํผ์ง ๋ถํฌ๊ฐ ๋๋ค.
๋ ๊ฐ ํ๊ท ์์ ์ผ๋ง๋ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๋์ง ๋ํ๋ธ๋ค. ์ ๊ณฑ์ด๋ฏ๋ก ์ผ์ชฝ์ผ๋ก ๋ฉ์ด์ ธ๋, ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฉ์ด์ ธ๋ ๊ฐ์ด ์ปค์ง๋ค.
์ฌ๊ธฐ๊น์ง๋ ๊ฐ ์ซ์ ํ๋์ธ ๊ฒฝ์ฐ๋ค. ๊ทธ๋ฐ๋ฐ ํ์ค ๋ฐ์ดํฐ๋ ๋ณดํต ํผ์ฒ๊ฐ ์ฌ๋ฌ ๊ฐ๋ค. ์๋ฅผ ๋ค์ด ๊ณ ๊ฐ ํ ๋ช ์ ์ค๋ช ํ ๋ ์นด๋ ์ง์ถ์ก๋ง ๋ณด๋ ๊ฒ์ด ์๋๋ผ, ์๋, ๋์ด, ์ฐ์ฒด ์ด๋ ฅ ๊ฐ์ ๊ฐ์ ํจ๊ป ๋ณธ๋ค.
์ด๋ ๊ฐ ํผ์ฒ๊ฐ ์ผ๋ง๋ ํผ์ ธ ์๋์ง๋ ์ฌ์ ํ ๋ถ์ฐ(variance)์ผ๋ก ๋ณผ ์ ์๋ค. ํ์ง๋ง ํผ์ฒ๊ฐ ์ฌ๋ฌ ๊ฐ๋ฉด ํ ๊ฐ์ง๋ฅผ ๋ ๋ด์ผ ํ๋ค. ๋ ํผ์ฒ๊ฐ ์ด๋ป๊ฒ ํจ๊ป ์์ง์ด๋๊ฐ๋ค. ์ด๊ฑธ ๋ํ๋ด๋ ๊ฐ์ด ๊ณต๋ถ์ฐ(covariance)์ด๋ค.
์๋ฅผ ๋ค์ด ๋ ํผ์ฒ๋ฅผ ์ด๋ ๊ฒ ๋์.
- : ์นด๋ ์ง์ถ์ก
- : ์ฐ์ฒด ์ผ์
์นด๋ ์ง์ถ์ก์ด ํ๊ท ๋ณด๋ค ํฐ ๊ณ ๊ฐ๋ค์ด ์ฐ์ฒด ์ผ์๋ ํ๊ท ๋ณด๋ค ํฐ ๊ฒฝํฅ์ด ์๋ค๋ฉด, ๋ ๊ฐ์ ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ์์ง์ธ๋ค. ์ด๋ ๊ณต๋ถ์ฐ์ ์์๊ฐ ๋๋ค.
๋ฐ๋๋ก ์นด๋ ์ง์ถ์ก์ด ํ๊ท ๋ณด๋ค ํฐ ๊ณ ๊ฐ์ผ์๋ก ์ฐ์ฒด ์ผ์๋ ํ๊ท ๋ณด๋ค ์์ ๊ฒฝํฅ์ด ์๋ค๋ฉด, ๋ ๊ฐ์ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์์ง์ธ๋ค. ์ด๋ ๊ณต๋ถ์ฐ์ ์์๊ฐ ๋๋ค.
๋ ์ฌ์ด์ ๋๋ ทํ ๊ด๊ณ๊ฐ ์๋ค๋ฉด ๊ณต๋ถ์ฐ์ 0์ ๊ฐ๊น์์ง๋ค.
๊ณต๋ถ์ฐ ๊ณต์์ ๋ค์์ฒ๋ผ ์๊ฒผ๋ค.
๊ณต์ ์์ ๊ณฑ์ ์ด ํต์ฌ์ด๋ค. ์ด๋ค ๊ณ ๊ฐ์ด ๋ ํผ์ฒ ๋ชจ๋ ํ๊ท ๋ณด๋ค ํฌ๋ฉด ๋ ๊ดํธ๊ฐ ๋ชจ๋ ์์๋ผ ๊ณฑ์ด ์์๋ค. ๋ ํผ์ฒ ๋ชจ๋ ํ๊ท ๋ณด๋ค ์์๋ ๋ ๊ดํธ๊ฐ ๋ชจ๋ ์์๋ผ ๊ณฑ์ ๋ค์ ์์๋ค. ์ฆ, ๋ ๊ฐ์ด ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ์์ง์ด๋ฉด ์์๊ฐ ์์ธ๋ค. ํ์ชฝ์ ํ๊ท ๋ณด๋ค ํฌ๊ณ ๋ค๋ฅธ ์ชฝ์ ํ๊ท ๋ณด๋ค ์์ผ๋ฉด ๊ณฑ์ด ์์๊ฐ ๋๋ค.
ํผ์ฒ๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๋๋ ์ด๋ฐ ๋ถ์ฐ๊ณผ ๊ณต๋ถ์ฐ์ ํ์ฒ๋ผ ๋ชจ์ ๋๋ค. ์ด๊ฒ์ ๊ณต๋ถ์ฐ ํ๋ ฌ(covariance matrix)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋๊ฐ์ ์๋ ๊ฐ ํผ์ฒ์ ๋ถ์ฐ์ด ๋ค์ด๊ฐ๊ณ , ๋๊ฐ์ ๋ฐ๊นฅ์๋ ํผ์ฒ๋ผ๋ฆฌ์ ๊ณต๋ถ์ฐ์ด ๋ค์ด๊ฐ๋ค.
์ฌ๊ธฐ์ ๊ณง๋ฐ๋ก ํ๋ ฌ ์์์ผ๋ก ๋ค์ด๊ฐ๋ฉด ์ค๋ช ์ด ๋๋ฌด ๋ฌด๊ฑฐ์์ง๋ค. ๊ทธ๋์ ๋จผ์ 1์ฐจ์, ์ฆ ํผ์ฒ๊ฐ ํ๋๋ฟ์ธ ๊ฒฝ์ฐ๋ถํฐ ๋ณด์. 1์ฐจ์์์๋ ๊ณต๋ถ์ฐ ํ๋ ฌ๊น์ง ๊ฐ ํ์๊ฐ ์๊ณ , ๋ถ์ฐ ํ๋๋ง ์์ผ๋ฉด ๋๋ค.
ํ๋ณ ๋ถ์์ ๋จผ์ ํด๋์ค๋ณ๋ก ์ด๋ฐ 1์ฐจ์ ์ ๊ท ๋ถํฌ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
โํด๋์ค๊ฐ ๋ผ๋ฉด, ๋ ํ๊ท , ๋ถ์ฐ ์ธ ์ ๊ท ๋ถํฌ์์ ๋์จ๋คโ๋ ๋ป์ด๋ค.
์ด์ ์ด ๋จ์ํ 1์ฐจ์ ์์ผ๋ก QDA์ LDA์ ํต์ฌ ์ฐจ์ด๋ฅผ ๋จผ์ ์ดํดํ์. ๋ค์ฐจ์์์๋ ๋ค์์ ์๋ฆฌ์ ๊ณต๋ถ์ฐ ํ๋ ฌ ๊ฐ ๋ค์ด๊ฐ๋ค๊ณ ํ์ฅํ๋ฉด ๋๋ค.

์ด 1์ฐจ์ ๊ฐ์ ์์ QDA์ LDA๊ฐ ๋์จ๋ค. ๋์ ์ฐจ์ด๋ ๋ถ์ฐ์ ์ด๋ป๊ฒ ๋ณด๋๋์ ์๋ค.
- QDA: ํด๋์ค๋ง๋ค ๋ถ์ฐ์ด ๋ค๋ฅผ ์ ์๋ค.
- LDA: ๋ชจ๋ ํด๋์ค๊ฐ ๊ฐ์ ๋ถ์ฐ์ ๊ฐ์ง๋ค๊ณ ๋ณธ๋ค.
๋จผ์ QDA๋ถํฐ ๋ณด์.
QDA - ๋ถ์ฐ์ด ๋ค๋ฅด๋ฉด ์ด์ฐจ์์ด ๋จ๋๋ค
QDA(Quadratic Discriminant Analysis)๋ ํด๋์ค๋ง๋ค ๋ค๋ฅธ ๋ถ์ฐ์ ํ์ฉํ๋ค.
์ด์ง ๋ถ๋ฅ์์ ๋ ํด๋์ค๊ฐ ์๋ค๊ณ ํ์.
๊ฐ ํด๋์ค์ ๋ถํฌ๋ ๋ค์์ฒ๋ผ ๋๋ค.
๋ฒ ์ด์ฆ ๋ถ๋ฅ๊ธฐ๋ ๋ ์ฌํ ํ๋ฅ ์ ๋น๊ตํ๋ค.
๋ฒ ์ด์ฆ ์ ๋ฆฌ๋ฅผ ์ฐ๋ฉด ๋ถ๋ชจ ๋ ์์ชฝ์์ ๊ฐ์ผ๋ฏ๋ก, ๋ค์ ๋๋ง ๋น๊ตํ๋ฉด ๋๋ค.
ํด๋์ค ์ ์ฌ์ ํ๋ฅ ์ ๋ผ๊ณ ๋์. ๊ทธ๋ฌ๋ฉด ํด๋์ค ์ ์ฌ์ ํ๋ฅ ์ ๋ค.
์ฐ๋ฆฌ๋ ๋ค์ ๋ก๊ทธ ๋น์จ์ ๋ถํธ๋ฅผ ๋ณด๋ฉด ๋๋ค.
์ด ์์ ์ฒ์ฒํ ํ์ด๋ณด์. ์ฌ์ฉํ ๋ก๊ทธ ์ฑ์ง์ ์ธ ๊ฐ์ง๋ค.
๋จผ์ ๋ถ์์ ๋ก๊ทธ๋ฅผ ๋นผ๊ธฐ๋ก ๋ฐ๊พผ๋ค.
์ด์ ์ ๊ท ๋ถํฌ์ ๋ก๊ทธ๋ฅผ ๊ณ์ฐํ๋ค.
๋ ๋ฒ์งธ ํญ์ ์ด๋ฏ๋ก ๋ฐ๋ก ๋ด๋ ค์จ๋ค.
์ด ๊ฐ์ ์์ชฝ ํด๋์ค์ ๋์ ํ๋ฉด ๋ค์ ๋ชจ์์ด ๋๋ค.
๊ฐ ์ฌ๋ผ์ง ์ด์ ๋ ์์ชฝ์ ๋๊ฐ์ด ๋ค์ด ์์ด์ ๋นผ๋ฉด 0์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ๊ธฐ์ ํต์ฌ์ ์ ๊ณฑ ํญ์ด๋ค.
์ ๊ณฑ์์ ์ ๊ฐํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
QDA์์๋ ๋ถ์ฐ ์ ๊ฐ ๋ค๋ฅผ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ์์ ๋ถ๋ ๊ณ์๊ฐ ์๋ก ๋ฌ๋ผ์ง๋ค. ๋ฐ๋ผ์ ๋ ์์ ๋นผ๋ ํญ์ด ์์ ํ ์ฌ๋ผ์ง์ง ์๋๋ค.
๊ฒฐ์ ๊ฒฝ๊ณ์ ํญ์ด ๋จ์ผ๋ฏ๋ก ๊ฒฝ๊ณ๋ ์ด์ฐจ์(quadratic)์ด ๋๋ค. ๊ทธ๋์ ์ด๋ฆ์ด QDA๋ค.

๊ฐ๋จํ ์ฝ๋๋ก QDA์ LDA์ ์ฐจ์ด๋ฅผ ์ดํด๋ณด์. QDA๋ ํด๋์ค๋ณ ๋ถ์ฐ์ ๊ทธ๋๋ก ์ฐ๊ณ , LDA๋ ๊ณตํต ๋ถ์ฐ์ ์ด๋ค. LDA์ ์์์ ๋ค์ ์ ์์ ์์ธํ ์ ๊ฐํ๋ค.
import math
def mean(values): return sum(values) / len(values)
def variance(values, mu): return sum((x - mu) ** 2 for x in values) / len(values)
def log_gaussian(x, mu, var): return -0.5 * math.log(2 * math.pi * var) - ((x - mu) ** 2) / (2 * var)
groups = { "safe": [720, 810, 890, 940, 1010, 1080], "risk": [1320, 1500, 1710, 1970, 2310, 2760],}
stats = {}total = sum(len(v) for v in groups.values())for label, values in groups.items(): mu = mean(values) var = variance(values, mu) prior = len(values) / total stats[label] = {"mu": mu, "var": var, "prior": prior}
pooled_var = sum(len(v) * stats[k]["var"] for k, v in groups.items()) / total
def predict_qda(x): scores = {} for label, s in stats.items(): scores[label] = math.log(s["prior"]) + log_gaussian(x, s["mu"], s["var"]) return max(scores, key=scores.get)
def predict_lda(x): scores = {} for label, s in stats.items(): scores[label] = math.log(s["prior"]) + log_gaussian(x, s["mu"], pooled_var) return max(scores, key=scores.get)
for label, s in stats.items(): print(f"{label}: mean={s['mu']:.1f}, var={s['var']:.1f}")print(f"pooled var={pooled_var:.1f}")
for x in [1000, 1500, 2200]: print(f"spending={x}: QDA={predict_qda(x)}, LDA={predict_lda(x)}")safe: mean=908.3, var=14380.6risk: mean=1928.3, var=240047.2pooled var=127213.9spending=1000: QDA=safe, LDA=safespending=1500: QDA=risk, LDA=riskspending=2200: QDA=risk, LDA=riskQDA๋ ์ ์ฐํ๋ค. ํด๋์ค๋ง๋ค ํผ์ง๋ ๋ชจ์์ด ๋ฌ๋ผ๋ ๋ฐ์๋ค์ธ๋ค. ๋์ ์ถ์ ํด์ผ ํ ๊ฐ์ด ๋ง๋ค. ๋ฐ์ดํฐ๊ฐ ์ ์ผ๋ฉด ํ๊ท ๊ณผ ๋ถ์ฐ์ ์๋ชป ์ถ์ ํ๊ธฐ ์ฝ๊ณ , ๋ชจ๋ธ์ด ํ๋ค๋ฆด ์ ์๋ค.
LDA - ๋ถ์ฐ์ด ๊ฐ์ผ๋ฉด ์ง์ ์ด ๋๋ค
LDA(Linear Discriminant Analysis)๋ QDA์์ ํ ๊ฐ์ง๋ฅผ ๋ ๋จ์ํ๊ฒ ๋ณธ๋ค.
๋ ํด๋์ค์ ๋ถ์ฐ์ด ๊ฐ๋ค.
1์ฐจ์์์๋ ๋ค์์ฒ๋ผ ์ด๋ค.
QDA์์ ๋ดค๋ ๋ก๊ทธ ๋น์จ ์์ ๋ค์ ๊ฐ์ ธ์ค์.
์ด์ ๋ ๋ถ์ฐ ์ ๊ฐ ๊ฐ๋ค๊ณ ํ์.
์ฒซ ๋ฒ์งธ ํญ์ ์ด๋ ๊ฒ ๋๋ค.
๋ถ์ฐ ๋น์จ์ด 1์ด๋ฏ๋ก ์ฌ๋ผ์ง๋ค.
๋จ์ ์ ๊ณฑ ํญ์ ๋ณด์.
๋ถ๋ชจ๊ฐ ๊ฐ์ผ๋ ํ๋๋ก ๋ฌถ์ ์ ์๋ค.
์ด์ ์ ๊ณฑ์์ ์ ๊ฐํ๋ค.
๋ ์์ ๋นผ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๊ดํธ๋ฅผ ํ๋ฉด ํญ๊ณผ ํญ์ด ๋ง๋๋ค.
ํญ์ด ์ฌ๋ผ์ง๋ค.
์ด์ ์ ์ฒด ์์ ์ ๋ํ ์ผ์ฐจ์์ด ๋๋ค.
๋ณต์กํด ๋ณด์ด์ง๋ง ์ค์ํ ๊ฒฐ๋ก ์ ํ๋๋ค.
๋ถ์ฐ์ด ๊ฐ๋ค๊ณ ๊ฐ์ ํ๋ฉด ํญ์ด ์์๋์ด ์ฌ๋ผ์ง๋ค.
๊ทธ๋์ ๊ฒฐ์ ๊ฒฝ๊ณ๊ฐ ์ง์ ์ด ๋๋ค. ์ด ๋๋ฌธ์ ์ด๋ฆ์ด Linear Discriminant Analysis๋ค.
QDA์ LDA์ ์ฐจ์ด๋ ๊ฒฐ๊ตญ ์ฌ๊ธฐ์ ๊ฐ๋ฆฐ๋ค.
- QDA: ๋ถ์ฐ์ด ๋ฌ๋ผ๋ ๋๋ค. ํญ์ด ๋จ๋๋ค. ๊ฒฝ๊ณ๊ฐ ๊ณก์ ์ด ๋ ์ ์๋ค.
- LDA: ๋ถ์ฐ์ด ๊ฐ๋ค๊ณ ๋ณธ๋ค. ํญ์ด ์ฌ๋ผ์ง๋ค. ๊ฒฝ๊ณ๊ฐ ์ง์ ์ด ๋๋ค.
LDA๋ QDA๋ณด๋ค ๋ ์ ์ฐํ๋ค. ๋์ ์ถ์ ํด์ผ ํ ๊ฐ์ด ์ ์ผ๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ ๋ ๋ ์์ ์ ์ด๋ค. ๋จธ์ ๋ฌ๋์์ ์์ฃผ ๋ง๋๋ ํธ๋ ์ด๋์คํ๋ค. ๋ชจ๋ธ์ด ์ ์ฐํ ์๋ก ๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ํ์ํ๊ณ , ๋ชจ๋ธ์ด ๋จ์ํ ์๋ก ์ ์ ๋ฐ์ดํฐ๋ก๋ ๋ฒํธ ์ ์๋ค.
๋ค์ฐจ์์ผ๋ก ํ์ฅํ๊ธฐ
์ง๊ธ๊น์ง ๋ฅผ ์ซ์๊ฐ ํ๋์ธ 1์ฐจ์์ผ๋ก ๋ดค๋ค. ํ์ค์์ ํผ์ฒ๊ฐ ์ฌ๋ฌ ๊ฐ๋ค. ์๋ฅผ ๋ค์ด ์นด๋ ๊ณ ๊ฐ์ ๋ถ๋ฅํ๋ค๋ฉด ์นด๋ ์ง์ถ์ก, ์๋, ๋์ด, ๊ฒฐ์ ์ด๋ ฅ ๊ฐ์ ๊ฐ์ด ํจ๊ป ๋ค์ด๊ฐ ์ ์๋ค.
ํผ์ฒ๊ฐ ์ฌ๋ฌ ๊ฐ์ด๋ฉด ๋ ๋ฒกํฐ๊ฐ ๋๋ค.
1์ฐจ์์์ ํ๊ท ์ ์ซ์ ํ๋์์ง๋ง, ๋ค์ฐจ์์์๋ ํ๊ท ๋ ๋ฒกํฐ๊ฐ ๋๋ค.
๋ถ์ฐ์ ๊ณต๋ถ์ฐ ํ๋ ฌ๋ก ๋ฐ๋๋ค.
๊ณต๋ถ์ฐ ํ๋ ฌ์ ํผ์ฒ๋ค์ด ๊ฐ๊ฐ ์ผ๋ง๋ ํผ์ง๋์ง๋ฟ ์๋๋ผ, ํผ์ฒ๋ค์ด ์๋ก ์ด๋ป๊ฒ ํจ๊ป ์์ง์ด๋์ง๋ ๋ด๋๋ค. ์๋ฅผ ๋ค์ด ์นด๋ ์ง์ถ์ก์ด ๋์์๋ก ์ฐ์ฒด ์ผ์๋ ๋์ด๋๋ ๊ฒฝํฅ์ด ์๋ค๋ฉด ๋ ํผ์ฒ๋ ํจ๊ป ์์ง์ธ๋ค. ์ด๋ฐ ๊ด๊ณ๋ฅผ ๊ณต๋ถ์ฐ์ด ํํํ๋ค.
๋ค์ฐจ์ QDA์ ์ ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
ํ๋ ฌ ๊ธฐํธ๊ฐ ๋ฏ์ค๋ฉด, ์ง๊ธ์ ๋ค์ ์ ๋๋ก ์ดํดํด๋ ์ถฉ๋ถํ๋ค.
๋ ํด๋์ค ์ ์ค์ฌ์ด๋ค.
๋ ํด๋์ค ๊ฐ ์ด๋ค ๋ชจ์์ผ๋ก ํผ์ ธ ์๋์ง ๋ํ๋ธ๋ค.
๋ ๊ฐ ํด๋์ค ์ค์ฌ์์ ์ผ๋ง๋ ๋ฉ๋ฆฌ ์๋์ง๋ฅผ ๊ณต๋ถ์ฐ๊น์ง ๊ณ ๋ คํด ๊ณ์ฐํ ๊ฑฐ๋ฆฌ๋ค.
LDA๋ ๋ชจ๋ ํด๋์ค๊ฐ ๊ฐ์ ๊ณต๋ถ์ฐ ๋ฅผ ์ด๋ค. ๊ทธ๋ฌ๋ฉด 1์ฐจ์์์ ํญ์ด ์ฌ๋ผ์ก๋ฏ์ด, ๋ค์ฐจ์์์๋ ์ด์ฐจ ํญ์ด ํด๋์ค ๋น๊ต์์ ์ฌ๋ผ์ง๋ค. ๋จ๋ ์ ์๋ ์ ๋ํ ์ ํ์์ด๋ค.

ํด๋์ค๊ฐ 3๊ฐ ์ด์์ด๋ฉด
ํด๋์ค๊ฐ 3๊ฐ ์ด์์ด๋ฉด ์ด๋ป๊ฒ ๋ ๊น? ์๋ฆฌ๋ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค. ๊ฐ ํด๋์ค๋ง๋ค ์ ์ ๋ฅผ ๊ณ์ฐํ๊ณ , ๊ฐ์ฅ ํฐ ์ ์๋ฅผ ๊ฐ์ง ํด๋์ค๋ฅผ ๊ณ ๋ฅด๋ฉด ๋๋ค.
๋ โ๊ฐ์ ๊ฐ์ฅ ํฌ๊ฒ ๋ง๋๋ ๋ฅผ ๊ณ ๋ฅด๋ผโ๋ ๋ป์ด๋ค.
์ ์๋ฅผ ํ๋ฅ ์ฒ๋ผ ๋ฐ๊พธ๊ณ ์ถ์ผ๋ฉด ์ํํธ๋งฅ์ค๋ฅผ ์ด๋ค.
์ด ์์ ์ง๋ ๊ธ์์ ๋ณธ ์ํํธ๋งฅ์ค์ ๊ฐ์ ๋ชจ์์ด๋ค. ์ฐจ์ด๋ ์ ์ ๊ฐ ์ด๋์ ์๋๋๋ค. ๋ก์ง์คํฑ ํ๊ท์์๋ ์ ์๋ฅผ ์ง์ ํ์ตํ๊ณ , LDA/QDA์์๋ ์ ๊ท ๋ถํฌ ๊ฐ์ ์์ ์ ์๊ฐ ๋์๋ค.

LDA์ ๋ก์ง์คํฑ ํ๊ท์ ๊ด๊ณ
LDA์ ๋ก์ง์คํฑ ํ๊ท๋ ์ถ๋ฐ์ ์ด ๋ค๋ฅด๋ค.
๋ก์ง์คํฑ ํ๊ท๋ ๋ฅผ ์ง์ ๋ชจ๋ธ๋งํ๋ค. ์ ๋ ฅ ๊ฐ ์ฃผ์ด์ก์ ๋, ํด๋์ค๊ฐ ๋ฌด์์ผ์ง ๋ฐ๋ก ๊ณ์ฐํ๋ค.
๋ฐ๋ฉด LDA๋ ์ ๋ฅผ ๋จผ์ ๋ชจ๋ธ๋งํ๋ค. ์ฆ, ๊ฐ ํด๋์ค์ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ์ ๊ท ๋ถํฌ์์ ๋์ค๋์ง ๋จผ์ ๊ฐ์ ํ๊ณ , ๋ฒ ์ด์ฆ ์ ๋ฆฌ๋ก ๋ฅผ ๊ตฌํ๋ค.
์ถ๋ฐ์ ์ ๋ค๋ฅด์ง๋ง, ์ด์ง ๋ถ๋ฅ์์๋ ๋ ๋ชจ๋ธ์ ์์ด ๊ฐ์ ๋ชจ์์ผ๋ก ์ ๋ฆฌ๋๋ค. ์ ๊ทธ๋ฐ์ง ๋ณด์.
์์์ LDA์ ํด๋์ค๋ณ ์ ์๋ฅผ ๋ค์์ฒ๋ผ ์ผ๋ค.
์ด ์ ์๋ โ์ ๋ ฅ ๊ฐ ํด๋์ค ์ ์ํ ๊ทธ๋ด๋ฏํจโ์ ๋ํ๋ด๋ ๊ฐ์ด๋ค. ์ด์ง ๋ถ๋ฅ๋ผ๋ฉด ํด๋์ค๊ฐ ๋ ๊ฐ๋ฟ์ด๋ฏ๋ก, ํด๋์ค 1์ ์ ์์ ํด๋์ค 0์ ์ ์๋ฅผ ๋น๊ตํ๋ฉด ๋๋ค.
๋ ์ค ์ด๋ ์ชฝ์ด ํฐ์ง๋ง ๋ณด๋ฉด ๋๋ฏ๋ก, ๋ ์ ์์ ์ฐจ์ด๋ฅผ ๋ณด์.
์์ ๊ทธ๋๋ก ๋นผ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๊ธธ์ด ๋ณด์ด์ง๋ง ๊ฐ ๋ค์ด ์๋ ๋ถ๋ถ์ ์ฒซ ํญ๋ฟ์ด๋ค.
๋๋จธ์ง ๋ ํญ์ , , , , ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค. ํ์ต์ด ๋๋๋ฉด ๋ชจ๋ ๊ณ ์ ๋ ์ซ์๋ค. ๋ฐ๋ผ์ ์์ํญ์ผ๋ก ๋ฌถ์ ์ ์๋ค.
๊ทธ๋์ ์ ์ฒด๋ฅผ ์ด๋ ๊ฒ ์ธ ์ ์๋ค.
์ฌ๊ธฐ์ ๋ ์ ๋ ฅ ์ ๋ํ ์ ํ์์ด๊ณ , ๋ ์ ํธ์ด๋ค.
์ด ์ ์ ์ฐจ์ด๋ ๋ ํด๋์ค์ ์ฌํ ํ๋ฅ ๋น์จ, ์ฆ ๋ก๊ทธ ์ค์ฆ์ ๊ฐ์ ์ญํ ์ ํ๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ ํํ๊ฐ ๋์จ๋ค.
์ง๋ ๊ธ์์ ๋ณธ ๋ก์ง์คํฑ ํ๊ท์ ๋ก์ง๊ณผ ๊ฐ์ ๋ชจ์์ด๋ค. ๋ก์ง์คํฑ ํ๊ท๋ โ๋ก๊ทธ ์ค์ฆ๊ฐ ์ ๋ ฅ ์ ๋ํด ์ ํโ์ด๋ผ๊ณ ๊ฐ์ ํ๋ค. LDA๋ ์ ๊ท ๋ถํฌ์ ๊ณตํต ๊ณต๋ถ์ฐ ๊ฐ์ ์์ ์ถ๋ฐํ๋๋ฐ, ์ ๋ฆฌํ๊ณ ๋ณด๋ ๊ฐ์ ์ ํ ๋ก์ง ํํ์ ๋์ฐฉํ ๊ฒ์ด๋ค.
๊ทธ๋์ LDA์ ๋ก์ง์คํฑ ํ๊ท๋ ๋น์ทํ ์ ํ ๊ฒฐ์ ๊ฒฝ๊ณ๋ฅผ ๋ง๋ค ์ ์๋ค.
ํ์ง๋ง ๋ ๋ชจ๋ธ์ด ๊ฐ์ ๊ฒ์ ์๋๋ค.
๋ก์ง์คํฑ ํ๊ท๋ ํด๋์ค๋ณ ๋ฐ์ดํฐ๊ฐ ์ ๊ท ๋ถํฌ์ธ์ง ๊ด์ฌ์ด ์๋ค. ๋ถ๋ฅ ๊ฒฝ๊ณ๋ง ์ ๋ฐฐ์ฐ๋ฉด ๋๋ค.
LDA๋ ํด๋์ค๋ณ ๋ฐ์ดํฐ๊ฐ ์ ๊ท ๋ถํฌ์ด๊ณ , ๊ณต๋ถ์ฐ์ด ๊ฐ๋ค๋ ๊ฐ์ ์ ๋๋ค. ์ด ๊ฐ์ ์ด ๋ง์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ ์ ๋๋ ์์ ์ ์ผ ์ ์๋ค. ๊ฐ์ ์ด ํฌ๊ฒ ํ๋ฆฌ๋ฉด ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์๋ค.

๋์ด๋ธ ๋ฒ ์ด์ฆ
์ด์ ๋ค๋ฅธ ์์ฑ ๋ชจ๋ธ์ ๋ณด์. ๋์ด๋ธ ๋ฒ ์ด์ฆ(Naive Bayes)๋ค.
QDA์ LDA๋ ํผ์ฒ๊ฐ ํจ๊ป ์ด๋ป๊ฒ ์์ง์ด๋์ง๋ฅผ ๊ณต๋ถ์ฐ์ผ๋ก ๋ค๋ฃฌ๋ค. ํผ์ฒ๊ฐ ๋ง์์ง๋ฉด ์ด ๊ณต๋ถ์ฐ์ ์ถ์ ํ๊ธฐ ์ด๋ ค์์ง๋ค.
๋์ด๋ธ ๋ฒ ์ด์ฆ๋ ์ฌ๊ธฐ์ ์์ฃผ ๊ณผ๊ฐํ ๊ฐ์ ์ ํ๋ค.
ํด๋์ค๊ฐ ์ฃผ์ด์ก๋ค๋ฉด, ํผ์ฒ๋ค์ ์๋ก ๋ ๋ฆฝ์ด๋ค.
์ด ๋ฌธ์ฅ์ ์ฒ์ฒํ ์ฝ์ด๋ณด์.
โํผ์ฒ๋ค์ด ์๋ก ๋
๋ฆฝโ์ด๋ผ๋ ๋ง์ ํ ํผ์ฒ๋ฅผ ์์๋ ๋ค๋ฅธ ํผ์ฒ์ ๋ํ ์ ๋ณด๊ฐ ๋์ด๋์ง ์๋๋ค๋ ๋ป์ด๋ค. ์๋ฅผ ๋ค์ด ์ด๋ฉ์ผ ๋ถ๋ฅ์์ ๋ฌด๋ฃ๋ผ๋ ๋จ์ด๊ฐ ๋์จ ๊ฒ๊ณผ ์ฆ์ ์ด๋ผ๋ ๋จ์ด๊ฐ ๋์จ ๊ฒ์ด ์๋ก ๋
๋ฆฝ์ด๋ผ๊ณ ๋ณด๋ ์์ด๋ค.
ํ์ค์์ ๋ณดํต ํ๋ฆฐ ๊ฐ์ ์ด๋ค. ๋ฌด๋ฃ๊ฐ ๋์จ ๋ฉ์ผ์๋ ์ฆ์ ์ด๋ ๊ฐ์
๊ฐ์ ๋จ์ด๋ ๊ฐ์ด ๋์ฌ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ๊ทธ๋์ โ๋์ด๋ธโ, ์ฆ ํ์ค์ ๊ด๊ณ๋ฅผ ๋๋ฌด ์์ผํ๊ฒ ๋จ์ํํ๋ค๋ ์ด๋ฆ์ด ๋ถ์๋ค.
์์์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ๋ค.
์๋๋ ํผ์ฒ ์ ์ฒด๊ฐ ํจ๊ป ๋์ฌ ํ๋ฅ ์ ์์์ผ ํ๋ค. ํ์ง๋ง ์กฐ๊ฑด๋ถ ๋ ๋ฆฝ์ ๊ฐ์ ํ๋ฉด ๊ณฑ์ผ๋ก ๋๋ ์ ์๋ค.
๋ ๊ณฑ์ ๊ธฐํธ๋ค. ์ด ์ฌ๋ฌ ๊ฐ์ ๋ํ๋ผ๋ ๋ป์ด๋ผ๋ฉด, ๋ ์ฌ๋ฌ ๊ฐ์ ๊ณฑํ๋ผ๋ ๋ป์ด๋ค.
ํผ์ฒ๊ฐ ์ธ ๊ฐ๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ง์ด๋ค.
๋ณต์กํ ์ ์ฒด ํ๋ฅ ์ ํผ์ฒ๋ณ ํ๋ฅ ์ ๊ณฑ์ผ๋ก ๋ฐ๊ฟจ๋ค. ์ด ๋๋ถ์ ๊ณ์ฐ์ด ๋งค์ฐ ์ฌ์์ง๋ค.

ํฅ๋ฏธ๋ก์ด ์ ์ ํ๋ฆฐ ๊ฐ์ ์๋ ๋ถ๊ตฌํ๊ณ ๋์ด๋ธ ๋ฒ ์ด์ฆ๊ฐ ๊ฝค ์ ์๋ํ๋ค๋ ๊ฒ์ด๋ค. ๋ถ๋ฅ์์ ํ๋ฅ ๊ฐ์ด ์๋ฒฝํ ์ ํํ ํ์๋ ์๋ค. ์ด๋ ํด๋์ค ์ ์๊ฐ ๋ ํฐ์ง๋ง ์ ๋ง์ผ๋ฉด ๋๋ค. ํนํ ํ ์คํธ ๋ถ๋ฅ์์๋ ๋จ์ด๋ณ ์ ํธ๊ฐ ๊ฐํด์, ์ด ์์ผํ ๊ฐ์ ๋ง์ผ๋ก๋ ๊ฝค ์ข์ ๋ฒ ์ด์ค๋ผ์ธ์ด ๋๋ค.

๋์ด๋ธ ๋ฒ ์ด์ฆ์ ์ฅ์ ์ ๋ช ํํ๋ค.
- ํ์ต์ด ๋งค์ฐ ๋น ๋ฅด๋ค.
- ๋ฐ์ดํฐ๊ฐ ์ ์ด๋ ๋์ํ๋ค.
- ํผ์ฒ๊ฐ ๋ง์๋ ๊ณ์ฐ์ด ๋จ์ํ๋ค.
- ์คํธ ํํฐ, ๋ฌธ์ ๋ถ๋ฅ, ๊ฐ์ฑ ๋ถ์์ ๊ฐ๋ ฅํ ๋ฒ ์ด์ค๋ผ์ธ์ด ๋๋ค.
Play Golf ์์
์นดํ ๊ณ ๋ฆฌํ ํผ์ฒ์์ ๋์ด๋ธ ๋ฒ ์ด์ฆ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์์ ์์ ๋ก ๋ณด์. 14์ผ ๋์ ๋ ์จ์ ๊ณจํ ์ฌ๋ถ๋ฅผ ๊ธฐ๋กํ ๋ฐ์ดํฐ๊ฐ ์๋ค.
๋ด์ผ ๋ ์จ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ณจํ๋ฅผ ์น ์ง ์์ธกํด๋ณด์.
๋์ด๋ธ ๋ฒ ์ด์ฆ๋ Yes์ No์ ๋ํด ๊ฐ๊ฐ ๋ค์ ๊ฐ์ ๊ณ์ฐํ๋ค.
๊ฐ ํญ์ ์ด๋ ต์ง ์๋ค. ์๋ฅผ ๋ค์ด ๋ โ๊ณจํ๋ฅผ ์น ๋ ๋ค ์ค ๋ ์จ๊ฐ Sunny์๋ ๋น์จโ์ด๋ค.
์๋ ์ฝ๋๋ ๊ฐ์ ๊ณ์ฐ์ ๋ผํ๋ผ์ค ์ค๋ฌด๋ฉ๊ณผ ๋ก๊ทธ ํ๋ฅ ๋ก ๊ตฌํํ๋ค. ๋ผํ๋ผ์ค ์ค๋ฌด๋ฉ์ ๋ฐ๋ก ๋ค์ ์ ์์ ์ค๋ช ํ๋ค. ์ง๊ธ์ โ0์ด ๋๋ ํ๋ฅ ์ ๋ง๊ธฐ ์ํด ์์ ๊ฐ์ ์นด์ดํธ๋ฅผ ๋ํ๋คโ ์ ๋๋ก๋ง ๋ณด๋ฉด ๋๋ค.
import math
data = [ ("Sunny", "Hot", "High", "Weak", "No"), ("Sunny", "Hot", "High", "Strong", "No"), ("Overcast", "Hot", "High", "Weak", "Yes"), ("Rain", "Mild", "High", "Weak", "Yes"), ("Rain", "Cool", "Normal", "Weak", "Yes"), ("Rain", "Cool", "Normal", "Strong", "No"), ("Overcast", "Cool", "Normal", "Strong", "Yes"), ("Sunny", "Mild", "High", "Weak", "No"), ("Sunny", "Cool", "Normal", "Weak", "Yes"), ("Rain", "Mild", "Normal", "Weak", "Yes"), ("Sunny", "Mild", "Normal", "Strong", "Yes"), ("Overcast", "Mild", "High", "Strong", "Yes"), ("Overcast", "Hot", "Normal", "Weak", "Yes"), ("Rain", "Mild", "High", "Strong", "No"),]
features = ["Sunny", "Hot", "High", "Weak"]labels = sorted({row[-1] for row in data})values_by_col = [sorted({row[i] for row in data}) for i in range(4)]alpha = 1
log_scores = {}for label in labels: rows = [row for row in data if row[-1] == label] score = math.log(len(rows) / len(data))
for i, value in enumerate(features): count = sum(1 for row in rows if row[i] == value) prob = (count + alpha) / (len(rows) + alpha * len(values_by_col[i])) score += math.log(prob)
log_scores[label] = score
max_score = max(log_scores.values())weights = {k: math.exp(v - max_score) for k, v in log_scores.items()}normalizer = sum(weights.values())posteriors = {k: weights[k] / normalizer for k in weights}
for label in labels: print(f"{label:3s}: log-score={log_scores[label]:.3f}, posterior={posteriors[label]:.3f}")print("prediction:", max(posteriors, key=posteriors.get))No : log-score=-3.887, posterior=0.688Yes: log-score=-4.678, posterior=0.312prediction: No์ด ์์์์๋ No์ ์ ์๊ฐ ๋ ํฌ๋ค. ๋ฐ๋ผ์ ํด๋น ์กฐ๊ฑด์์๋ ๊ณจํ๋ฅผ ์น์ง ์๋ ์ชฝ์ผ๋ก ์์ธกํ๋ค.
๋์ด๋ธ ๋ฒ ์ด์ฆ์ ๋ ๊ฐ์ง ์ค์ ๋ฌธ์
๋์ด๋ธ ๋ฒ ์ด์ฆ๋ฅผ ๊ตฌํํ ๋ ๋ฐ๋์ ์ฑ๊ฒจ์ผ ํ ๋ฌธ์ ๊ฐ ๋ ๊ฐ์ง ์๋ค.
์ฒซ์งธ, zero-frequency ๋ฌธ์ ๋ค. ํ์ต ๋ฐ์ดํฐ์์ ์ด๋ค ํด๋์ค์ ํผ์ฒ ๊ฐ์ ์กฐํฉ์ด ํ ๋ฒ๋ ๋ฑ์ฅํ์ง ์์ผ๋ฉด ํ๋ฅ ์ด 0์ด ๋๋ค.
์๋ฅผ ๋ค์ด Yes์ธ ๋ ์ค Snow๊ฐ ํ ๋ฒ๋ ์์๋ค๋ฉด ๋ค์ ๊ฐ์ 0์ด๋ค.
๋์ด๋ธ ๋ฒ ์ด์ฆ๋ ํ๋ฅ ์ ๊ณฑํ๋ค. ๊ณฑ์ ์์ ํ๋๋ผ๋ 0์ด๋ฉด ์ ์ฒด๊ฐ 0์ด ๋๋ค.
์ด๋ฌ๋ฉด ๋๋จธ์ง ํผ์ฒ๊ฐ ์๋ฌด๋ฆฌ ๊ฐํ ์ ํธ๋ฅผ ์ค๋ ์ ์ฒด ์ ์๊ฐ 0์ด ๋์ด ๋ฒ๋ฆฐ๋ค.
ํด๊ฒฐ์ฑ ์ ๋ผํ๋ผ์ค ์ค๋ฌด๋ฉ(Laplace smoothing)์ด๋ค.
์์ด ๊ธธ์ง๋ง ํ๋ ์ผ์ ๋จ์ํ๋ค.
๋ถ์์๋ ํด๋น ๊ฐ์ด ๋์จ ํ์๋ฅผ ๋ฃ๋๋ค. ์ฌ๊ธฐ์ ๋ฅผ ๋ํ๋ค. ๋ณดํต ์ ์ด๋ค. ๊ทธ๋ฌ๋ฉด ํ ๋ฒ๋ ์ ๋์จ ๊ฐ๋ ์ต์ 1๋ฒ ๋์จ ๊ฒ์ฒ๋ผ ์ฒ๋ฆฌ๋๋ค.
๋ถ๋ชจ์๋ ํด๋์ค ์ ์ํ ๋ฐ์ดํฐ ์๋ฅผ ๋ฃ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฅํ ๊ฐ์ ๊ฐ์ ๋งํผ ๋ฅผ ๋ํด ์ ์ฒด ํ๋ฅ ํฉ์ด 1์ด ๋๋๋ก ๋ง์ถ๋ค.
๋์งธ, ์์น ์ธ๋ํ๋ก์ฐ(numerical underflow)๋ค. ์์ ํ๋ฅ ์ ๋ง์ด ๊ณฑํ๋ฉด ์ปดํจํฐ๊ฐ ๋๋ฌด ์์ ๊ฐ์ ํํํ์ง ๋ชปํด 0์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
ํด๊ฒฐ์ฑ ์ ๋ก๊ทธ ํ๋ฅ ์ด๋ค.
๋ ๋ชจ๋ ํด๋์ค์ ๊ณตํต์ผ๋ก ๋ค์ด๊ฐ๋ ์์๋ผ ๋น๊ตํ ๋๋ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋๋ค. ๊ทธ๋์ ๋ณดํต log_prior + log_likelihood๋ง ๋น๊ตํ๋ค.

๋ถ๋ฅ ๋ชจ๋ธ ํ๊ฐ
๋ชจ๋ธ์ ๋ง๋ค์์ผ๋ฉด ํ๊ฐํด์ผ ํ๋ค. ์ฌ๊ธฐ์ ๊ฐ์ฅ ํํ ํจ์ ์ ์ ํ๋(accuracy)๋ง ๋ณด๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด ํฌ๊ท๋ณ ์ง๋จ ๋ชจ๋ธ์ ๋ง๋ ๋ค๊ณ ํ์. ์ ์ฒด ์ธ๊ตฌ์ 1%๋ง ๋ณ์ ๊ฑธ๋ฆฐ๋ค. ์ด๋ ๋ชจ๋ ์ฌ๋์ ์ ์์ด๋ผ๊ณ ์์ธกํ๋ ๋ชจ๋ธ์ ์ ํ๋๋ 99%๋ค. ์ ํ๋๋ง ๋ณด๋ฉด ํ๋ฅญํด ๋ณด์ธ๋ค. ํ์ง๋ง ์ด ๋ชจ๋ธ์ ํ์๋ฅผ ๋จ ํ ๋ช ๋ ์ฐพ์ง ๋ชปํ๋ค. ๋ถ๋ฅ ๋ฌธ์ ์์๋ ์ด๋ค ์ข ๋ฅ์ ์ค๋ฅ๋ฅผ ๋ด๋์ง๊ฐ ์ ํ๋๋งํผ ์ค์ํ๋ค.
ํผ๋ ํ๋ ฌ
์ด์ง ๋ถ๋ฅ ๊ฒฐ๊ณผ๋ ๋ค ๊ฐ์ง๋ก ๋๋๋ค. ์ด๋ฅผ ํผ๋ ํ๋ ฌ(Confusion Matrix)๋ก ํํํ๋ฉด ์๋์ ๊ฐ๋ค.
| ์ค์ \ ์์ธก | ์์ฑ | ์์ฑ |
|---|---|---|
| ์์ฑ | True Positive (TP) | False Negative (FN) |
| ์์ฑ | False Positive (FP) | True Negative (TN) |
์์ ๋จ์ด๋ ์์ธก์ด ๋ง์๋์ง ๋ํ๋ธ๋ค. ๋ค์ ๋จ์ด๋ ๋ชจ๋ธ์ด ์์ธกํ ๋ผ๋ฒจ์ ๋ํ๋ธ๋ค.
False Positive๋ ๋ชจ๋ธ์ด ์์ฑ์ด๋ผ๊ณ ๋งํ์ง๋ง ํ๋ฆฐ ๊ฒฝ์ฐ๋ค. ์ ์ ๋ฉ์ผ์ ์คํธ์ด๋ผ๊ณ ํ๋จํ๋ ์ผ์ด ์ฌ๊ธฐ์ ํด๋นํ๋ค.
False Negative๋ ๋ชจ๋ธ์ด ์์ฑ์ด๋ผ๊ณ ๋งํ์ง๋ง ํ๋ฆฐ ๊ฒฝ์ฐ๋ค. ์ ํ์๋ฅผ ์ ์์ด๋ผ๊ณ ํ๋จํ๋ ์ผ์ด ์ฌ๊ธฐ์ ํด๋นํ๋ค.

์ ์ฉ์นด๋ default ์์๋ฅผ ๋ณด์. ๋ง ๋ช ์ ๊ณ ๊ฐ ์ค ์ค์ default ๊ณ ๊ฐ์ 333๋ช ์ด๋ค. ๋ชจ๋ธ์ ๊ฒฐ๊ณผ๊ฐ ๋ค์๊ณผ ๊ฐ๋ค๊ณ ํ์.
| ์ค์ \ ์์ธก | No | Yes |
|---|---|---|
| No | 9,644 | 23 |
| Yes | 252 | 81 |
์ ์ฒด ์ ํ๋๋ ๋๋ค. ํ์ง๋ง default ๊ณ ๊ฐ 333๋ช ์ค ๋ชจ๋ธ์ด ์ก์ ์ฌ๋์ 81๋ช ๋ฟ์ด๋ค.
tp, tn, fp, fn = 81, 9644, 23, 252
accuracy = (tp + tn) / (tp + tn + fp + fn)precision = tp / (tp + fp)recall = tp / (tp + fn)f1 = 2 * precision * recall / (precision + recall)fpr = fp / (fp + tn)fnr = fn / (fn + tp)
print(f"accuracy : {accuracy:.3%}")print(f"precision: {precision:.3%}")print(f"recall : {recall:.3%}")print(f"f1 : {f1:.3%}")print(f"FPR/FNR : {fpr:.3%} / {fnr:.3%}")accuracy : 97.250%precision: 77.885%recall : 24.324%f1 : 37.071%FPR/FNR : 0.238% / 75.676%์ ํ๋๋ 97.25%๋ค. ํ์ง๋ง ์ฌํ์จ์ 24.3%์ ๋ถ๊ณผํ๋ค. ์ง์ง default ๊ณ ๊ฐ ๋ค ๋ช ์ค ์ธ ๋ช ์ ๋์น๋ค. ์ ์ฉ์นด๋ ํ์ฌ ์ ์ฅ์์๋ ์ธ๋ชจ์๋ ๋ชจ๋ธ์ด๋ค.
๊ฐ ์งํ๋ ์๋ก ๋ค๋ฅธ ์ง๋ฌธ์ ๋ตํ๋ค.
์ ํ๋(Accuracy)๋ ์ ์ฒด ์ค ๋งํ ๋น์จ์ด๋ค.
์ ๋ฐ๋(Precision)๋ ์์ฑ์ด๋ผ๊ณ ์์ธกํ ๊ฒ ์ค ์ค์ ์์ฑ์ ๋น์จ์ด๋ค.
์ ๋ฐ๋๊ฐ ๋ฎ์ผ๋ฉด ์์ฑ์ด๋ผ๊ณ ์์ธกํ ๊ฒ ์ค ํ๋ฆฐ ์์ธก์ด ๋ง๋ค๋ ๋ป์ด๋ค. ์คํธ ํํฐ์์๋ ์ ๋ฐ๋๊ฐ ์ค์ํ๋ค. ์ ์ ๋ฉ์ผ์ ์คํธ์ผ๋ก ๋ณด๋ด๋ฉด ์ ๋๋ค.
์ฌํ์จ(Recall)์ ์ค์ ์์ฑ ์ค ๋ชจ๋ธ์ด ์ฐพ์๋ธ ๋น์จ์ด๋ค.
์ฌํ์จ์ด ๋ฎ์ผ๋ฉด ๋์น๋ ๊ฒ์ด ๋ง๋ค๋ ๋ป์ด๋ค. ์ ์ง๋จ์ด๋ ์ฌ๊ธฐ ํ์ง์ฒ๋ผ ๋์น๋ ๋น์ฉ์ด ํฐ ๋ฌธ์ ์์๋ ์ฌํ์จ์ด ์ค์ํ๋ค.
F1 ์ค์ฝ์ด๋ ์ ๋ฐ๋์ ์ฌํ์จ์ ์กฐํ ํ๊ท ์ด๋ค.
๋ ๊ฐ์ด ๋ชจ๋ ๋์์ผ F1๋ ๋๋ค. ํ์ชฝ์ด 0์ด๋ฉด F1๋ 0์ด๋ค.
์๊ณ๊ฐ๊ณผ ํธ๋ ์ด๋์คํ
ํ๋ฅ ๋ชจ๋ธ์ ๋ณดํต ๊ฐ์ ์ ์๋ฅผ ๋ธ๋ค. ์ด ์ ์๋ฅผ ์ค์ ํด๋์ค๋ก ๋ฐ๊พธ๋ ค๋ฉด ์๊ณ๊ฐ์ด ํ์ํ๋ค.
์๊ณ๊ฐ ๋ฅผ ๋ฎ์ถ๋ฉด ๋ ๋ง์ ์ํ์ ์์ฑ์ผ๋ก ๋ถ๋ฅํ๋ค. ์ฌํ์จ์ ์ฌ๋ผ๊ฐ์ง๋ง False Positive๋ ๋์ด๋๋ค. ์๊ณ๊ฐ์ ๋์ด๋ฉด ํ์คํ ๊ฒ๋ง ์์ฑ์ผ๋ก ๋ถ๋ฅํ๋ค. ์ ๋ฐ๋๋ ์ฌ๋ผ๊ฐ ์ ์์ง๋ง ๋์น๋ ์์ฑ์ด ๋์ด๋๋ค.

์์ ์์๋ก ํ์ธํด๋ณด์.
scores = [0.95, 0.82, 0.71, 0.63, 0.55, 0.44, 0.37, 0.22, 0.10, 0.03]y_true = [1, 0, 1, 1, 0, 0, 1, 0, 0, 0]
def counts_at(threshold): preds = [1 if s >= threshold else 0 for s in scores] tp = sum(p == 1 and y == 1 for p, y in zip(preds, y_true)) fp = sum(p == 1 and y == 0 for p, y in zip(preds, y_true)) fn = sum(p == 0 and y == 1 for p, y in zip(preds, y_true)) tn = sum(p == 0 and y == 0 for p, y in zip(preds, y_true))
precision = tp / (tp + fp) if tp + fp else 0 recall = tp / (tp + fn) if tp + fn else 0 return tp, fp, tn, fn, precision, recall
for threshold in [0.7, 0.5, 0.3]: tp, fp, tn, fn, precision, recall = counts_at(threshold) print(f"t={threshold:.1f}: TP={tp}, FP={fp}, FN={fn}, precision={precision:.2f}, recall={recall:.2f}")t=0.7: TP=2, FP=1, FN=2, precision=0.67, recall=0.50t=0.5: TP=3, FP=2, FN=1, precision=0.60, recall=0.75t=0.3: TP=4, FP=3, FN=0, precision=0.57, recall=1.00์๊ณ๊ฐ์ ๋ฎ์ถ์๋ก ๋ ๋ง์ ์์ฑ์ ์ก์๋ด์ง๋ง, ์๋ชป ์์ฑ์ผ๋ก ๋ถ๋ฅํ๋ ์ํ๋ ๋์ด๋๋ค. ๊ทธ๋์ ์ข์ ๋ถ๋ฅ ๋ชจ๋ธ์ ๋ง๋๋ ์ผ์ ๋ชจ๋ธ ํ์ต๋ง์ผ๋ก ๋๋์ง ์๋๋ค. ์๋น์ค ๋ชฉ์ ์ ๋ง๊ฒ ์๊ณ๊ฐ์ ์ ํด์ผ ํ๋ค.
ROC์ AUC
์๊ณ๊ฐ ํ๋๋ฅผ ์ ํด ๋๊ณ ๋ณด๋ ๋์ , ๋ชจ๋ ์๊ณ๊ฐ์์์ ์ฑ๋ฅ์ ํ ๋ฒ์ ๋ณด๋ ๋ฐฉ๋ฒ์ด ์๋ค. ROC ๊ณก์ (Receiver Operating Characteristic Curve)์ด๋ค.
ROC ๊ณก์ ์ ์๊ณ๊ฐ์ ์์ง์ด๋ฉด์ ๋ค์ ๋ ๊ฐ์ ๊ทธ๋ฆฐ๋ค.
TPR์ ์ฌํ์จ๊ณผ ๊ฐ๋ค. FPR์ ์ค์ ์์ฑ ์ค ์์ฑ์ผ๋ก ์๋ชป ๋ถ๋ฅํ ๋น์จ์ด๋ค. ์ข์ ๋ชจ๋ธ์ TPR์ด ๋๊ณ FPR์ด ๋ฎ๋ค. ๊ทธ๋์ ROC ๊ณก์ ์ด ์ผ์ชฝ ์์ ๊ฐ๊น์ธ์๋ก ์ข๋ค.
๊ณก์ ์๋ ๋ฉด์ ์ AUC(Area Under the Curve)๋ผ๊ณ ๋ถ๋ฅธ๋ค. AUC๋ ์์๋ก ๋ฝ์ ์์ฑ ์ํ์ด ์์๋ก ๋ฝ์ ์์ฑ ์ํ๋ณด๋ค ๋ ๋์ ์ ์๋ฅผ ๋ฐ์ ํ๋ฅ ๋ก ํด์ํ ์๋ ์๋ค. 1์ ๊ฐ๊น์ธ์๋ก ์ข๊ณ , 0.5๋ฉด ๋ฌด์์ ์์ธก๊ณผ ๋น์ทํ๋ค.

๋ค๋ง ํด๋์ค ๋ถ๊ท ํ์ด ์ฌํ๋ฉด ROC๊ฐ ์ง๋์น๊ฒ ์ข์ ๋ณด์ผ ์ ์๋ค. ์์ฑ์ด ์๋์ ์ผ๋ก ๋ง์ผ๋ฉด FPR์ด ์๊ฒ ์ ์ง๋๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์ ๋ฐ๋-์ฌํ์จ ๊ณก์ (PR curve)์ ํจ๊ป ๋ณด๋ ํธ์ด ๋ซ๋ค.
์ ๋ฆฌ์ ๋ค์ ๊ธ ์๊ณ
์ด๋ฒ ๊ธ์์๋ ๋ถ๋ฅ ๋ฌธ์ ๋ฅผ ๋ฒ ์ด์ฆ ๊ด์ ์์ ๋ค์ ๋ดค๋ค.
๋ฒ ์ด์ฆ ๋ถ๋ฅ๊ธฐ๋ ํ๊ท ์์ค์ ์ต์ํํ๋ ์ด์์ ๋ถ๋ฅ ๊ท์น์ด๋ค. 0-1 ์์ค์์๋ ์ฌํ ํ๋ฅ ์ด ๊ฐ์ฅ ํฐ ํด๋์ค๋ฅผ ๊ณ ๋ฅด๋ฉด ๋๋ค.
๋ฒ ์ด์ฆ ์ ๋ฆฌ๋ ๋ฅผ ๋ก ๋ฐ๊ฟ ์๊ฐํ๋ค. ๋ถ๋ฅ์์ ๊ฐ์ ๋ฅผ ๋๊ณ ๋น๊ตํ๋ฏ๋ก ๋ถ๋ชจ ๋ ๋์ ๋น๊ต์์ ์ฌ๋ผ์ง๋ค.
QDA๋ ํด๋์ค๋ง๋ค ๋ค๋ฅธ ๋ถ์ฐ๊ณผ ๊ณต๋ถ์ฐ์ ํ์ฉํ๋ค. ๊ทธ๋์ ํญ์ด ๋จ๊ณ , ๊ฒฐ์ ๊ฒฝ๊ณ๊ฐ ๊ณก์ ์ด ๋ ์ ์๋ค.
LDA๋ ๋ชจ๋ ํด๋์ค๊ฐ ๊ฐ์ ๋ถ์ฐ๊ณผ ๊ณต๋ถ์ฐ์ ๊ฐ์ง๋ค๊ณ ๊ฐ์ ํ๋ค. ์ด ๊ฐ์ ๋๋ถ์ ํญ์ด ์์๋์ด ๊ฒฐ์ ๊ฒฝ๊ณ๊ฐ ์ง์ ์ด ๋๋ค.
๋์ด๋ธ ๋ฒ ์ด์ฆ๋ ํด๋์ค๊ฐ ์ฃผ์ด์ก์ ๋ ํผ์ฒ๋ค์ด ๋ ๋ฆฝ์ด๋ผ๊ณ ๊ฐ์ ํ๋ค. ๊ฐ์ ์ ๋๊ฐ ํ๋ฆฌ์ง๋ง, ํผ์ฒ๊ฐ ๋ง์ ํ ์คํธ ๋ถ๋ฅ์์ ๋น ๋ฅด๊ณ ๊ฐํ ๋ฒ ์ด์ค๋ผ์ธ์ด ๋๋ค.
๋ถ๋ฅ ํ๊ฐ๋ ์ ํ๋๋ง์ผ๋ก ๋ถ์กฑํ๋ค. ํผ๋ ํ๋ ฌ, ์ ๋ฐ๋, ์ฌํ์จ, F1, ROC, AUC๋ฅผ ํจ๊ป ๋ด์ผ ๋ชจ๋ธ์ด ์ด๋ค ์ข ๋ฅ์ ์ค์๋ฅผ ํ๋์ง ์ ์ ์๋ค.
๋ค์ ๊ธ์ ๋ชจ๋ธ์ด ๋๋ฌด ์์ ๋ก์ธ ๋ ์๊ธฐ๋ ๋ฌธ์ , ์ฆ ๊ณผ์ ํฉ(overfitting)๊ณผ ๊ทธ ํด๊ฒฐ์ฑ ์ ๋ค๋ฃฌ๋ค. ๋ฐ์ดํฐ์ ์ง๋์น๊ฒ ๋ง์ถ ๋ชจ๋ธ์ ํ๋ จ ๋ฐ์ดํฐ์์๋ ์ข์ ๋ณด์ด์ง๋ง ์ ๋ฐ์ดํฐ์์๋ ์ฝ๊ฒ ๋ฌด๋์ง๋ค. ์ด์ ์ด ๋ฌธ์ ๋ฅผ ์ค์ด๋ ์ ๊ทํ์, ์ ๋ฐ์ดํฐ์์๋ ์ ์๋ํ๋ ์ผ๋ฐํ์ ๊ด์ ์ผ๋ก ๋์ด๊ฐ๋ค.
์ด๋ฏธ์ง ์ถ์ฒ: [ML/DL] Lecture 6. Classification II (Discriminant Analysis)