Notice
Recent Posts
Recent Comments
Link
ยซ   2025/07   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

project:eve

23.01.28 Logistic Regression๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ๋ณธ๋ฌธ

Daily

23.01.28 Logistic Regression๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€

eveee 2023. 1. 29. 00:08

Studying here๐Ÿ  ์ฝ”์‚ฌ์ด์–ดํ‹ฐ ์„œ์šธ์ˆฒ

 

1) ์ •์˜

์ข…์†๋ณ€์ˆ˜๊ฐ€ ๋ฒ”์ฃผํ˜•์ธ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ํšŒ๊ท€ ๋ฐฉ๋ฒ•. ์ƒ˜ํ”Œ์ด ํŠน์ • ์ข…์†๋ณ€์ˆ˜์— ์†ํ•  ํ™•๋ฅ ์„ ์ถ”์ •ํ•œ๋‹ค! 
์˜ˆ๋ฅผ ๋“ค์–ด ์นด๋“œ ๋Œ€๊ธˆ์„ ์—ฐ์ฒดํ• ์ง€(r) ๋˜๋Š” ์ž…๊ธˆํ•  ํ™•๋ฅ (1-r)์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ธฐ์กด์˜ ์„ ํ˜• ํšŒ๊ท€ ํ•จ์ˆ˜์™€ ๋‹ค๋ฅด๊ฒŒ X๊ฐ’์„ ๋Œ€์ž…ํ–ˆ์„ ๋•Œ 0~1 ๊ฐ’์ด ๋‚˜์˜ค๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด ํ•จ์ˆ˜์‹์ด ํ•„์š”ํ•˜๊ณ , ์ฃผ๋กœ ๋กœ์ง€์Šคํ‹ฑ ํ•จ์ˆ˜๋‚˜ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์„ ํ˜•ํšŒ๊ท€์™€ ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€์˜ ์ฐจ์ด

 

2) ์Šน์‚ฐ๋น„ 

์ฑ…์—๋Š” '์‹คํŒจํ•  ํ™•๋ฅ ์— ๋น„ํ•ด ์„ฑ๊ณตํ•  ํ™•๋ฅ ' ์ด๋ผ๊ณ  ๋‚˜์™€ ์žˆ๋Š”๋ฐ ํ‘œํ˜„์ด ์ข€ ์–ด๋ ต๋‹ค.. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ฑ๊ณตํ•  ํ™•๋ฅ ์ด p๋ผ๊ณ  ํ•˜๋ฉด p/(1-p)์ด๋‹ค.

๋งŒ์•ฝ ๊ณ ๊ฐ์ด ์นด๋“œ ๋Œ€๊ธˆ์„ ๋‚ฉ์ž…ํ•  ํ™•๋ฅ ์ด 1/3, ์—ฐ์ฒดํ•  ํ™•๋ฅ ์ด 2/3์ด๋ผ๋ฉด ์—ฐ์ฒด odds๋Š” 1/2๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ’์€ '๊ณ ๊ฐ์ด 2๋ฒˆ ์™„๋‚ฉ(์„ฑ๊ณต)์„ ํ•˜๊ณ  1๋ฒˆ ์—ฐ์ฒด(์‹คํŒจ)๋ฅผ ํ•œ๋‹ค' ๊ณ  ํ•ด์„ํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์Šน์‚ฐ๋น„๊ฐ€ ๋†’์œผ๋ฉด ์—ฐ์ฒด(์‹คํŒจ) ํ™•๋ฅ ์ด ๋†’์•„์ง€๊ณ  ์Šน์‚ฐ๋น„๊ฐ€ ๋‚ฎ์œผ๋ฉด ๋‚ฉ์ž…(์„ฑ๊ณต) ํ™•๋ฅ ์ด ๋†’์•„์ง„๋‹ค. 

