[혼자 공부하는 머신러닝 + 딥러닝] 8강_특성 공학과 규제 알아보기

 8강_특성 공학과 규제 알아보기


다중 회귀

  • 여러 개의 특성을 사용한 선형 회귀
  • 특성이 2개면 선형 회귀는 평면을 학습함. 
  • 특성이 많은 고차원에서는 선형 회귀가 매우 복잡한 모델을 표현할 수 있음. 
    • 선형 회귀를 단순한 직선이나 평면으로 생각하여 성능이 무조건 낮다고 오해하면 안됨. 



데이터 준비

  • 판다스: 데이터 분석 라이브러리
  • 데이터 프레임: 판다스의 핵심 데이터 구조
  • read_csv()
  • to_numpy()


사이킷런의 변환기

  • 사이킷런에는 변환기라 부르는 특성을 만들거나 전처리하는 클래스가 있음.
  • fit(), transform()
  • PolynomialFeatures (sklearn.preprocessing)
    • 각 특성을 제곱한 항을 추가하고 특성끼리 서로 곱한 항을 추가함. 
  • 훈련(fit: 새롭게 만들 특성 조합을 찾음)을 해야 (transform: 실제로 데이터를 변환)이 가능함. 사이킷런의 일관된 api 때문에 두 단계로 나뉘어져 있음. 두 메서드를 하나로 붙인 fit_transform 메서드도 있음.
  • 변환기는 타깃 데이터 없이 입력 데이터를 변환함. 
  • get_feature_names() 
    • 특성이 어떻게 만들어졌는지 확인하는 메서드 

- include_bias = False 를 꼭 지정해야 하는지?     include_bias = False 로 지정하지 않아도 사이킷런 모델은 자동으로 특성에 추가된 절편 항을 무시함. 하지만 혼돈을 피하기 위해 명시적으로 지정하는 경우 있음. 
- 꼭 훈련 세트에 적용했던 변환기로 테스트 세트를 변환해야 하는지?      따로 변환해도 됨. 하지만 항상 훈련 세트를 기준으로 테스트 세트를 변환하는 습관을 들이는 것이 좋음. 

다중 회귀 모델 훈련하기

  • LinearRegression 클래스 임포트
  • Train_poly  사용해 모델 학습
  • 과소적합 해결
  • 특성의 개수를 크게 늘일 때
    • 선형 모델 강력해짐
    • 거의 완벽 학습
    • 하지만 훈련 세트에 너무 과대적합되므로 테스트 세트에서는 형편없는 점수 나옴


규제

  • 규제는 머신러닝 모델이 훈련 세트를 너무 과도하게 학습하지 못하도록 훼방하는 것을 말함. 
  • 즉 모델이 훈련 세트에 과대적합되지 않도록 만드는 것.
  • 선형 회귀 모델의 경우 특성에 곱해지는 계수(또는 기울기)의 크기를 작게 만드는 일. 
  • 특성의 스케일 고려해야함 (정규화 필요)
  • 훈련 세트로 학습한 변환기를 사용해 테스트 세트까지 변환해야함
  • 선형 회귀 모델에 규제를 추가한 모델을 릿지와 라쏘라고 부름.  (sklearn.linear_model 패키지)



릿지 회귀

  • 계수를 제곱한 값을 기준으로 규제를 적용.
  • 규제의 양을 임의로 조절 가능 (alpha 매개변수로 규제의 강도 조절)
    • alpha 값이 크면 규제 강도가 세지므로 계수 값을 더 줄이고 조금 더 과소적합되도록 유도
    • allpha 값이 작으면 계수를 줄이는 역할이 줄어들고 선형 회귀 모델과 유사해지므로 과대적합될 가능성이 큼.
    • 적절한 alpha 값을 찾는 한 가지 방법은 alpha  값에 대한 결정계수 값의 그래프를 그려보는 것



