30.1 Feature Engineering - yojulab/learn_MLs GitHub Wiki

  • ํŠน์„ฑ ๊ณตํ•™ ๊ธฐ๋ฒ• : ์ปดํ“จํ„ฐ๊ฐ€ ํ•™์Šต์„ ์ˆ˜ํ–‰ ํ•  ๋•Œ, ์ผ๋ฐ˜ํ™” ๋œ ์ˆ˜์‹์ด ์ ์ ˆํ•˜๊ฒŒ ๋„์ถœ์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋“ฌ๋Š” ๊ธฐ๋ฒ•
  1. Imputation (๊ฒฐ์ธก๊ฐ’ ์ฒ˜๋ฆฌ)
  2. Scaling & Encoding
  3. Cross Validation
  4. Hyper Parameter Tuning
  5. Imbalanced Data Sampling

ํ•ญ๋ชฉ๋ณ„ ์„ค๋ช…

  1. Imputation (๊ฒฐ์ธก๊ฐ’ ์ฒ˜๋ฆฌ)
  • ๊ฒฐ์ธก๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋Œ€์น˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๊ณต๋ฐฑ ์—†์ด ํ•™์Šต์„ ์ˆ˜ํ–‰
  • ์ œ๊ฑฐ : ๊ฒฐ์ธก๊ฐ’์ด ์žˆ๋Š” ๋ชจ๋“  ํ–‰ ์ œ๊ฑฐ (DataFrame.dropna() )
  • ๋Œ€์น˜
    • ์—ฐ์†ํ˜• -> ํ‰๊ท  (์ค‘์•™๊ฐ’) / ๋ฒ”์ฃผํ˜• -> ์ตœ๋นˆ๊ฐ’
    • ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด์šฉํ•œ ๋Œ€์น˜(KNN)
    • ๋ณด๊ฐ„๋ฒ• (DataFrame.interpolate( )) : ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์ธ ๊ฒฝ์šฐ

ex)

์ด๋ฆ„ ํ‚ค ๋ชธ๋ฌด๊ฒŒ ๋‚˜์ด ์„ฑ๋ณ„
John 180cm 80kg 30์„ธ ๋‚จ์„ฑ
Kate 165cm 25์„ธ ์—ฌ์„ฑ
Mike 175cm 70kg 35์„ธ ๋‚จ์„ฑ
Jane 50kg 28์„ธ ์—ฌ์„ฑ
  1. Scaling & Encoding
  • Scaling : ์—ฐ์†ํ˜• ๋ฐ์ดํ„ฐ์˜ Scale ๋งž์ถฐ์ฃผ๋Š” ์ž‘์—… Ex) ๊ณ„์•ฝ๊ธฐ๊ฐ„ 12~60 / ๋น„์šฉ 10,000,000 ~ 100,000,000 / ์—ฐ๋ น 20 ~ 80
    • Standard Scaler : ๋ชจ๋“  ์ˆซ์ž ๋ฐ์ดํ„ฐ๋ฅผ ํ‰๊ท  0 / ํ‘œ์ค€ํŽธ์ฐจ 1
    • Min Max Scaler : ๋ชจ๋“  ์ˆซ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์†Œ๊ฐ’์ด 0/ ์ตœ๋Œ€๊ฐ’ 1
    • Robust Scaler : ๋ชจ๋“  ์ˆซ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์•™๊ฐ’ 0/ IQR(Inter Quantile Range) 1
  • Encoding : ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†ํ˜• ์ˆซ์ž ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜
    • Label Encoding : ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ์˜ ๊ฐ ํ•ญ๋ชฉ์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜
    • One Hot Encoding : ํ•ญ๋ชฉ๋งŒํผ ๋ฒกํ„ฐํ™”
  1. CrossValidation (๊ต์ฐจ ๊ฒ€์ฆ) : ๋ชจ๋“  ํ•™์Šต๋ฐ์ดํ„ฐ๋ฅผ ๊ต์ฐจ๋กœ ๋ฐ”๊ฟ” ๋‚˜๊ฐ€๋ฉฐ ํ•™์Šต ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋ฒ•

  2. Hyper Parameter Tuning : ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ•  ๋•Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ตฌ์กฐ๋“ค์„ ์‚ฌ์šฉ์ž๊ฐ€ ํ†ต์ œ

  • Hyper Parameter : ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‚ด ์ˆ˜ํ•™ ๊ตฌ์กฐ / ํ•™์Šต์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ตฌ์กฐ
    • Random Search : Random์œผ๋กœ ๋ถ€์—ฌํ•ด ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ ์ฐพ๋Š” ๋ฐฉ๋ฒ•
    • Grid Search : ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ „์— ์ง€์ •ํ•œ ๋ฐฉ๋ฒ•๋Œ€๋กœ ๋ถ€์—ฌํ•˜์—ฌ ํ•ด ์ฐพ๋Š” ๋ฐฉ๋ฒ•

Ex) Decision Tree(Depth / Leaf / Split ...)

  • Random Search: Depth: 10 / Leaf : 7 / Split :15 or Depth: 20 / Leaf : 3 / Split :5
  • Grid Search : Depth 510 / Leaf 510 / Split : 1~20
  1. Imbalanced Data Sampling : ๋ถ„๋ฅ˜๋ชจ๋ธ์—์„œ Dataset ๋น„์œจ์ด ์ฐจ์ด๋‚˜๋Š” ๊ฒฝ์šฐ, ํ•ญ๋ชฉ ๋นˆ๋„์ˆ˜๊ฐ€ ๋งŽ๊ฑฐ๋‚˜ ์ ์€ ์ชฝ์œผ๋กœ ๋น„์œจ ๋งž์ถ”์–ด ํ•™์Šตํ•˜๋Š” ๊ธฐ๋ฒ•
  • Under Sampling : ๋ฐ์ดํ„ฐ์˜ ๋น„์œจ์ด ์ ์€ ์ชฝ์œผ๋กœ ํ•œ์ชฝ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ๊ธฐ๋ฒ•(Random Under Sampling / Tomek's Link / KNN ....)
  • Over Sampling : ๋ฐ์ดํ„ฐ์˜ ๋น„์œจ์ด ๋งŽ์€ ์ชฝ์œผ๋กœ ํ•œ์ชฝ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋Š˜๋ ค์ฃผ๋Š” ๊ธฐ๋ฒ•(Random Over Sampling / SMOTE / ADASYN ...)

Ex) ๋ถˆ๋Ÿ‰์—ฌ๋ถ€(Y) <-> X1, X2, X3... -> ์ •์ƒ 950/ ๋ถˆ๋Ÿ‰ 50 Imbalanced Sampling : ์ •์ƒ 50 / ๋ถˆ๋Ÿ‰ 50 or ์ •์ƒ 950 / ๋ถˆ๋Ÿ‰ 950