๐Ÿ‘ฉ‍๐Ÿ’ป

[kaggle] Intermediate Machine Learning

geum 2021. 4. 28. 22:39

 

kaggle(www.kaggle.com/)์˜ Intermediate Machine Learning ์ฝ”์Šค๋ฅผ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

์ž์ฒด ๋ฒˆ์—ญ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋‹ˆ ์˜๋ฏธ๊ฐ€ ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๋‚ด์šฉ, ์˜๊ฒฌ์„ ๋‚˜๋ˆ ๋ณด๊ณ  ์‹ถ์€ ๋‚ด์šฉ, ์˜คํƒ€ ๋“ฑ์ด ์žˆ๋‹ค๋ฉด ํŽธํ•˜๊ฒŒ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š” =)

 


 

1. Missing Values - ๊ฒฐ์ธก์น˜

Three Approaches

1) ๊ฒฐ์ธก์น˜๊ฐ€ ์žˆ๋Š” ์—ด ์ „์ฒด ์‚ญ์ œ

๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธด ์—ด์— ์†Œ์ˆ˜์˜ ๊ฒฐ์ธก์น˜๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์—ด ์ „์ฒด๊ฐ€ ์‚ญ์ œ๋˜๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

 

cf. NaN? Not a Number. ํ‘œํ˜„ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ˆ˜์น˜ํ˜• ๊ฒฐ๊ณผ

 

2) ๋Œ€์น˜(Imputation)

๊ฒฐ์ธก์น˜๋ฅผ ํŠน์ • ๊ฐ’์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์œ„์˜ ์‚ฌ์ง„์€ ํ‰๊ท ๊ฐ’์„ ์ด์šฉํ•ด ๊ฐ’์„ ์ฑ„์šด ๋ชจ์Šต์ด๋‹ค. ๋งŽ์€ ๊ฒฝ์šฐ ๋Œ€์ฒด๊ฐ’์ด ์™„๋ฒฝํ•˜๊ฒŒ ๋งž์•„๋–จ์–ด์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์—ด ์ „์ฒด๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š” ๋†’์€ ์ •ํ™•๋„๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

์‚ฌ์ดํ‚ท๋Ÿฐ์—์„œ ์ œ๊ณตํ•˜๋Š” SimpleImputer ๋ชจ๋“ˆ์„ ์ด์šฉํ•ด ์†์‰ฝ๊ฒŒ ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

3) ๋Œ€์น˜์˜ ํ™•์žฅ

2)์˜ ๊ฒฝ์šฐ์—์„œ ๊ฒฐ์ธก์น˜์˜ ์œ„์น˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์—ด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. kaggle ์‚ฌ์ดํŠธ์—๋Š” 'In some cases, this will meaningfully improve results. In other cases, it doesn't help at all.' ๋ผ๊ณ  ๋‚˜์™€์žˆ๋Š”๋ฐ ์ € ๋ฌธ์žฅ์—์„œ ๋งํ•˜๋Š” some cases์™€ other cases๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฒฝ์šฐ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค ๐Ÿค” 

 

2. Categorical Variables - ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜

Categorical Variables

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

 

 

Three Approaches

1) ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ ์‚ญ์ œ

๋ฐ์ดํ„ฐ์…‹์œผ๋กœ๋ถ€ํ„ฐ ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ด์ด ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์ง€ ์•Š์„ ๋•Œ๋งŒ ์œ ์šฉํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

2) ๋ผ๋ฒจ ์ธ์ฝ”๋”ฉ

๋‹จ์–ด๋‚˜ ๊ธ€์ž๋ฅผ ์ˆซ์ž ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ž‘์—…์œผ๋กœ ๊ฐ๊ฐ์˜ ํ•ญ๋ชฉ์— ๊ณ ์œ ํ•œ ์ˆซ์ž๋ฅผ ๋ถ™์ด๊ณ  ์ˆœ์„œ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์œ„์˜ ์‚ฌ์ง„์—์„œ๋Š” Never(0) < Rarely(1) < Most days(2) < Every day(3)์˜ ์ˆœ์„œ๊ฐ€ ์ ์šฉ๋œ๋‹ค.

 

3) โญ One-Hot Encoding

์ž์—ฐ์–ด ์ฒ˜๋ฆฌ์—์„œ ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋ฒ•์œผ๋กœ ๊ฐ ๋‹จ์–ด์— ๊ณ ์œ ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋ถ€์—ฌํ•œ ํ›„ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋‹จ์–ด์˜ ์ธ๋ฑ์Šค ์œ„์น˜์—๋Š” 1, ์•„๋‹Œ ๊ณณ์€ 0์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ํ•œ ์ค„๋กœ ์š”์•ฝํ•˜๋ฉด ํ•ด๋‹น๋˜๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋Š” 1, ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋Š” 0์œผ๋กœ ์ฑ„์›Œ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜๊ฐ€ ๋งŽ์„ ๋•Œ๋Š” ์ด ๋ฐฉ์‹์ด ์ž˜ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

3. Pipelines

Introduction

ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•ด์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์€

 

  • ๊น”๋”ํ•œ ์ฝ”๋“œ
  • ์ ์€ ๋ฒ„๊ทธ
  • ์‰ฌ์šด ์ƒ์‚ฐํ™”
  • ๋ชจ๋ธ ๊ฒ€์ฆ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์˜ต์…˜

๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋„ฃ์—ˆ์„ ๋•Œ ๊ธ€์ž ํฌ๊ธฐ ์กฐ์ ˆ ์•ˆ๋˜๋Š” ๊ฑฐ ๋„ˆ๋ฌด ๋ถˆ-ํŽธ

 

 

