3-3 Feature Engineeringκ³Ό Regularization

혼곡 λ¨Έμ‹  ν•™μŠ΅ λͺ©ν‘œ

  • μ—¬λŸ¬ νŠΉμ„±(Feature)λ₯Ό μ‚¬μš©ν•œ 닀쀑 νšŒκ·€(Multiple Regression)에 λŒ€ν•΄ 배우고, μ‚¬μ΄ν‚·λŸ°(Scikt-learn)의 μ—¬λŸ¬ 도ꡬλ₯Ό μ‚¬μš©ν•΄ λ³Έλ‹€.
  • λ³΅μž‘ν•œ λͺ¨λΈμ˜ κ³ΌλŒ€μ ν•©(Overfitting)을 막기 μœ„ν•œ 릿지(Ridge)와 라쏘(LASSO) νšŒκ·€λ₯Ό λ°°μš΄λ‹€.

핡심 ν‚€μ›Œλ“œ

  • Multiple Regression, Feature Engineering, Ridge, LASSO, Hyperparameter γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

1. Multiple Regression Model

  • 1-1. Regression
    • β€˜νšŒκ·€(Regression)β€™λΌλŠ” 단어가 μΌμƒμ—μ„œ 잘 μ•ˆμ“°μ΄κ³  직관적이지 λͺ»ν•¨
    • νšŒκ·€μ˜ 사전적 μ˜λ―ΈλŠ” β€˜ν•œλ°”ν€΄ λŒμ•„ 제자리둜 λŒμ•„κ°€λ‹€β€™
    • ν†΅κ³„ν•™μ—μ„œ νšŒκ·€λž€, μ—¬λŸ¬ 개의 독립 λ³€μˆ˜(Feature)와 ν•œ 개의 쒅속 λ³€μˆ˜(Target) κ°„μ˜ 상관관계λ₯Ό λͺ¨λΈλ§ ν•˜λŠ” 기법을 ν†΅μΉ­ν•œλ‹€.
    • μˆ˜ν•™μ μœΌλ‘œλŠ” 독립 λ³€μˆ˜ X둜 쒅속 λ³€μˆ˜ Yλ₯Ό ν‘œν˜„ν•˜λŠ” μΆ”μ„Έμ„  F’(X)λ₯Ό μ°Ύμ•„κ°€λŠ” κ³Όμ •
    • 데이터와 μ˜€μ°¨ν•©μ΄ κ°€μž₯ μž‘μ€ ν•¨μˆ˜(Model)을 μ°ΎλŠ” μž‘μ—…

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

  • 1-2. Regression λΆ„λ₯˜
    • Simple (Linear) Regression Model
    • Multiple Regression

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

  • 1-3. Multiple Regression Model
    • μ‚¬μš© κ°€λŠ₯ν•œ Featureκ°€ λŠ˜μ–΄λ‚  수둝 λͺ¨λΈμ˜ μ„€λͺ…λ ₯이 올라감 (=μ„±λŠ₯이 μ’‹λ‹€)
    • κ·ΈλŸ¬λ‚˜ ν˜„μ‹€μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ 데이터(Feature)λŠ” μ œν•œμ  γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€

Multiple Regression Model의 μ„±λŠ₯을 높이기 μœ„ν•΄ Featureλ₯Ό μƒμ„±ν•˜λŠ” 방법은?

  • Feature Engineering

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

2. Feature Engineering

  • 주어진 Featureλ₯Ό μ‘°ν•©ν•˜μ—¬ μƒˆλ‘œμš΄ Featureλ₯Ό λ§Œλ“œλŠ” 일련의 μž‘μ—… κ³Όμ •
    • STXμ—”μ§„μ—μ„œ μƒˆλ‘œμš΄ Column μΆ”κ°€ν–ˆλ˜ μž‘μ—… (Moving Average κ°’, **κ°’ λ“±)

2-1. 고차항을 ν†΅ν•œ Feature Engineering

  • κ°€μ •
    • 주어진 데이터에 X1, X2 λ‘κ°œμ˜ Feature κ°€ 쑴재
    • record 1개
    • Raw Data = [[X1, X2]] γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€
  • 1) Featureλ₯Ό 제곱(^2)ν•˜μ—¬ μƒˆλ‘œμš΄ Feature 생성
    • X1^2, X2^2, X1X2, X1, X2
    • μ‚¬μš© κ°€λŠ₯ν•œ Feature κ°œμˆ˜κ°€ 2μ—μ„œ 5둜 증가 γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€
  • 2) Featureλ₯Ό μ„Έμ œκ³±(^3)ν•˜μ—¬ μƒˆλ‘œμš΄ Feature 생성
    • X1^3, X2^3, X1^2*X2, X1 *X2^2, X1^2, X2^2, X1X2, X1, X2
    • μ‚¬μš© κ°€λŠ₯ν•œ Feature κ°œμˆ˜κ°€ 2μ—μ„œ 9둜 증가

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

