11월 12일 오늘의 일기

오늘은 데이터 분류 중 선형회귀에 관한것을 배웠다.
그중 가장 기억에 남는건 발표한 다중회귀에 관한것이다.

먼저 선형회귀는 하나의 특성을 가지고 선형회귀를 훈련시킨다.
물론 간단하기도 해서 좋은점도 있지만, 반대로 특성이 너무 없다보니 Train 세트에 비해서
Test세트의 결정계수가 매우 높아져 문제가 발생한다.

이런 문제를 해결하려면 특성이 더 많아져야겠지?
특성을 만들기 위해서 무엇을 넣을까?
바로 사이킥 런의 PolymonialFeatures를 사용하면 된다.
이 PolymonialFeatures는 기본적으로 각 특성을 제곱한 항을 추가하고 특성끼리 서로 곱한 항을 추가하는 것이다.

PolynomialFeatures 변환기를 통해 특성의 개수 늘리기

poly = PolynomialFeatures(degree=5, include_bias=False)   # degree=5일때 특성이 5제곱까지 만들어짐

poly.fit(train_input) # 변환 전에 훈련이 꼭 필요함
train_poly = poly.transform(train_input)
test_poly = poly.transform(test_input)

이렇게 만들고 결과를 보면 특성이 많이 생성된 것을 확인 할 수 있다.
하지만 이렇게 특성만 많이 만들면 문제가 발생하게 된다.
무슨 문제냐? 바로 훈련을 할 때 정확도는 매우 높아진다 왜냐하면 훈련에 과적합이 되기 때문이다 그러면 상대적으로 테스트세트에서는 형편없는 점수를 얻는 불상사가 발생한다.
이러한 문제를 해결하기 위해 규제를 걸어놓는다.
먼저 규제를 걸어주는 것중에 하나 Standard Scaler라는게 있는데 이것은 기존의 변수 범위를 정규분포로 변환하는 것과 모든 피쳐의 평균을 0 분산을 1로 만든다
즉 한계를 정해준다.

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()
ss.fit(train_poly)

train_scaled = ss.transform(train_poly)
test_scaled = ss.transform(test_poly)

그럼 Standard Scaler만 있냐? 그것도 아닌게 여기에 릿지와 랏소라는 것이 있다.
먼저 릿지란?
-변수 선택 가능
-변수 간 상관관계가 높은 상황에서 좋은 예측 성능
-크기가 큰 변수를 우선적으로 줄이는 경향이 있음
-릿지는 계수를 제곱한 값을 기준으로 규제를 적용

랏소란?
-변수 선택 가능
-변수 간 상관관계가 높은 상황에서 릿지에 비해 상대적으로 예측 성능이 떨어짐
-랏소는 계수의 절대값을 기준으로 규제를 적용

이러한 특징이 있다.
그래프와 식이 있는데 복사 붙여넣기가 안되네... 나중에 해야겠다

좋은 웹페이지 즐겨찾기