TIL/머신러닝

머신러닝 - 다중 선형회귀 이론, 실습

jojoon2786 2024. 8. 12. 19:36

다중선형회귀

실제의 데이터들은 비선형적 관계를 가지는 경우가 많고, X 데이터가 압도적으로 많음.

이를 위해서 X변수를 추가하거나 변형할 줄 알아야 함.

 

수치형 데이터

  • 연속형 데이터 : 두 개의 값이 무한한 개수로 나누어진 데이터 ex) 키, 몸무게
  • 이산형 데이터 : 두 개의 값이 유한한 개수로 나누어진 데이터 ex) 주사위 눈, 나이

범주형 데이터

  • 순서형 자료 : 자료의 순서 의미가 있음 ex) 학점, 등급
  • 명목형 자료 : 자료의 순서 의미가 없음 ex) 혈액형, 성별

> 범주형 데이터를 머신러닝 모델에 훈련시키려면 해당 데이터를 숫자로 바꿔야함.

   이를 Encoding 과정이라 함.

 

다중 선형회귀 실습

전 포스팅에서 실습했던 sklearn의 tips 데이터셋으로 다중선형회귀를 실습해보고자 한다.

 

'성별' 컬럼을 X 값으로 추가해보자.

male과 Female 두 데이터가 존재한다. > male을 0으로 Female을 1로 바꿔주는 함수를 작성

def get_sex(x):
    if x == 'male':
        return 0
    else:
        return 1

 

이를 tips_df 의 'sex' 컬럼에 적용. (apply 함수 사용)

tips_df['sex_en'] = tips_df['sex'].apply(get_sex)

 

그 다음으론 모델 설계도를 가져온다.

model_lr3 = LineRegression()
X = tips_df['total_bill', 'sex_en']
y = tips_df['tip']

 

학습하기

model_lr3.fit(X,y)

 

예측

y_pred_tip2 = model_lr3.predict(X)

y_true_tip 값은 전 실습과 똑같으니 생략

 

그 다음으론 평가를 진행

 # 선형회귀와 다중선형회귀의 MSE 값 비교
print('단순선형회귀', mean_squared_error(y_true_tip, y_pred_tip))
print('다중선형회귀', mean_squared_error(y_true_tip, y_pred_tip2))

결과 : 단순선형회귀 1.036019442011377

          다중선형회귀 1.0358604137213614

 # 선형회귀와 다중선형회귀의 RMSE 값 비교

결과 : 단순선형회귀 0.45661658635167657

          다중선형회귀 0.45669099534149974

 

크게 차이 없는 것을 볼 수 있음. 이 결과로 알 수 있는 것은

1. 성별이 tip에 큰 영향을 끼치지 않는다.

or

2. 성별과 total_bill이 의미하는 바가 비슷하다.

 

> 다중선형회귀 실습을 해보기 전에 먼저 컬럼선택 하는 과정이 필요함. (시각화)

 

선형회귀의 가정

  1. 선형성(Linearity) : 종속 변수(y)와 독립 변수(x) 간에 선형 관계가 존재해야 함.
  2. 등분산성(Homoscedasticity) : 오차의 분산이 모든 수준의 독립 변수에 대해 일정해야 함. 즉, 오차가 특정 패턴을 보여서는 안 됨. 독립 변수의 값에 상관없이 일정해야 함.
  3. 정규성(Nomality) : 오차 항은 정규 분포를 따라야 함.
  4. 독립성(Independence) : X변수는 서로 독립적이어야 함.

다중 공산성 문제

  • 변수가 많아지면 서로 연관이 있는 경우가 많다. 이처럼 회귀분석에서 독립변수(X) 간의 강한 상관관계가 나타나는 것

다중 공산성 문제 해결방법

  • 서로 상관관계 높은 변수 중 하나만 선택(산점도 혹은 상관관계 행렬)
  • 두 변수를 동시에 설명하는 차원축소(PCA*)를 실행하여 변수 1개로 축소

pairplot 기능을 이용한 산점도
heatmap을 이용한 상관관계 행렬
차원축소

차원축소는 공통된 특성이라는 축을 표현하는 거라고 생각. 변수 갯수를 줄일 수 있다.

ex) X축을 weight Y축을 height라고 했을 때, 축은 덩치, 체격 정도로 생각할 수 있음.

 

선형회귀의 장단점

  • 장점
    • 직관적이며 이해하기 쉽다. X-Y관계를 정량화 할 수 있다.
    • 모델이 빠르게 학습된다(가중치 계산이 빠르다)
  • 단점
    • X-Y간의 선형성 가정이 필요하다.
    • 평가지표가 평균(mean)포함 하기에 이상치에 민감하다.
    • 범주형 변수를 인코딩시 정보 손실이 일어난다.

 

데이터 프로세스의 개요

데이터 분석은 위와 같은 단계로 이루어짐. 프로젝트 시 참고