데이터분석-머신러닝-AI/강의 정리

[혼자 공부하는 머신러닝+딥러닝] 8강. 특성 공학과 규제 알아보기 - 다중회귀

bluebamus 2023. 10. 25.

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 :

https://rk1993.tistory.com/entry/Ridge-regression%EC%99%80-Lasso-regression-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

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

https://bskyvision.com/entry/%EB%8B%A8%EC%88%9C%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D-vs-%EB%8B%A4%ED%95%AD%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D-vs-%EB%8B%A4%EC%A4%91%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D

 

단순회귀분석 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

 

댓글