[머신러닝] Ridge Regression

Colacan·2022년 2월 24일
1

[머신러닝]

목록 보기
6/8

Ridge (L2) Regression

편향에러를 늘리는 대신 분산을 줄이는 방향으로 일반화를 진행하는 것

원핫인코딩

  • 범주형 자료의 구분
    1) 순서가 없는 명목형 데이터
    2) 순서가 있는 순서형 데이터
    3) 예시에서 사용한 city는 명목형, room의 개수는 순서형
    4) room의 경우에는 이미 숫자이며 순서적 의미가 잘들어가 있기에 원핫인코딩이 필요하지 않다.

  • 검정변수의 카테고리를 특성으로 생각하고 존재하면 1 아닐시 0을 대입

  • aggregation을 이용해 각 범주의 통계량을 볼 수도 있다 (agg함수)

  • 범주의 종류가 많을시 차원은 거대해지므로 사용에 적합 X, high cardinality

  • 순서가 의미없는 범주를 순서인코딩을 할 경우 안 좋은 결과를 불러옴

  • 판다스의 get_dummies로 원핫인코딩 수행가능

  • 더미코딩에서 변수하나를 줄여도 괜찮다.
    1) 자유도가 3일때 변수 2개만 있어도 괜찮다.
    2) 이 경우에는 회귀계수가 하나 적게나온다.
    3) 하지만 한 특성이 명확하게 보이지 않아 실수할 수 있으므로 우선 원핫인코딩을 이용하자

  • Category_encoders 라이브러리를 이용하면 범주형 데이터에만 원핫인코딩이 수행가능하다.
    1) 사이킷런 스타일의 범주형 인코더가 종류별로 구현되어있음
    2) from category_encoders import OneHotEncoder로 구현가능

  • fit_transform과 transform의 차이
    1) fit_transform은 학습데이터 세트에서 변환을 위한 기반 설정(예를 들어 학습 데이터 세트의 최대값/최소값등)을 먼저 fit()을 통해서 설정한 뒤에 이를 기반으로 학습 데이터의 transform()을 수행하되 학습 데이터에서 설정된 변환을 위한 기반 설정을 그대로 테스트 데이터에도 적용하기 위해서 이용
    2) fit_transform -> 트레이닝 데이터
    3) transform -> 타겟, 레이블, 종속변수, 새로운 데이터 (프레임의 크기를 맞추기 위해)

  • 이상치가 제거되어야 선형모델이 잘 만들어진다

특성선택

  • 특성들의 상관관계를 이용하여 선택

  • 사이킷런의 SelectKBest를 이용하여 회귀모델에 중요한 특성이 선택가능하다.

  • 특성들을 선택하는 과정도 특성공학의 한 부분이다.

  • 특성공학은 실무에서 가장 많은 시간이 소요되는 작업 중 한 가지, 경험을 통해 도메인을 늘려나가자

  • 좋은 특성을 뽑는 방법
    1) 특성들끼리는 상관성이 적으면서 타겟특성과는 상관성이 큰 특성을 뽑는 것

  • 각각의 특성들이 독립이므로 속도가 빠르고 여러 모델에 이용이 가능하다.

  • 회귀에서 KBest의 score함수는 주로 f_regression을 이용한다.
    1) 찾아보니 F-통계량 및 p-값을 반환하는 일변량 선형 회귀 테스트라고한다.

  • k값을 결정하는 방법은 각각 모델을 만들어 가장 좋은 성능을 가지는 값을 결정

Ridge Regression 모델 학습

  • 다중회귀모델에서 특성이 많아지면 영향을 주는 경우가 많아짐.
    1) 이는 다중공선성을 유발한다.
    2) 특성을 줄이는 과정이 필요하다.
    3) 기존 비용함수인 SSE에 회귀계수 제곱합을 추가.
    4) 람다는 튜닝파라미터, 람다값이 커질수록 회귀계수 0으로 수렴시킴.
    5) 덜 중요한 특성의 개수를 줄이는 것과 같은 효과(과적합 줄이는 방향)

  • 다중회귀 모델과 Ridge회귀의 비교
    1) 다중회귀의 경우 이상치가 있을때 예측값에 영향을 줘서 좋은 결과값이 안나옴
    2) Ridge회귀의 경우 람다값이 커질수록 기울기가 작아져 이상치의 영향이 작아짐
    3) 하지만 너무 커지면 기준모델과 비슷해진다

  • 패널티값(람다값)을 효율적으로 구하는 방법
    1) 특별한 공식을 가진것은 아니고 여러 패널티값을 통해 검증실험을 해야한다.
    2) 교차검증을 사용해 훈련/검증데이터를 나누어서 실험 진행
    3) 사이킷런의 RidgeCV를 통해 교차검증알고리즘을 쉽게 구현가능하다.

  • 다항함수에 Ridge회귀를 사용하여 정규화 효과를 좀 더 잘 확인할 수 있다.

  • 트레이닝 데이터보다 테스트 데이터의 R2값이 확연히 낮다의 의미
    1) 과적합이 있었다.
    2) 특성이 너무 많은 것도 R2에 영향을 준다.

  • 모델을 실전에 사용하려면 데이터가 충분하지 않은 이상 검증,테스트에 사용한 데이터를 마지막에 훈련데이터로 사용하여 최대한 학습시켜야한다.

  • coef를 통해서 회귀계수 확인, 그래프로 그리면 몇몇 중요한 특성들만 회귀계수가 크고 대부분이 0근처에 있는 것을 볼 수 있다.

오늘의 참고자료

  1. Ridge regression 참고자료
    1) https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html#sklearn-linear-model-ridge
    2) https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.RidgeCV.html#sklearn-linear-model-ridgecv
    3) http://www.stat.cmu.edu/~ryantibs/datamining/lectures/16-modr1.pdf
    4) https://statweb.stanford.edu/~tibs/sta305files/Rudyregularization.pdf
profile
For DE, DA / There is no royal road to learning

0개의 댓글