Skip to Content

04. ์ดํƒˆ ์˜ˆ์ธก (Churn Prediction)

๋จธ์‹ ๋Ÿฌ๋‹40๋ถ„

1. ์ดํƒˆ(Churn)์ด๋ž€?

๊ณ ๊ฐ์ด ์„œ๋น„์Šค๋ฅผ ๊ทธ๋งŒ๋‘๋Š” ๊ฒƒ์„ **์ดํƒˆ(Churn)**์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‹ ๊ทœ ๊ณ ๊ฐ์„ ์œ ์น˜ํ•˜๋Š” ๋น„์šฉ์€ ๊ธฐ์กด ๊ณ ๊ฐ์„ ์œ ์ง€ํ•˜๋Š” ๋น„์šฉ๋ณด๋‹ค 5~25๋ฐฐ ๋” ๋น„์Œ‰๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ดํƒˆํ•  ๊ฒƒ ๊ฐ™์€ ๊ณ ๊ฐ์„ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ•˜๊ณ , ํ˜œํƒ์„ ์ฃผ์–ด ์žก๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

2. ๋ฐ์ดํ„ฐ ์ค€๋น„ ๋ฐ ์ „์ฒ˜๋ฆฌ

์ดํƒˆ ์˜ˆ์ธก์€ Classification(๋ถ„๋ฅ˜) ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ดํƒˆ ์—ฌ๋ถ€(1: ์ดํƒˆ, 0: ์œ ์ง€)๋ฅผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค.

โ“ ๋ฌธ์ œ 1: ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ ๋ณ€ํ™˜

Q. โ€˜Priorityโ€™์™€ โ€˜Channelโ€™ ์ปฌ๋Ÿผ์„ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์„ธ์š”. (Label Encoding ๋“ฑ ํ™œ์šฉ)

์ด๋ก  ์ฐธ๊ณ : Classification & NLP Concepts

from sklearn.preprocessing import LabelEncoder import pandas as pd # ๋ฐ์ดํ„ฐ ๋กœ๋“œ (๊ฐ€์ƒ ๋ฐ์ดํ„ฐ) df = pd.DataFrame({ 'user_id': [1, 2, 3, 4], 'priority': ['High', 'Low', 'Medium', 'High'], 'channel': ['Email', 'Chat', 'Email', 'Phone'], 'churned': [1, 0, 0, 1] }) # Label Encoding le = LabelEncoder() df['priority_encoded'] = le.fit_transform(df['priority']) # ๊ฒฐ๊ณผ ํ™•์ธ print(df[['priority', 'priority_encoded']])
์‹คํ–‰ ๊ฒฐ๊ณผ
priority  priority_encoded
0     High                 0
1      Low                 1
2   Medium                 2
3     High                 0

3. ๋ชจ๋ธ ํ•™์Šต (Logistic Regression)

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€๋Š” ์ดํƒˆ ํ™•๋ฅ (0~1)์„ ์•Œ๋ ค์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ผ€ํŒ…์— ํ™œ์šฉํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.

โ“ ๋ฌธ์ œ 2: ๋ชจ๋ธ ํ•™์Šต ๋ฐ ์ค‘์š” ๋ณ€์ˆ˜ ํ™•์ธ

Q. ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ค๊ณ , ์–ด๋–ค ๋ณ€์ˆ˜๊ฐ€ ์ดํƒˆ์— ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€(Coefficient) ํ™•์ธํ•˜์„ธ์š”.

from sklearn.linear_model import LogisticRegression # X(Feature)์™€ y(Target) ๋ถ„๋ฆฌ X = df[['priority_encoded']] # ์˜ˆ์‹œ๋ฅผ ์œ„ํ•ด 1๊ฐœ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ y = df['churned'] # ๋ชจ๋ธ ํ•™์Šต model = LogisticRegression() model.fit(X, y) # ํšŒ๊ท€ ๊ณ„์ˆ˜(Coefficient) ํ™•์ธ # ์–‘์ˆ˜(+)๋ฉด ์ดํƒˆ ํ™•๋ฅ ์„ ๋†’์ด๋Š” ์š”์ธ, ์Œ์ˆ˜(-)๋ฉด ๋‚ฎ์ถ”๋Š” ์š”์ž…๋‹ˆ๋‹ค. print(f"Priority Coefficient: {model.coef_[0][0]:.4f}")
์‹คํ–‰ ๊ฒฐ๊ณผ
Priority Coefficient: -0.9156

4. ํ‰๊ฐ€ (Evaluation)

๋‹จ์ˆœ ์ •ํ™•๋„(Accuracy)๋ณด๋‹ค **์žฌํ˜„์œจ(Recall)**์ด ์ค‘์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์ดํƒˆํ•  ๊ณ ๊ฐ์„ ๋†“์น˜์ง€ ์•Š๊ณ  ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด ์ดํƒˆ ๋ฐฉ์ง€ ๋งˆ์ผ€ํŒ…์˜ ํ•ต์‹ฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋ก  ์ฐธ๊ณ : Model Evaluation Metrics

Last updated on

๐Ÿค–AI Mock InterviewPractice with real questions