컴공댕이 공부일지

[ Alchmist 6주차 ] chapter 05 (4) ~ (8) [ OLS, 회귀 평가 지표, 다항 회귀, 과적합/과소접합, 편향과 분산, 규제 선형 모델, 로지스틱 회귀, 회귀 트리 ] 본문

기록/머신러닝 스터디 Alchemist 🔮

[ Alchmist 6주차 ] chapter 05 (4) ~ (8) [ OLS, 회귀 평가 지표, 다항 회귀, 과적합/과소접합, 편향과 분산, 규제 선형 모델, 로지스틱 회귀, 회귀 트리 ]

은솜솜솜 2023. 11. 1. 17:57
728x90

04. 사이킷런 LinearRegression을 이용한 보스턴 주택 가격 예측

 

- LinearRegression 클래스 - Ordinary Least Squares

RSS 최소화, OLS 추정 방식으로 구현된 클래스

 

LinearRegression

 

- 입력 파라미터

fit_intercept (디폴트 true)

: 절편 계산 여부, false로 지정하면 절편 0

 

nomalize (디폴트 false)

: true면 회귀 수행 전, 입력 데이터 세트 정규화

 

- 객체 속성

coef : 회귀 계수가 배열 형태로 저장

intercept : 추정된 상수항

 

 

* 다중 공선성 문제

피처 간의 상관 관계가 매우 높은 경우, 분산이 매우 커져 오류에 민감해지는 현상

 

그래서, 상관관계가 높은 피처가 많은 경우 독립적인 중요 피처만 남기고 제거 or 규제

많은 피처가 이 문제를 갖고 있다면, PCA로 차원 축소를 수행하는 것도 고려


- 회귀 평가 지표

회귀의 성능을 평가하는 지표

 

 

* 사이킷런 Scoring 함수에 반영하기 위한 보정 (음수화 neg)

 

Scoring 함수는 클수록 좋다고 판단 / but, 오차는 작을수록 좋은 값

이러한 차이 때문에 -1을 곱해 음수로 만들어 작은 오차를 더 좋은 score로 판단하도록 함.

 


- LinearRegression을 이용해 보스턴 주택 가격 회귀 구현

LinearRegreesion 클래스로 선형 회귀 모델 만들기

 

( 주피터 노트북 코드 참고 )

 

train_test_split() 

: 학습- 테스트 데이터 세트 분리

 

사이킷런은 RMSE를 제공하지 않으므로 MSE의 제곱근을 반환해 구한다.

 

[ 사용한 넘파이 함수들 ] 

sprt : 제곱근 함수

round(3.141592, 3) : 반올림 함수 (3.141592를 소수점 셋째로 정리! 넷째자리에서 반올림)

mean() : 산술평균 계산 함수


 

05. 다항 회귀와 과(대)적합/과소적합 이해

 

- 다항 회귀 이해

다항 회귀 : 회기 계수가 선형인 선형 회귀 / 비선형 함수를 선형 모델엥 적용시켜 구현

전처리 변환 클래스 중 하나인 PolynomialFeatures 클래스로 피처를 다항식 피처로 변환

단항값 [ x1, x2 ] => 다항값 [ 1, x1, x2, x1^2, x1x2, x2^2 ]

 

변환 작업 수행 메서드

fit() : 훈련해 ! (데이터 학습. 데이터에 모델 맞추기)

transform() : 변형해 ! (실제 학습을 적용)

 

 

( 주피터 노트북 코드 실습 )

 

 

[ 사용한 넘파이 함수들 ] 

arrange( start 디폴트 0 , stop , steps 디폴트 1 ) : 0부터 배열 생성.

reshape(n,m) : ndarray 차원과 크기 변경. (n행 m열로) 

x = np.arrange(4).reshape(2,2) #2x2 행렬 생성

#2차 다항식으로 변환
poly = PolynomialFeatures(degree = 2) 
ploy.fit(x)
poly_ftr = poly.transform(x)

 

 

 

 

사이킷런의 Pipeline 객체로 피처 변환과 선형회귀 연결을 한번에~ 다항 회귀 구현

 


- 다항 회귀를 이용한 과소적합 및 과적합 이해

지나치게 복잡한 과적합, 지나치게 단순한 과소적합 모델이 아닌 균형 잡힌 모델이 좋은 예측 모델

 

차수가 높아질수록 복잡한 피처 간의 관계까지 모델링이 가능하지만,

학습 데이터에만 맞춘 학습이 이뤄져 테스트 데이터의 예측 정확도는 낮아짐 (과적합 문제)

다항 회귀의 과적합 문제

출처 : https://bigdaheta.tistory.com/20

 

과적합 : 위 그림의 가장 오른쪽 그래프처럼,

학습 데이터에만 너무 맞춰서 다른 데이터에 대한 예측력이 낮은 경우

 

과소적합 : 가장 왼쪽 그래프의 경우처럼,

모델이 너무 단순해 데이터의 구조를 학습하지 못하는 경우

 

 

* random.seed()

: 무작위 규칙의 기준 ! seed를 사용해 무작위의 결과를 특정 값으로 고정 가능.


- 편향 - 분산 트레이드오프 ( Bias - Variance Trade off )