Sckit-learn Example

from sklearn.preprocessing import PolynomialFeatures
X1 = 2 
X2 = 3
data = [X1, X2]
poly = PolynomialFeatures()   # PolynomialFeatures(include_bias=False, degree=5)
poly.fit([data])
print(poly.transform([data]))
=> [[1. 2. 3. 4. 6. 9.]]

* μ΅œλŒ€ 5μ œκ³±κΉŒμ§€ κ°€λŠ₯

poly = PolynomialFeatures(include_bias=False, degree=5)
poly.fit([data])
print(poly.transform([data]))
=> [[  2.   3.   4.   6.   9.   8.  12.  18.  27.  16.  24.  36.  54.  81.
   32.  48.  72. 108. 162. 243.]]

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

2-2. FeatureλŠ” λ§Žμ„μˆ˜λ‘ μ’‹μ€κ±΄κ°€μš”?

  • Featureκ°€ λ§Žμ„ 수둝 λͺ¨λΈμ΄ λ³΅μž‘ν•΄ 진닀.
  • λͺ¨λΈμ΄ λ³΅μž‘ν•΄μ§ˆ 수둝 Train Set에 λŒ€ν•œ μ„±λŠ₯은 정확도 100에 κ°€κΉŒμ›Œμ§‘λ‹ˆλ‹€.

  • λ‹€μ‹œ 말해, μ˜€μ°¨κ°€ 거의 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©°, μ΄λŸ¬ν•œ 상황은 Test set에 μ μš©ν•˜μ§€ λͺ»ν•˜λŠ” OverFitting λ¬Έμ œκ°€ λ°œμƒ
  • OverFitting 문제
    • μΌλ°˜ν™” 어렀움
    • 높은 λΆ„μ‚°

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

2-3. Bias와 Variance

-Bias-Variance Tradeoff

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

μ μ ˆν•œ Tradeoff 지점을 μ°ΎλŠ” 방법

  • 였차(Training Error)ν•­μ˜ Regularization(규제)

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

3.Regularization