(*P(Y=1|X) ํ™•๋ฅ ๊ฐ’์ด 1์— ๊ฐ€๊นŒ์›Œ์งˆ์ˆ˜๋ก Odds๊ฐ€ ๋ฌดํ•œ๋Œ€๋กœ ๋ฐœ์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ”์œ„์— ์ œ์•ฝ์ด ์žˆ๋‹ค -> ์ด๊ฒŒ ๋ญ” ๋ง์ผ๊นŒ.. ์•”ํŠผ ์ด๋Ÿฐ ์ด์œ ๋กœ odds์— ๋กœ๊ทธ ํ•จ์ˆ˜๋ฅผ ์”Œ์›Œ์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.)

๋ญ ์ด๋ ‡๊ฒŒ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.......

์Šน์‚ฐ๋น„๊ฐ€ ํ™•๋ฅ ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ด๋‹ˆ ์ด๊ฒƒ์„ ์ด์šฉํ•ด์„œ P(X) ์ฆ‰ ์ข…์†๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์„ ํ˜• ํ•จ์ˆ˜์‹์„ ์„ธ์šฐ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋งˆ์ง€๋ง‰ ์นธ์— ์žˆ๋Š” ํ•จ์ˆ˜์‹์ด ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ๋ชจ๋ธ ์‹.

 

3) ๋ชจ๋ธ ํ•™์Šต

 

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ๋ชจ๋ธ์˜ ํ•™์Šต ๋ชฉ์ ์€ ์–‘์„ฑ ์ƒ˜ํ”Œ(y=1, ์„ฑ๊ณต)์— ๋Œ€ํ•ด์„œ๋Š” ๋†’์€ ํ™•๋ฅ ์„ ์ถ”์ •ํ•˜๊ณ , ์Œ์„ฑ ์ƒ˜ํ”Œ(y=0, ์‹คํŒจ)์— ๋Œ€ํ•ด์„œ๋Š” ๋‚ฎ์€ ํ™•๋ฅ ์„ ์ถ”์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋ฉฐ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ '์ตœ๋Œ€ ์šฐ๋„ ์ถ”์ •๋ฒ•' ์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

์šฐ๋„(Likelyhood)??  ์šฐ๋„๋Š” ํ™•๋ฅ ๊ณผ ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐœ๋…์ธ๋ฐ, ํ™•๋ฅ ์ด ๋ชจ์ˆ˜๋กœ๋ถ€ํ„ฐ ํŠน์ • ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฐ€๋Šฅ์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์šฐ๋„๋Š” ์ด๋ฏธ ์ฃผ์–ด์ง„ ํ˜„์ƒ์„ ๋ณด๊ณ  ์ด ํ˜„์ƒ์ด ๊ฐ€์žฅ ๋†’๊ฒŒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ์ˆ˜๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ฆ‰ ์ตœ๋Œ€ ์šฐ๋„ ์ถ”์ •๋ฒ•์€ ํŠน์ • ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๊ธฐ ์œ„ํ•œ ์ตœ์ ์˜ ๋ชจ์ˆ˜ ํ˜•ํƒœ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

์ตœ๋Œ€ ์šฐ๋„ ์ถ”์ •๋ฒ•์€ ์„ฑ๊ณต์„ 1, ์‹คํŒจ๋ฅผ 0์œผ๋กœ ๋Œ€์‘์‹œํ‚ค๋Š” ๋‘ ๊ฐ€์ง€ ๊ฒฐ๊ณผ๋งŒ์„ ๊ฐ€์ง€๋Š” ๋ฒ ๋ฅด๋ˆ„์ด ํ™•๋ฅ ๋ถ„ํฌ์™€ ์—ฐ๊ด€์ง€์–ด ๋งŒ๋“  ์šฐ๋„ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํšŒ๊ท€๊ณ„์ˆ˜๋ฅผ ์ถ”์ •ํ•˜๋Š” ์‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด ์‹์œผ๋กœ ๊ตฌํ•œ ํšŒ๊ท€๊ณ„์ˆ˜๋ฅผ ๋Œ€์ž…ํ•˜๋ฉด ์—ฐ์ฒด๋ฅผ ํ–ˆ๋˜ ์‚ฌ๋žŒ์— ๋Œ€ํ•ด์„œ๋Š” 1์— ๊ฐ€๊น๊ฒŒ, ์—ฐ์ฒด๋ฅผ ํ•˜์ง€ ์•Š์•˜๋˜ ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•ด์„œ๋Š” 0์— ๊ฐ€๊นŒ์šด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