Construct the full pipeline

โ‘  ์ „์ฒ˜๋ฆฌ ๋‹จ๊ณ„(๊ฒฐ์ธก์น˜ ์ฒ˜๋ฆฌ ๋ฐ ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ์— one-hot encoding ์ ์šฉ)

โ‘ก ๋ชจ๋ธ ์ •์˜

โ‘ข ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ ๋ฐ ํ‰๊ฐ€

 

4. Cross-Validation - ๊ต์ฐจ ๊ฒ€์ฆ

๋ฐ์ดํ„ฐ๋ฅผ folds๋ผ๋Š” ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ ํด๋“œ๋งˆ๋‹ค ํ…Œ์ŠคํŠธํ•ด๋ณด๋ฉด์„œ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

folds=5

๊ต์ฐจ ๊ฒ€์ฆ ๊ณผ์ •์€ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ ์ธก์ •์— ์žˆ์–ด์„œ ์ข€ ๋” ๋†’์€ ์ •ํ™•๋„๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ ๋ชจ๋ธ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ‰๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

5. XGBoost

Introduction

์•™์ƒ๋ธ” ๊ธฐ๋ฒ•์ธ gradient Boosting์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ฒฐ์ • ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ

 

 

Gradient Boosting

๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด ๋‹จ์ผ ๋ชจ๋ธ์— ๋‹ค๋ฅธ ๋ชจ๋ธ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฒฐํ•ฉ์‹œํ‚ค๋Š” ์•™์ƒ๋ธ” ๊ธฐ๋ฒ•์ด๋‹ค. ์ง„ํ–‰ ๊ณผ์ •์€ ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™๋‹ค.

 

 

 

Parameter Tunning

XGBoost์—๋Š” ์ •ํ™•๋„์™€ ํ•™์Šต ์†๋„์— ๋“œ๋ผ๋งˆํ‹ฑํ•œ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ช‡๋ช‡ ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์ด ์žˆ๋Š”๋ฐ ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

 

1) n_estimators

๋ชจ๋ธ๋ง ์‚ฌ์ดํด(๋ฐ”๋กœ ์œ„์˜ ์‚ฌ์ง„)์˜ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์ง€์ •ํ•œ๋‹ค. ์•™์ƒ๋ธ”์— ํฌํ•จ์‹œํ‚ค๋Š” ๋ชจ๋ธ์˜ ์ˆ˜์™€ ๋™์ผํ•˜๋ฉฐ ๋„ˆ๋ฌด ๋‚ฎ์„ ๊ฒฝ์šฐ์—๋Š” ์–ธ๋”ํ”ผํŒ…์„, ๋„ˆ๋ฌด ํ†บ์„ ๊ฒฝ์šฐ์—๋Š” ์˜ค๋ฒ„ํ”ผํŒ…์„ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ˆ˜์น˜๋Š” 100~1000์ด๋‹ค.

 

2) early_stopping_rounds

n_estimators์˜ ์ด์ƒ์ ์ธ ๊ฐ’์„ ์ž๋™์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ง€์ •ํ•œ ๊ฐ’ ์ดํ›„์˜ ๋ฐ˜๋ณต์—์„œ ํ‰๊ฐ€ ์ง€ํ‘œ์˜ ๊ฐœ์„ ์ด ์—†์„ ๊ฒฝ์šฐ ๋ชจ๋ธ์„ ๋ฉˆ์ถ”๊ฒŒ ํ•˜๋Š” ๊ฐ’์œผ๋กœ early_stopping_rounds ๊ฐ’์„ 10์œผ๋กœ ์ง€์ •ํ–ˆ๋‹ค๋ฉด 10๋ฒˆ์˜ ๋ฐ˜๋ณต ํ›„์—๋„ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง€์ง€ ์•Š์œผ๋ฉด ๋ชจ๋ธ ํ•™์Šต์„ ๋ฉˆ์ถ”๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ๋Š˜๋ ค๋„ ์„ฑ๋Šฅ์ด ๋‚˜์•„์ง€์ง€ ์•Š๋Š”๋ฐ ๋ฌด์˜๋ฏธํ•œ ํ•™์Šต์„ ๊ณ„์† ํ•จ์œผ๋กœ์จ ์ƒ๊ธฐ๋Š” ์‹œ๊ฐ„ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•ด์ค€๋‹ค.

 

3) learning_rate

์ž‘์€ ํ•™์Šต๋ฅ ๊ณผ ํฐ estimators ๊ฐ’์€ XGBoost ๋ชจ๋ธ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ข€ ๋” ์ •ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค. ๋””ํดํŠธ๋กœ ์ง€์ •๋œ ํ•™์Šต๋ฅ ์€ 0.1์ด๋‹ค.

 

4) n_jobs

๋ฐ์ดํ„ฐ์…‹์ด ํด ๊ฒฝ์šฐ parallelism์„ ์ด์šฉํ•ด ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ปดํ“จํ„ฐ์˜ ์ฝ”์–ด ์ˆ˜์™€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๊ณ  ๋ฐ์ดํ„ฐ์…‹์ด ์ž‘์€ ๊ฒฝ์šฐ์—๋Š” ๋„์›€์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

6. Data Leakage

Target Leakage

์˜ˆ์ธก๊ธฐ๊ฐ€ ์˜ˆ์ธก์„ ๋งŒ๋“œ๋Š” ์ˆœ๊ฐ„์— ์ด์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ˆ„์ˆ˜

 

 

Train-Test Contamination

ํ•™์Šต ๋ฐ์ดํ„ฐ์™€ ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ณ„ํ•ด๋†“์ง€ ์•Š์•˜์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ˆ„์ˆ˜