Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
250x250
Tags
- 프로그래머스
- 네이버부스트캠프
- 정보처리기사
- 파이썬
- PY4E
- 인공지능기초다지기
- 난생처음 R코딩&데이터 분석 저서
- SQL
- 빅분기
- Ai
- 이기적
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- r
- python
- 데이터베이스
- 빅데이터분석기사
- Oracle
- 부스트코스
- 코딩테스트 python
- 오라클
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 코딩테스트
- boostcoures
- 기초다지기
- Machine Learning
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- boostcourse
- DB
- AI 플랫폼을 활용한 데이터 분석
- Today
- Total
매일공부
[Machine Learning] 다항 회귀(Polynomial regression) 본문
다항 회귀(Polynomial regression) ; 선형 회귀
- 독립변수의 단항식이 아닌 2차, 3차 방정식과 같은 다항식으로 표현
- 독립 변수와 종속 변수가 선형 관계가 아닌 경우 적용할 수 있는 회귀분석 모델
- 선형 모델을 사용하여 비선형 데이터 집합을 모델링
- 데이터 포인트가 비선형 방식으로 존재할 때 사용
- 곡선의 다항식 선을 사용하여 최적적합을 수행
- 과대적합으로 나타나기 쉬움 > 이상치를 피하기 위해서는 끝 부분의 곡선을 분석하는 것이 좋다.
# 사이킷런은 다항 회귀 역시 선형 회귀이기 때문에 비선형 함수를 선형 모델에 적용시키기 위해 피처를 다항식으로 변환하는 클래스 제공 ?
== PolynomialFeatures
- PolynomialFeatures 클래스를 통해 피처를 Polynomial(다항식) 피처로 변환
- degree 파라미터를 통해 입력 받은 단항식 피처를 degree에 해당하는 다항식 피처로 변환
- 다항식의 차수가 높아질수록 매우 복잡한 피처 간의 관계까지 모델링 가능
- 다항 회귀의 차수(degree)를 높일수록 학습 데이터에만 너무 맞춘 학습이 이뤄져서 정작 테스트 데이터 환경에서는 오히려 예측 정확도가 떨어짐(=과적합)
- 좋은 예측 모델 == 학습 데이터의 패턴을 잘 반영하면서도 복잡하지 않은 균형 잡힌(Balanced) 모델 의미
교차 특성 처리
- 타킷 변수에 영향을 미치면서 다른 특성에 의존하는 특성
- 타깃 변수에 대한 특성의 영향이 부분적으로 또 다른 특성에 의존
- 두 특성값의 곱을 포함하는 새로운 특성을 포함시켜 상호 작용을 나타낼 수 있음
- PolynomialFeatures를 사용해 특성의 모든 조합에 대한 교차항을 만든 다음 모델 선택 전략을 사용해 최선의 모델을 만드는 특성 조합과 교차항을 찾음(의존성 찾음)
- interaction_only=True : 교차항만 반환
- include_bias=True(기본) : PolynomialFeatures를 절편이라고 부르는 1로 채워진 특성 추가
- include_bias=False : 절편 1로 채워진 특성 추가x
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
from sklearn.preprocessing import PolynomialFeatures
import numpy as np
# 데이터를 로드하고 두 개의 특성만 선택
boston = load_boston()
features = boston.data[:, 0:2]
target = boston.target
#교차항
interaction = PolynomialFeatures(degree=3, include_bias=False, interaction_only=True)
features_interaction = interaction.fit_transform(features)
regression = LinearRegression() # 선형 회귀 모델 객체 생성
model = regression.fit(features_interaction, target) # 선형 회귀 모델 훈련
features[0] # 첫 번째 샘플의 특성 값을 확인
#array([6.32e-03, 1.80e+01])
# 각 샘플에서 첫 번째와 두 번째 특성을 곱합니다.
interaction_term = np.multiply(features[:, 0], features[:, 1])
interaction_term[0] # 첫 번째 샘플의 교차 항을 확인.
### 0.11376
features_interaction[0] # 첫 번째 샘플의 값을 확인
### array([6.3200e-03, 1.8000e+01, 1.1376e-01])
#차수 3인 polinomial
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=3, include_bias=False)
poly_features = poly.fit_transform(X)
X_train2, X_test2, y_train2, y_test2 = train_test_split(poly_features,Y,test_size=0.2,random_state=99)
poly_reg = LinearRegression()
poly_reg.fit(X_train2, y_train2)
y_pred2 = poly_reg.predict(X_test2)
print('Polynomial Regression R-square : ' , r2_score(y_test2, y_pred2))
## Polynomial Regression R-square: -60.569535992639175
print('Polynomial Regression MSE : ' , mean_squared_error(y_test2, y_pred2))
## Polynomial Regression MSE: 359482.2200678169
* 내용참고&출처 : 태그에서 수강한 수업을 복습 목적으로 정리한 내용입니다.
728x90
'IT > ML' 카테고리의 다른 글
[Machine Learning] 규제 방법에 따른 선형회귀 모델 유형 (0) | 2022.12.09 |
---|---|
[Machine Learning] 조건에 따른 사용가능한 회귀분석 모델 (0) | 2022.12.09 |
[Machine Learning] 자료의 종류의 따른 회귀분석 모델 (0) | 2022.11.30 |
[Machine Learning] 회귀의 가설검정&분산분석 (0) | 2022.11.28 |
[Machine Learning] 교차검증 (0) | 2022.11.21 |
Comments