์ด๋ฒ์ Logistic Regression (๋ก์ง์คํฑ ํ๊ท)์ ๋ฐํ์ฌ ํ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
Logistic Regression (๋ก์ง์คํฑ ํ๊ท)
๋ก์ง์คํฑ ํ๊ท(Logistic Regression)๋ ์ฃผ๋ก ์ด์ง ๋ถ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํต๊ณ์ ๋ชจ๋ธ์ ๋๋ค.
์ ๋ ฅ๋ ๋ ๋ฆฝ ๋ณ์๋ค์ ์ ํ ๊ฒฐํฉ์ ํตํด ์ข ์ ๋ณ์(์ด์ง ๋ณ์)์ ๋ฐ์ ํ๋ฅ ์ ์์ธกํฉ๋๋ค.
๋ก์ง์คํฑ ํ๊ท์ ์ฃผ์ ํน์ง
- ๋ถ๋ฅ ์๊ณ ๋ฆฌ์ฆ: ์ด์ง ๋ถ๋ฅ ๋ฌธ์ ๋ฅผ ์ฃผ๋ก ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ๋ค์ค ํด๋์ค ๋ถ๋ฅ ๋ฌธ์ ์์๋ ํ์ฅํ ์ ์์ต๋๋ค.
- ํ๋ฅ ์ถ๋ ฅ: ์์ธก ๊ฒฐ๊ณผ๋ฅผ 0๊ณผ 1 ์ฌ์ด์ ํ๋ฅ ๊ฐ์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
- ์ ํ ํ๊ท์์ ์ฐจ์ด์ : ์ ํ ํ๊ท๋ ์ฐ์์ ์ธ ๊ฐ์ ์์ธกํ์ง๋ง, ๋ก์ง์คํฑ ํ๊ท๋ ์ด์ง ๊ฐ์ ์์ธกํฉ๋๋ค.
๋ก์ง์คํฑ ํ๊ท์ ๊ธฐ๋ณธ ์๋ฆฌ
๊ทธ๋ฌ๋ฉด, Logistic Regression (๋ก์ง์คํฑ ํ๊ท)์ ๊ธฐ๋ณธ ์๋ฆฌ๋ ๋ฌด์์ด ์์๊น์? ํ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
1. ์ ํ ๋ชจ๋ธ
๋ก์ง์คํฑ ํ๊ท๋ ์ ๋ ฅ ๋ณ์ (X)์ ๊ฐ์ค์น (W)์ ์ ํ ๊ฒฐํฉ์ ํตํด ์์ธก ๊ฐ์ ๊ณ์ฐํฉ๋๋ค. ์ด ์ ํ ๊ฒฐํฉ์ ์๋์ ์์๊ณผ ๊ฐ์ด ํํ๋ฉ๋๋ค.
์ฌ๊ธฐ์ (b)๋ ํธํฅ(bias)์ ๋๋ค. ์ด (z) ๊ฐ์ ๋ก์ง์คํฑ ํจ์์ ์ ๋ ฅ๋์ด ํ๋ฅ ๋ก ๋ณํ๋ฉ๋๋ค.
2. ๋ก์ง์คํฑ ํจ์ (์๊ทธ๋ชจ์ด๋ ํจ์)
์ ํ ๊ฒฐํฉ์ ๊ฒฐ๊ณผ (z)๋ฅผ ๋ก์ง์คํฑ ํจ์์ ์ ์ฉํ์ฌ 0๊ณผ 1 ์ฌ์ด์ ํ๋ฅ ๊ฐ์ ๊ณ์ฐํฉ๋๋ค. ๋ก์ง์คํฑ ํจ์๋ ์๋์ ์์๊ณผ ๊ฐ์ด ์ ์๋ฉ๋๋ค.
์ด ํจ์๋ ์ ๋ ฅ ๊ฐ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ถ๋ ฅ์ด 0์์ 1๋ก ๋ถ๋๋ฝ๊ฒ ๋ณํํ๋ S์ ํํ์ ๊ณก์ ์ ๊ฐ์ง๋๋ค.
3. Decision Border (๊ฒฐ์ ๊ฒฝ๊ณ)
์ถ๋ ฅ ํ๋ฅ ์ด 0.5๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฅํฉ๋๋ค. ์ฆ, ์ถ๋ ฅ ํ๋ฅ ์ด 0.5 ์ด์์ด๋ฉด ์์ฑ ํด๋์ค(1)๋ก, 0.5 ๋ฏธ๋ง์ด๋ฉด ์์ฑ ํด๋์ค(0)๋ก ๋ถ๋ฅํฉ๋๋ค.
์ด ๊ฒฐ์ ๊ฒฝ๊ณ๋ ์ ํ์ ์ผ๋ก ์ค์ ๋์ง๋ง, ๋ฐ์ดํฐ์ ํน์ฑ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์กฐ์ ๋ ์ ์์ต๋๋ค.
๋ก์ง์คํฑ ํ๊ท์ ์ฅ์ , ๋จ์
๋ก์ง์คํฑ ํ๊ท์ ์ฅ์
- ํด์ ์ฉ์ด์ฑ: ๋ก์ง์คํฑ ํ๊ท์ ์ถ๋ ฅ์ด ํ๋ฅ ์ด๊ธฐ ๋๋ฌธ์, ๊ฒฐ๊ณผ๋ฅผ ํด์ํ๋ ๊ฒ์ด ์ฉ์ดํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์ ๋ ฅ์ ๋ํด 0.8์ ํ๋ฅ ๋ก ์์ฑ ํด๋์ค์ ์ํ๋ค๊ณ ํด์ํ ์ ์์ต๋๋ค.
- ํจ์จ์ฑ: ๊ณ์ฐ ๋น์ฉ์ด ๋ฎ๊ณ , ๋๋์ ๋ฐ์ดํฐ์ ์์๋ ๋น ๋ฅด๊ฒ ํ์ตํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋ฐ์ดํฐ๊ฐ ๋ง์ ๋ ์ ๋ฆฌํฉ๋๋ค.
๋ก์ง์คํฑ ํ๊ท์ ๋จ์
- ์ ํ ๊ฒฐ์ ๊ฒฝ๊ณ: ๋ก์ง์คํฑ ํ๊ท๋ ์ ๋ ฅ ๋ณ์์ ์ข ์ ๋ณ์ ๊ฐ์ ๊ด๊ณ๊ฐ ์ ํ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋น์ ํ ๋ฐ์ดํฐ์์๋ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ, ๋คํญ ํ๊ท๋ ์ปค๋ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํ์ํ ์ ์์ต๋๋ค.
- ์ด์ง ๋ถ๋ฅ ์ ํ: ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ง์คํฑ ํ๊ท๋ ์ด์ง ๋ถ๋ฅ์ ์ ํฉํฉ๋๋ค. ๋ค์ค ํด๋์ค ๋ถ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ํํธ๋งฅ์ค ํ๊ท์ ๊ฐ์ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ํ์ฅํ ์ ์์ต๋๋ค. ๋ค์ค ํด๋์ค ๋ก์ง์คํฑ ํ๊ท๋ ๊ฐ ํด๋์ค์ ๋ํด ๋ณ๋์ ๋ก์ง์คํฑ ํจ์๋ฅผ ํ์ตํ์ฌ ๋ค์ค ํด๋์ค๋ฅผ ๋์์ ์ฒ๋ฆฌํฉ๋๋ค.
๋ก์ง์คํฑ ํ๊ท์ ํ์ฉ
๋ก์ง์คํฑ ํ๊ท๋ ์๋ฃ ์ง๋จ, ๋ง์ผํ ๋ถ์, ์ ์ฉ ์ ์ ์์ธก ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋ฉ๋๋ค.
์ด ๋ชจ๋ธ์ ๊ฐ๋จํ๋ฉด์๋ ํจ๊ณผ์ ์ธ ์์ธก ์ฑ๋ฅ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์, ๋ง์ ๋ฐ์ดํฐ ๊ณผํ์์ ๋ถ์๊ฐ๋ค์ด ์ ํธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ก์ง์คํฑ ํ๊ท Example Code
๊ทธ๋ฌ๋ฉด, ๋ก์ง์คํฑ ํ๊ท (Logistic Regression)๋ ์ด๋ป๊ฒ ์ฝ๋๋ฅผ ์์ฑํด์ ์ฌ์ฉํ๋ ๊ฑธ๊น์? ํ๋ฒ ์์ ์ฝ๋๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.
# ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, ConfusionMatrixDisplay
import matplotlib.pyplot as plt
# ์ ๋ฐฉ์ ๋ฐ์ดํฐ์
๋ก๋
cancer = load_breast_cancer()
X, y = cancer.data, cancer.target
# ๋ฐ์ดํฐ์
์ ํ์ต ์ธํธ์ ํ
์คํธ ์ธํธ๋ก ๋ถํ
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# ๋ฐ์ดํฐ ํ์คํ
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# ๋ก์ง์คํฑ ํ๊ท ๋ชจ๋ธ ํ์ต
log_reg = LogisticRegression(max_iter=10000)
log_reg.fit(X_train, y_train)
# ์์ธก ๋ฐ ํ๊ฐ
y_pred = log_reg.predict(X_test)
print(classification_report(y_test, y_pred))
precision recall f1-score support
0 0.98 0.95 0.96 43
1 0.97 0.99 0.98 71
accuracy 0.97 114
macro avg 0.97 0.97 0.97 114
weighted avg 0.97 0.97 0.97 114
# ํผ๋ ํ๋ ฌ ์๊ฐํ
ConfusionMatrixDisplay.from_estimator(log_reg, X_test, y_test)
plt.title("Logistic Regression Confusion Matrix")
plt.show()
'๐ Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ML] Decision Tree (๊ฒฐ์ ํธ๋ฆฌ) (0) | 2024.08.12 |
---|---|
[ML] Support Vector Machine (SVM, ์ํฌํธ ๋ฒกํฐ ๋จธ์ ) (0) | 2024.08.11 |
[ML] K-Nearest Neighbors, K-NN (K-์ต๊ทผ์ ์ด์) (0) | 2024.08.07 |
[ML] Supervised Learning (์ง๋ํ์ต) (0) | 2024.08.06 |
[ML] Model์ ํ์ต๊ณผ ํ๊ฐ (0) | 2024.08.02 |