4) ๊ฒฐ๋ก 

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ๋ชจ๋ธ์€ ์ž…๋ ฅ๋œ ๋…๋ฆฝ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ฌ ํ™•๋ฅ ์„ ๊ฐ๊ฐ ๊ณ„์‚ฐํ•˜๊ณ  ํ™•๋ฅ ์ด 50%๊ฐ€ ๋„˜๋Š” ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ์˜ˆ์ธกํ•œ๋‹ค.

 

 

5) ์ฝ”๋“œ๋กœ ์งœ๋ณด๊ธฐ

๋ฐ์ดํ„ฐ๋Š” ์ผ€๊ธ€์˜ ์‹ ์ฒด ๋Šฅ๋ ฅ์— ๋”ฐ๋ฅธ ๋“ฑ๊ธ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

import pandas as pd
import numpy as np

body=pd.read_csv('/Users/eve/Downloads/jupyter notebook/files/bodyPerformance.csv')
body.info()

๊ฐ„๋‹จํ•˜๊ฒŒ ์ „์ฒ˜๋ฆฌ ํ•˜๊ธฐ. ํšŒ๊ท€๋ชจํ˜•์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ object ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์น˜ํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ค„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์ข…์†๋ณ€์ˆ˜์ธ class๋Š” ์›๋ž˜๋Š” ์ด 4๊ฐ€์ง€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ(A, B, C, D) ์—ฌ๊ธฐ์„œ๋Š” ๋กœ์ง€์Šคํ‹ฑํšŒ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‘๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ–ˆ๋‹ค.

body['gender']=np.where(body['gender']=='M', 1, 0)
body['class']=np.where(body['class']=='A', 1, 0)

 

 

๊ทธ๋ฆฌ๊ณ  ํ›ˆ๋ จ/ ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆˆ๋‹ค. LogisticRegression ์ •์˜ํ•ด ์ฃผ๊ณ  ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์ ํ•ฉ์‹œ์ผœ์ค€๋‹ค. 

๋ชจ๋ธ์˜ predict_proba ํ•จ์ˆ˜์— ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ข…์†๋ณ€์ˆ˜์˜ ์ˆ˜๋งŒํผ ์–ด๋””์— ์†ํ• ์ง€ ํ™•๋ฅ ์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ง€๊ธˆ ๋ฐ์ดํ„ฐ๋Š” ๋‘๊ฐ€์ง€ ๊ฒฐ๊ณผ๊ฐ’ 0, 1๋กœ ๋ถ„๋ฅ˜ํ–ˆ์œผ๋ฏ€๋กœ 0์ผ ํ™•๋ฅ , 1์ผ ํ™•๋ฅ  ๋‘๊ฐ€์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

decision_function(๊ฒฐ์ •ํ•จ์ˆ˜)์€ hyperplane(๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€์—์„œ๋Š” x=0)์„ ์ค‘์‹ฌ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ’์„ ํŒ๋ณ„ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

* ๊ฒฐ์ •ํ•จ์ˆ˜์˜ ๊ฐ’ ๋ถ€ํ˜ธ๋งŒ ๋ด๋„ ์„ฑ๊ณต/์‹คํŒจ๋ฅผ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
์„ฑ๊ณตํ•  ํ™•๋ฅ ์ด 0.5 ์ดˆ๊ณผ์ด๋ฉด, ๊ฒฐ์ •ํ•จ์ˆ˜๋Š” ์–‘์ˆ˜๊ฐ€ ๋œ๋‹ค.
์„ฑ๊ณตํ•  ํ™•๋ฅ ์ด 0.5 ๋ฏธ๋งŒ์ด๋ฉด, ๊ฒฐ์ •ํ•จ์ˆ˜๋Š” ์Œ์ˆ˜๊ฐ€ ๋œ๋‹ค.
์„ฑ๊ณตํ•  ํ™•๋ฅ ์ด 0.5์ด๋ฉด, ๊ฒฐ์ •ํ•จ์ˆ˜๋Š” 0์ด ๋œ๋‹ค.
X = body.drop(columns=['class'])
Y = body['class']

