[혼자 공부하는 머신러닝+딥러닝] 8강. 특성 공학과 규제 알아보기 - 다중회귀
https://www.youtube.com/watch?v=PLECEclz0p4&list=PLJN246lAkhQjoU0C4v8FgtbjOIXxSs_4Q&index=8
- 단순, 다항, 다중 회귀 분석 정리
- 단순회귀분석 - 직선, 1개 특성
- 다항회귀분석 - 곡선, 1개 특성
- 다중회귀분석 - 직선, 여러개 특성
- 다중 회귀 (multiple regression)
- 특성이 하나이면 2차원 평면 그래프로 표현할 수 있다.
- 특성이 두개이면 3차원 공간 그래프로 표현할 수 있다.
- 타깃은 회귀문제일 경우, 하나의 축에 자리를 잡고 있어야 한다.
- 특성이 두개일 경우 선형회귀가 학습하는 것은 평면의 방정식이 된다.
- 새로운 특성을 추가, 변경, 조합 하는 것을 특성공학이라 하며 feature engineering라 한다.
- 넘파이 튜토리얼
- https://ml-ko.kr/homl2/tools_numpy.html
tools_numpy
0, 1, 2(깊이, 높이, 너비) 축을 1, 2, 0 (깊이→너비, 높이→깊이, 너비→높이) 순서로 바꾼 ndarray를 만들어 보겠습니다:
ml-ko.kr
- 판다스 튜토리얼
- https://ml-ko.kr/homl2/tools_pandas.html
tools_pandas
저장 & 로딩¶ 판다스는 DataFrame를 여러 가지 포맷으로 저장할 수 있습니다. CSV, Excel, JSON, HTML, HDF5, SQL 데이터베이스 같은 포맷이 가능합니다. 예제를 위해 DataFrame을 하나 만들어 보겠습니다:
ml-ko.kr
- 다항 특성 만들기
- fit() 메서드는 새롭게 만들 특성 조합을 찾고 transform() 메서드는 실제로 데이터를 변환한다.
- degree 변수는 제곱항을 만들어 준다. 2로 설정하면 2제곱, 3으로 설정하면 3제곱을 만든다.
from sklearn.preprocessing import PolynomialFeatures
# degree = 2
poly = PolynomialFeatures()
poly.fit([[2,3]])
print(poly.transform([[2,3]]))
# 1(bias), 2,3,2**2, 2*3, 3**2
print(poly.transform([[2,3]]))
[[1. 2. 3. 4. 6. 9.]]
- 결과로 다음과 같은 방법으로 만든 배열을 확인할 수 있다.
- 1(bias), 2,3,2**2, 2*3, 3**2
- 1은 절편을 위한 가상의 특성으로 자동으로 생성된다.
- y = ax+b 의 식에서 [a,b]*[x,1]로 식을 변형할 수 있다. 이때 x의 절편으로 1이 필요하기 때문에 자동 생성된다.
- 선형회귀에서는 1이라는 특성 값을 무시한다.
- include_bias=False를 사용하면 1을 제외하고 생성한다.
- 선형회귀, 분류 방법들을 추정기(Estimator)라 부르고 PolynomialFeatures는 변환기(Transform)라 부른다
- 추정기(Estimator) 클래스에는 fit, predict, score 함수가 있다
- 변환기(Transform) 클래스에는 fit, transform, fit_transform 함수가 있다
- get_feature_names() 메서드를 호출하면 자동으로 생성된 배열의 특성이 각각 어떤 입력의 조합으로 만들어 졌는지 알려준다.
- 훈련세트 갯수가 44개, 특성이 55개로 설정하면, 맞춰야 할 대상보다 사용해야 할 도구가 더 많은 경우가 발생한다. 특성하나마다 샘플하나씩 대응해도 42개를 완벽하게 맞출 수 있기 때문에 과대적합이 될 수밖에 없다. 이런 경우 test 세트의 결과가 매우 나쁘게 나온다.
- 과대적합을 줄일 수 있는 방법으로 규제가 있다. 가중치(기울기) 값을 줄이는 방법이다.
- 대표적으로 다음 두가지 방법이 있다.
- Ridge regression(릿지 회귀)
- Lasso regression(라쏘 회귀)
- reference :
Ridge regression(릿지 회귀)와 Lasso regression(라쏘 회귀) 쉽게 이해하기
Ridge regression와 Lasso regression를 이해하려면 일단 정규화(regularization)를 알아야합니다. 첫번째 그림을 보면 직선 방정식을 이용하여 선을 그었습니다. 데이터와 직선의 차이가 꽤 나네요. 정확한
rk1993.tistory.com
- 규제 전에 표준화
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(train_poly)
train_scaled = ss.transform(train_poly)
test_scaled = ss.transform(test_poly)
- Ridge regression(릿지 회귀)
- (가중치)^2을 벌칙으로 사용한다. L2 규제라고도 부른다.
- 가중치 값을 '모델파라미터'라 부른다.
- 매개변수 : alpha = 1 -> 크게 하면 강도가 세지고 낮게 하면 강도가 약해진다.
- 사용자가 직접 정해줘야 하는 값들을 '하이퍼파라미터'라 부른다.
from sklearn.linear_model import Ridge
ridge = Ridge()
ridge.fit(train_scaled, train_target)
print(ridge.score(train_scaled, train_target))
0.98961016...
print(ridge.score(test_scaled, test_target))
0.979069...
- Lasso regression(라쏘 회귀)
- |가중치| 를 벌칙으로 사용한다. L1 규제라고도 부른다.
- 라쏘는 특정 가중치를 0으로 만들어 버릴 수 있다.
- print(np.sum(lasso.coef_ == 0)) 를 사용하면 현재 사용하지 않는 특성 수를 확인할 수 있다.
from sklearn.linear_model import Lasso
lasso = Lasso()
lasso.fit(train_scaled, train_target)
--------------------------------------
lasso = Lasso(alpha=10)
lasso.fit(train_scaled, train_target)
print(np.sum(lasso.coef_ == 0))
- 라쏘보다 릿지를 더 많이 선호한다.
- reference :
https://speedanddirection.tistory.com/74
혼자 공부하는 머신러닝+딥러닝(ch3-3 특성 공학과 규제)
03-3 특성 공학과 규제¶ 앞서 다항회귀로 농어의 무게를 어느 정도 예측할 수 있었지만 여전히 훈련 세트보다 테스트 세트의 점수가 높았다. 이를 해결하려면 제곱보다 더 고차항을 넣어야 할 것
speedanddirection.tistory.com
단순회귀분석 vs 다항회귀분석 vs 다중회귀분석
오늘은 단순회귀분석과 다항회귀분석과 다중회귀분석의 차이에 대해 다루려고 합니다. 모두 회귀분석에 속하는 분석 기법들입니다. 회귀분석은 지도학습의 한 종류로 어떤 값을 예측할 때 사
bskyvision.com
https://herjh0405.tistory.com/70
[ML] 다중 회귀 VS 다항 회귀 (Multiple VS Polynomial regression)
목차 우리는 머신러닝 기법을 사용할 때 회귀 관련 모델을 사용하긴 한다. 가장 기본적인 선형 회귀(Linear Regression) 모델을 많이 사용할 텐데, 데이터의 분포가 직선이 아니라 곡선 형태를 띠고
herjh0405.tistory.com
https://dodonam.tistory.com/236
다중 회귀 분석 vs 다항 회귀 분석 (Multiple VS Polynomial regression analysis)
다중 회귀 (multiple regression) - 다중회귀분석은 다중의 독립변수가 있는 형태 (x1, x2) - 다중회귀분석시 독립변수간 상관관계가 높아 발생하는 다중공선성(multicollinearity)문제 처리가 필요 > 다중공
dodonam.tistory.com
https://m.blog.naver.com/shoutjoy/221956655869
헷갈리는 '회귀분석(regression)'의 종류에 대해 이해해보자.
회귀분석(regression)의 종류 다음의 링크는 R에서 사용하는 회귀분석을 함수를 나타낸 것이다. 대략 205...
blog.naver.com
'데이터분석-머신러닝-AI > 강의 정리' 카테고리의 다른 글
[혼자 공부하는 머신러닝+딥러닝] 10강. 확률적 경사 하강법 알아보기 - 점진적 학습, 온라인 학습 (0) | 2023.11.11 |
---|---|
[혼자 공부하는 머신러닝+딥러닝] 9강. 로지스틱 회귀 알아보기 - 분류모델 (2) | 2023.11.09 |
[혼자 공부하는 머신러닝+딥러닝] 7강. 사이킷런으로 선형 회귀 모델 만들어 보기 - 선형 회귀, 다항회귀 (0) | 2023.10.24 |
[혼자 공부하는 머신러닝+딥러닝] 6강. 회귀 문제를 이해하고 k-최근접 이웃 알고리즘으로 풀어 보기 - reshape, 과대적합, 과소적합 (1) | 2023.10.24 |
[혼자 공부하는 머신러닝+딥러닝] 5강. 정교한 결과 도출을 위한 데이터 전처리 알아보기 - 표준화 정리 (0) | 2023.10.20 |
댓글