Skip to content

Latest commit

 

History

History
60 lines (53 loc) · 4.51 KB

3-3_특성_공학과_규제_박제인.md

File metadata and controls

60 lines (53 loc) · 4.51 KB

다중회귀multiple regression

  • 여러 개의 특성(독립변수)을 사용한 선형 회귀 (독립 변수가 하나인 선형회귀의 확장으로 불 수 있음)
  • 직선으로 표현 가능하던 선형회귀의 회귀식과 다르게 복수의 독립변수의 일차식의 선형결합으로 표현된다.
  • 다중 회귀 모델을 훈련하는 것은 선형 회귀 모델을 훈련하는 것과 같음. 다만 여러 개의 특성을 사용해 선형 회귀를 수행함. (사이킷런의 LinearRegression 클래스 임포트하고 앞에서 만든 train_poly를 사용해 모델 훈련)
  • 특성이 늘어나면 선형 회귀의 능력은 매우 강해지나 특성의 개수를 크게 늘리면 훈련 세트에 너무 과대적합되어 테스트 세트에서는 형편없는 점수를 만듦.
    #훈련세트에 대해서는 높은 점수를 얻으나 테스트 세트에 대한 점수는 아주 큰 음수가 나오는 코드 -> 규제로 해결
    poly = PolynomialFeatures(degree=5, include_bias=False) # degree 매개변수를 사용해 필요한 고차항의 최대 차수를 5제곱으로 지정
    poly.fit(train_input)
    train_poly = poly.transform(train_input)
    test_poly = poly.transform(test_input)
    print(train_poly.shape)
    

특성공학feature engineering

  • 기존의 특성을 사용해 새로운 특성을 뽑아내는 작업
    • EX) '농어길이 X 농어 높이'를 새로운 특성으로 만드는 것
  • 직접 특성을 제곱하고 특성끼리 곱해서 새로운 특성을 추가할 수도 있지만 사이킷런에서 제공하는 편리한 도구 사용함. (변환기 클래스)

변환기transformer 클래스

  • fit(), transform() 메서드를 제공
    • fit()메서드는 새롭게 만들 특성 조합을 찾고 transform()메서드는 실제로 데이터를 변환함.
    • 두 메서드를 하나로 붙인 fit_transform 메서드도 있음.
    • 입력 데이터를 변환하는 데 타깃 데이터가 필요하지 않음. -> 메서드에 입력 데이터만 전달
  • 교재에서는 PolynomialFeatures 클래스 사용함
    • 이 클래스는 기본적으로 각 특성을 제곱한 항을 추가하고 특성끼리 서로 곱한 항을 추가함.
    • 이 클래스는 sklearn.preprocessing 패키지에 포함되어 있음.
      from sklearn.preprocessing import PolynomialFeatures
      poly = PolynomialFeatures(include_bias=False) # 선형방정식의 절편이 항상 값이 1인 특성과 곱해지는 계수라고 볼 수 있는데 사이킷런의 선형모델은 자동으로 절편을 추가하기 때문에 굳이 특성을 만들 필요가 없어서 False로 지정함. -> 절편을 위한 항이 제거되고 특성의 제곱과 특성끼리 곱한 항만 추가됨. 꼭 지정할 필요는 없음.
      poly.fit([[2,3]]) # transform 전에 꼭 poly.fit을 사용해야 함! 훈련을 해야 변환이 가능하기 때문.
      print(poly.transform([[2,3]]))
      
    • 특성이 어떻게 만들어졌는지 확인하는 좋은 방법 제시함. -> 'get_feature_names()'메서드 호출

규제regularization

  • 머신러닝 모델이 훈련 세트를 너무 과도하게 학습하지 못하도록 훼방하는 것(모델이 훈련 세트에 과대적합되지 않도록 함.
  • 선형 회귀 모델의 경우 특성에 곱해지는 계수(또는 기울기)의 크기를 작게 만드는 일임. -과대적합 해결_기울기 줄이기
  • 특성의 스케일이 정규화되지 않으면 곱해지는 계수 값도 차이나게 되므로 규제를 적용하기 전에 먼저 정규화를 해야함. -> 사이킷런의 StandardScaler 클래스 사용, StandardScaler 클래스도 변환기의 하나임.
  • 훈련세트로 학습한 변환기를 사용해 테스트 세트까지 변환해야 함@

릿지ridge 와 라쏘lasso

  • 선형 회귀 모델에 규제를 추가한 모델
  • 두 모델은 규제를 가하는 방법이 다름
  • 릿지는 계수를 제곱한 값을 기준으로 규제를 적용
  • 라쏘는 계수의 절댓값을 기준으로 규제를 적용
  • 일반적으로 릿지를 조금 더 선호함
  • 두 알고리즘 모두 계수의 크기를 줄이지만 라쏘는 아예 0으로 만들 수도 있음.
  • 사이킷런은 두 알고리즘을 모두 제공함.

152 p 자료 파일 내용