머신러닝이 극복해야할 가장 중요한 이슈 중 하나

 

과소적합 모델 : 매우 단순화되어 한 방향성으로 치우친 경향

= 고편향성 (high Bias)

 

과적합 모델 : 데이터 하나하나를 반영하며 매우 복잡해졌음

= 고분산성 (high Variance) 

 

편향과 분산의 고/저에 따른 4가지 유형

 

📌트레이드오프 

편향이 높으면 분산이 낮아지고, (과소적합)

분산이 높으면 편향이 낮아진다. (과적합)

 

높은 편향 / 낮은 분산에서 과소적합되기 쉽고,

낮은 편향 / 높은 분산에서 과적합되기 쉽다.

 

편향 분산에 따른 전체 오류값 곡선

 

 

편향과 분산이 서로 트레이드오프를 이루며, 오류 cost값이 최대로 낮아지는 모델을 구축하는 것이

가장 효율적인 머신러닝 예측 모델을 만드는 방법이다.


06. 규제 선형 모델 - 릿지, 라쏘, 엘라스틱넷

 

 

회귀 계수는 데이터에 적합하면서도, 회귀 계수가 커지는 것은 제어할 수 있어야 한다.

 

그래서 비용함수는,

잔차 오류값을 최소로 하는 RSS 최소화 방법

과적합을 방지를 위해 회귀 계수 값이 커지지 않도록 하는 방법이 서로 균형을 이뤄야한다.

 

규제란,

비용함수에 alpha라는 튜닝 파라미터를 설정해 이 값으로 페널티를 부여하여

회귀 계수값의 크기를 감소시켜 과적합을 개선하는 방식

 

 

L1 규제 : w의 절댓값에 대해 페널티 부여 (라쏘 회귀)

L2 규제 : w의 제곱에 대해 페널티 부여 (릿지 회귀)


- 라쏘 회귀

모델에서 영향력이 작은 피처는 배제하여 모델을 단순화, 모델 해석력 향상 (L1 규제)

 

상수값으로 모든 가중치를 깎아나가며, 규제가 강해지면, 가중치들이 0에 가까워지거나, 0이 된다.

그러면, 중요하지 않은 특성들은 모델에서 제외가 되고, 모델이 단순해진다. (피처 선택 기능 수행 ! )

가장 중요한 특성이 무엇인지 알게 되므로 모델의 해석력이 좋아진다.


- 릿지 회귀

큰 가중치는 빠르게 작아지고, 값이 작은 가중치는 천천히 작아지게 ! (L2 규제)

 

라쏘와 달리 제외되는 가중치는 없지만,

가중치들이 골고루 0에 가깞게 작아져 편향이 증가하고 분산이 감소한다.

즉, 모델의 과적합을 피할 수 있다.


- 엘라스틱넷 회귀

릿지회귀와 라쏘회귀의 절충 모델 ( L1, L2 규제가 결합 )

라쏘 회귀에 L2 규제를 추가.

두 규제가 결합되어 수행시간이 상대적으로 오래 걸림.

 


- 선형 회귀 모델을 위한 데이터 변환

선형 회귀 모델 적용 전, 스케일링 / 정규화 작업 수행

피처나 타깃값의 분포가 심하게 왜곡된 경우에 다음과 같은 방법의 변환 작업 수행.

 

 

1. StandardScaler 클래스로 평균 0, 분산 1인 표준 정규 분포 데이터 세트로 변환
or   MinMaxScaler 클래스로 최솟값 0, 최댓값 1인 값으로 정규화


2. 스케일링/정규화를 수행한 데이터 셋에 다시 다항 특성을 적용해 변환
1번으로 예측 성능에 향상이 없을 경우 적용

3. 로그 변환 (log transformation)
원래 값에 log 함수 적용하면, 정규분포에 가깝게 분포됨.

 

3번. 로그 변환이 가장 많이 사용되는 변환 방법

(1번은 예측 성능 향상을 크게 기대하기 어렵고,

2번은 피처 개수가 많을 경우 다항 변환으로 너무 많은 피처가 생겨 과적합 위험이 커짐)

 

타깃값도 일반적으로 로그 변환 많이 적용함.


07. 로지스틱 회귀

선형 회귀 방식을 분류에 적용한 알고리즘

 

종속 변수(결과)가 범주형이면서 0 or 1로 표현 가능한 데이터라면 로지스틱 예측 모델 만들 수 있음.

ex) 성별, 합/불합, 양성/음성 등등

 

이진 분류 예측 성능이 뛰어나 이진 분류의 기본 모델로 쓰인다.

또, 희소한 데이터 세트 분류에도 성능이 뛰어나, 텍스트 분류에서도 자주 사용된다.

 


 

선형 회귀는 회귀 계수의 관계를 모두 선형으로 가정하는 방식.

회귀 계쑤를 선형으로 결합하는 회귀 함수를 구해, 독립변수를 입력해 결괏값을 예측한다.

회귀 계수를 기반으로 최적 회귀 함수를 도출하는 것이 회귀의 목표 ! 

 

 

08. 회귀 트리

결정 트리와 같은 트리 기반 회귀 방식

 

(주피터 노트북 실습 파일 참고)

728x90
Comments