from sklearn.model_selection import train_test_split

train_x, test_x, train_y, test_y = train_test_split(X, Y, stratify=Y, test_size=0.3, random_state=1)

logr=LogisticRegression()

logr.fit(train_x, train_y)

proba = pd.DataFrame(logr.predict_proba(train_x))
cs=logr.decision_function(train_x)

 

A๊ฐ€ ์•„๋‹ ํ™•๋ฅ (1-p), A์ผ ํ™•๋ฅ (p), ๊ฒฐ์ •ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์œผ๋กœ ์ƒ์„ฑํ–ˆ๋‹ค.

df_result = pd.concat([proba, pd.DataFrame(cs)], axis=1)
df_result.columns = ['Not A', 'A', 'Decision_function']

df_result.sort_values(['Decision_function'], inplace=True)

df_result.reset_index(inplace=True, drop=True)
df_result

๋ฐ์ดํ„ฐ๋ฅผ ์‚ดํŽด๋ณด๋ฉด A๊ฐ€ ์•„๋‹ ํ™•๋ฅ ์ด ์šฐ์„ธํ•œ ๊ฒฝ์šฐ์—๋Š” ๊ฒฐ์ •ํ•จ์ˆ˜์˜ ๋ถ€ํ˜ธ๊ฐ€ ์Œ์ˆ˜, A์ผ ํ™•๋ฅ ์ด ์šฐ์„ธํ•œ ๊ฒฝ์šฐ๋Š” ์–‘์ˆ˜์ธ ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ž˜ํ”„๋กœ ํ‘œ์‹œํ•˜๋ฉด ๋” ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

fig = plt.figure()
plt.plot(df_result['Decision_function'], df_result['A'], '-', label='A')
plt.plot(df_result['Decision_function'], df_result['Not A'], '-', label='Not A')
plt.legend()

 

 

๋‹ค์Œ์€ ์ด ๋ชจ๋ธ์— ๋Œ€ํ•ด ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•ด ๋ณด์ž. ์›๋ž˜ ํšŒ๊ท€๋ชจ๋ธ์˜ ์„ฑ๋Šฅํ‰๊ฐ€๋Š” MAE, MSE, RMSE ๋“ฑ์œผ๋กœ ํ•˜์ง€๋งŒ ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€๋ชจ๋ธ์€ ๋ถ„๋ฅ˜๊ธฐ์˜ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ์ธ์ง€ ๋ถ„๋ฅ˜๋ชจ๋ธ์˜ ์„ฑ๋Šฅํ‰๊ฐ€์ธ ์˜ค์ฐจํ–‰๋ ฌ, ์ •ํ™•๋„, f1 score ๋“ฑ์œผ๋กœ ํ‰๊ฐ€ํ•œ๋‹ค.

 

๋จผ์ € ํ‰๊ฐ€ ์ง€ํ‘œ์˜ ๋œป๋ถ€ํ„ฐ ์จ๋ณด์ž

 