3-1. 볡슡

  • Regressiong
    • 데이터λ₯Ό ν‘œν˜„ν•˜λŠ” 졜적의 νšŒκ·€μ„ μ„ μ°ΎλŠ” κ²ƒμœΌλ‘œ 각 λ…λ¦½λ³€μˆ˜(Feature)의 졜적의 κ°€μ€‘μΉ˜(Weight)λ₯Ό μ°ΎλŠ” κ³Όμ •
    • 였차λ₯Ό μ΅œμ†Œν™” ν•˜λŠ” Weighκ°’μ˜ 반볡적인 Update
    • Weight(κ³„μˆ˜)λŠ” κΈ°μšΈκΈ°μ— ν•΄λ‹Ήν•˜λŠ”λ°,…
    • κΈ°μšΈκΈ°κ°€ κ°€νŒŒλ₯Ό 수둝 Overfitting
  • Machine Learning
    • λΉ λ₯΄κ³  λ³΅μž‘ν•œ 연산이 κ°€λŠ₯ν•œ 컴퓨터가 인간 λŒ€μ‹  졜적의 νšŒκ·€μ„ μ„ μ°ΎλŠ” 것
  • Error(=Cost)
    • 였차 = 예츑 κ°’-μ‹€μ œ κ°’ = F’(x) - F(x)
    • F`(x) = λͺ¨λΈμ„ μ΄μš©ν•œ 예츑 κ°’ = w1x1^2 + w2x2^2 + w3…
    • Feature (x1, x2, .. xn)κ°€ λ§Žμ„ 수둝, λ³΅μž‘ν•œ λͺ¨λΈμ΄ λ§Œλ“€μ–΄μ§€λ©° Train Set에 λŒ€ν•œ μ˜€μ°¨κ°€ 쀄어듬
    • train set에 λŒ€ν•΄ 거의 μ™„λ²½ν•œ μ„±λŠ₯을 κ°€μ§€μ§€λ§Œ, λ³΅μž‘ν•˜κΈ° λ•Œλ¬Έμ— κΈ°μšΈκΈ°κ°€ κ°€νŒŒλ₯Ό μˆ˜μžˆλ‹€
  • OverFitting
    • λ³΅μž‘ν•œ λͺ¨λΈλ‘œ 인해 Train Set에 λŒ€ν•΄ μ™„λ²½ν•œ μ„±λŠ₯을 κ°€μ‘ŒμœΌλ‚˜ Test set에 λŒ€ν•œ μ„±λŠ₯이 λ–¨μ–΄μ§€λŠ” 것
    • 높은 λΆ„μ‚°κ³Ό μΌλ°˜ν™” 어렀움

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

3-2. Regularization

  • λ³΅μž‘ν•œ λͺ¨λΈμ˜ OverFitting 문제 해결을 μœ„ν•¨
  • κΈ°μšΈκΈ°κ°€ κ°€νŒŒλ₯Έ 것을 μ œκ±°ν•˜κΈ° μœ„ν•΄μ„œ 였차λ₯Ό μΈμœ„μ μœΌλ‘œ 크게 λ§Œλ“œλŠ” 것
    • 였차 = μ‹€μ œκ°’-μ˜ˆμΈ‘κ°’ +κ·œμ œν•­
    • κ·œμ œν•­ = Wiehgt(κ°€μ€‘μΉ˜,κ³„μˆ˜,기울기)의 ν•©
    • Weigthκ°€ 컀질 수둝 μ˜€μ°¨κ°€ 컀짐
    • λ‹€μ‹œ 말해 Wieghtκ°€ μ»€μ§€λŠ” 것에 μ œν•œ(=규제)을 λ‘ 

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

3-3. Regularization λΆ„λ₯˜

  • 규제 μ’…λ₯˜μ— 따라 Linear Regression Model은 Ridge(L2)와 LASSO(L1)둜 λΆ„λ₯˜ λœλ‹€
  • 였차λ₯Ό κ³„μ‚°ν•˜λŠ” 방법에 따라 RMSE, MAEλ“± λ‹€μ–‘ν•œ 였차 ν•¨μˆ˜κ°€ 쑴재
    • RMSE : 였차 제곱 ν•©μ˜ 평균
    • MAE : 였차 μ ˆλŒ€ κ°’ ν•©μ˜ 평균
  • κ·œμ œν•­λ„ 계산법에 따라 L2, L1 λ“±μœΌλ‘œ λ‚˜λ‰˜μ–΄μ§
    • L2 : κ°€μ€‘μΉ˜ 제곱의 ν•©
    • L1 : κ°€μ€‘μΉ˜ μ ˆλŒ€κ°’μ˜ ν•©
  • 규제 μ’…λ₯˜μ— 따라 Linear Regression Model은 Ridge(L2)와 LASSO(L1)둜 λΆ„λ₯˜ λœλ‹€
    • Ridge : 쒋은 μ„±λŠ₯을 보여 주둜 μ‚¬μš©ν•˜λŠ” 규제 방법 쀑 ν•˜λ‚˜
    • LASSO : μˆ˜ν•™μ μœΌλ‘œ κ°€μ€‘μΉ˜ 0이 κ°€λŠ₯ν•˜μ—¬, λΆˆν•„μš”ν•œ Featureλ₯Ό κ°€λ €λ‚΄λŠ” μš©λ„λ‘œ μ‚¬μš© κ°€λŠ₯ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€
  • (μ°Έκ³ )Deep learning 규제 방법 쀑 ν•˜λ‚˜μΈ Drop Out γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

4. Hyperparameter

  • λ¨Έμ‹ λŸ¬λ‹μ΄λž€, 컴퓨터가 주어진 데이터λ₯Ό μ„€λͺ…ν•  수 μžˆλŠ” λͺ¨λΈμ„ ν•™μŠ΅ν•˜λŠ”λ°,
  • 인간보닀 μ—°μ‚°κΈ°λŠ₯이 쒋은 컴퓨터가 λ³΅μž‘ν•œ 연산을 톡해 Feature별 κ°€μž₯ 졜적의 κ°€μ€‘μΉ˜λ₯Ό μ°ΎλŠ”κ²ƒμ΄λ‹€.
  • ν•˜μ§€λ§Œ λͺ¨λΈμ„ ν•™μŠ΅ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬λžŒμ΄ 직접 μ§€μ •ν•˜μ—¬ 졜적의 값을 μ°Ύμ•„λ‚΄μ•Όν•˜λŠ” λ³€μˆ˜κ°€ μžˆλŠ”λ°, 이λ₯Ό ν•˜μ΄νΌνŒŒλΌλ―Έν„°λΌ ν•œλ‹€.
  • λ‹€λ“€ 잘 μ•Œκ³  μžˆλŠ” Learning Rate, Train Node Hourκ°€ 이에 μ†ν•œλ‹€.
  • κ·œμ œν•­μ„ μΆ”κ°€ν•  λ•Œλ„, 규제 정도λ₯Ό μ‚¬λžŒμ΄ 지정할 수 μžˆλ‹€.
  • 규제 정도에 따라 규제 μ„±λŠ₯이 λ‹€λ₯΄λ‹€. (반볡 μ‹€ν—˜μ„ 톡해 μ°Ύμ•„μ•Ό ν•œλ‹€.)

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

πŸ˜‡πŸ˜ŽπŸ€“