라쏘 회귀

  • 계수의 절대값을 기준으로 규제를 적용. 
  • 라쏘는 계수의 크기를 아예 0으로 만들 수 있음. 
  • 라쏘 모델 훈련할 때 ConvergenceWarning 이란 경고가 발생할 수 있음. 
    • 최적의 계수를 찾기 위해 반복적인 계산을 수행하는데, 지정한 반복 횟수가 부족할 때 이런 경고가 발생함. 
    • 반복 횟수를 충분히 늘려줌.
  • 릿지와 마찬가지로 과대적합을 잘 억제하고 테스트 세트의 성능을 크게 높임. 
  • coef_속성 (계수 설정)



모델의 과대적합을 제어하기

  • 과소적합 제어를 위해 다른 특성들을 활용하고 다중 회귀 모델을 훈련시킴.
  • 다항 특성을 많이 추가하여 훈련세트에서 거의 완벽에 가까운 점수를 얻는 모델을 훈련.
    • 강력한 성능, 하지만 선형회귀 모델 제약 도구 필요.
  • 사이킷런을 사용해 다중 회귀 모델과 릿지, 라쏘 모델을 훈련시킴. 
    • 규제 양을 조절하기 위해 alpha 값 찾음.


키워드로 끝내는 핵심 포인트

  • 다중 회귀
    • 여러 개의 특성을 사용하는 회귀 모델.
    • 특성이 많으면 선형 모델은 강력한 성능을 발휘함.
  • 특성 공학 (사이킷런 도구 사용)
    • 주어진 특성을 조합하여 새로운 특성을 만드는 일련의 작업 과정.
  • 릿지
    • 규제가 있는 선형 회귀 모델 중 하나
    • 선형 모델의 계수를 작게 만들어 과대적합을 완화시킴.
    • 릿지는 비교적 효과가 좋아 널리 사용하는 규제 방법.
  • 라쏘
    • 또 다른 규제가 있는 선형 회귀 모델. 
    • 릿지와 달리 계수 값을 아예 0으로 만들 수도 있음. 
  • 하이퍼파라미터
    • 머신러닝 알고리즘이 학습하지 않는 파라미터
    • 사람이 사전에 지정해야 함
    • 대표적으로 릿지와 라쏘의 규제 강도 alpha 파라미터

핵심 패키지와 함수 

  • pandas
    • read_csv()
      • CSV 파일을 로컬 컴퓨터나 인터넷에서 읽어 판다스 데이터프레임으로 변환하는 함수 (sep / header / skiprows / nrows)
  • scikit-learn
    • PolynomiaFeatures
      • 주어진 특성을 조합하여 새로운 특성을 만듬 (degree / interaction_only / include_bias)
    • Ridge
      • 규제가 있는 회귀 알고리즘인 릿지 회귀 모델을 훈련 (alpha / solver / random_state)
    • Lasso
      • 규제가 있는 회귀 알고리즘인 라쏘 회귀 모델을 훈련 
      • 최적의 모델을 찾기 위해 좌표축을 따라 최적화를 수행해가는 좌표 하강법을 사용 (alpha / random_state / max_iter)


확인문제

  1. a, b, c 특성으로 이루어진 훈련 세트를 PolynomialFeatures (degree = 3) 으로 변환. 다음 중 이 변환된 데이터에 포함되지 않는 특성은?!
  2. 다음 중 특성을 표준화하는 사이킷런 변환기 클래스는 ? 
  3. 다음 중 과대적합과 과소적합을 올바르게 표현하지 못한 것은?




댓글

이 블로그의 인기 게시물

[혼자 공부하는 머신러닝 + 딥러닝] 17강_인공 신경망: 간단한 인공 신경망 모델 만들기

[솔트룩스] 새싹 인공지능 응용 SW 개발자 양성과정 | 24일차 | 5. 머신러닝 (2)

[혼자 공부하는 머신러닝 + 딥러닝] 10강_확률적 경사 하강법 알아보기