์˜ค์ฐจํ–‰๋ ฌ : ์‹ค์ œ๊ฐ’๊ณผ ์˜ˆ์ธก๊ฐ’์ด ๊ต์ฐจํ•˜๋Š” ๊ฐ’์„ ํ–‰๋ ฌ ํ˜•์‹์œผ๋กœ ํ‘œํ˜„
์ •ํ™•๋„ : ์ „์ฒด ์ค‘ ๋ฐ”๋ฅด๊ฒŒ ์˜ˆ์ธกํ•œ ๋น„์œจ
์ •๋ฐ€๋„ : positive๋ผ๊ณ  ์˜ˆ์ธกํ•œ ๊ฒƒ ์ค‘ ์‹ค์ œ๋กœ positive์ธ ๋น„์œจ (TP/TP+FP)
์žฌํ˜„์œจ : ์‹ค์ œ๋กœ positive์ธ ๊ฒƒ ์ค‘ positive๋ผ๊ณ  ์˜ˆ์ธกํ•œ ๋น„์œจ (TP/TP+FN)
f1-score : ์ •๋ฐ€๋„์™€ ์žฌํ˜„์œจ์˜ ์กฐํ™”ํ‰๊ท ( 2 * (precision * recall)/ (precision + recall))
(* ์‹ค๋ฌด์—์„œ๋Š” ์žฌํ˜„์œจ์„ ๋” ์ค‘์š”ํ•˜๊ฒŒ ์—ฌ๊ธด๋‹ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•” ์ง„๋‹จ ์—ฌ๋ถ€๋ฅผ ์˜ˆ์ธกํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, ์•”์„ ์ง„๋‹จํ•˜์ง€ ๋ชปํ•ด ์ฃฝ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ œ์ผ ์น˜๋ช…์ ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‚˜๋Š” ๋‘˜ ๋‹ค ์ค‘์š”ํ•ด ๋ณด์ด๋Š”๋ฐ... ์ •๋ฐ€๋„๋Š” ์ข€ ํผํฌ๋จผ์Šค ์ˆ˜์น˜ ๊ฐ™์€ ๋А๋‚Œ์ด๋ผ๋ฉด ์žฌํ˜„์œจ์€ ๋ณด์žฅ ํ™•๋ฅ  ๊ฐ™์€ ๋А๋‚Œ)

์ฒ˜์Œ ์˜ค์ฐจํ–‰๋ ฌ์„ ์ž˜๋ชป ๋ณด๋Š” ๋ฐ”๋žŒ์— ์ˆ˜์น˜๊ฐ€ ์ด์ƒํ•˜๊ฒŒ ๋‚˜์™€์„œ ์—„์ฒญ ํ—ค๋งธ๋‹คใ… ใ…  ์‹ค์ œ์™€ ์˜ˆ์ธก ํด๋ž˜์Šค์˜ ์œ„์น˜, negative์™€ positive์˜ ์œ„์น˜๋ฅผ ์ž˜ ๊ธฐ์–ตํ•ด ๋‘์–ด์•ผ ํ•œ๋‹ค.

from sklearn.metrics import accuracy_score, confusion_matrix, precision_score, recall_score, f1_score


test_cm = confusion_matrix(test_y, pred)

test_acc = accuracy_score(test_y, pred)            
test_pre = round(precision_score(test_y, pred), 2) 
test_rc = round(recall_score(test_y, pred), 2)     
f1_score = f1_score(test_y, pred)

 

๋‹ค์Œ์€ ROC๊ทธ๋ž˜ํ”„์™€ AUC score๋ฅผ ๊ตฌํ•ด๋ณธ๋‹ค.

 

ROC๊ทธ๋ž˜ํ”„๋Š” TPR(ture positive rate)์™€ FPR(false positive)์˜ ๋ถ„ํฌ๋ฅผ ์„ ํ˜• ๊ทธ๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๊ณ  AUC(area under ROC curve) score๋Š” ROC๊ทธ๋ž˜ํ”„์˜ ๋ฉด์ ์œผ๋กœ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. 1์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ์ข‹์€ ๊ฒƒ์ด๋‹ค

from sklearn.metrics import plot_roc_curve, roc_auc_score

plot_roc_curve(logr, test_x, test_y)

pred_proba = logr.predict_proba(test_x)

print(roc_auc_score(test_y, pred_proba[:, 1])) #0.9162394879671759

๊ณก์„ ์ด ์™ผ์ชฝ ์œ„์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ์ข‹์€ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค

๊ทธ๋ž˜ํ”„์— ๊ฐ™์ด ํ‘œ์‹œ๋œ AUC score๋Š” 0.92์ ์œผ๋กœ ์ด ๋ชจ๋ธ์€ ์—„์ฒญ ๋†’์€ ์ •ํ™•๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋˜ roc_auc_score ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด AUC score๋งŒ ๋”ฐ๋กœ ๊ตฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ž…๋ ฅ ๋ณ€์ˆ˜๋กœ ์‹ค์ œ๊ฐ’๊ณผ ์˜ˆ์ธก๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค(์ฝ”๋“œ ์ฐฝ์—์„œ๋Š” proba ๊ฐ’์—์„œ ๋‘๋ฒˆ์งธ ์—ด ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ํ–ˆ์Œ)