머신러닝 | 다중선형회귀 | 범주형 데이터 인코딩(Encoding) 방법

728x90

 

[참고 게시글]

[데이터분석 과정/머신러닝] - 머신러닝 | 선형회귀 (Linear Regression) 직선 구하는 방법 | 회귀분석 평가지표 (MSE, R Square) | 회귀분석 | 지도학습

 

머신러닝 | 선형회귀 (Linear Regression) 직선 구하는 방법 | 회귀분석 평가지표 (MSE, R Square) | 회귀분

1. 선형회귀 이론 ▶ 선형회귀 용어 정리 X는 독립변수, 원인변수, 설명변수 Y는 종속변수, 결과변수 ▶ 통계학에서 사용하는 선형회귀 식 β0 : 편향(Bias) β1 : 회귀 계수 ε : 오차(에러), 모델이 설

nasena.tistory.com


1. 다중선형회귀

 

▶ 다중선형회귀

이전 게시글에서는 X와 Y간의 데이터를 단순 선형회귀 분석 했음

하지만 실제의 데이터들은 비선형적인 관계를 가지는 경우가 많음

이를 위해 X변수를 추가할 수 도 있고, 변형할 수도 있음 

 

▶ 단순선형회귀 vs. 다중선형회귀


2. 범주형 데이터 사용하기

 

▶ 수치형 데이터 vs. 범주형 데이터

  • 수치형 데이터
    • 연속형 데이터 : 두 개의 값이 무한한 개수로 나누어진 데이터
      ex) 키, 몸무게
    • 이산형 데이터 : 두 개의 값이 유한한 개수로 나누어진 데이터
      ex) 주사위 눈, 나이
  • 범주형 데이터
    • 순서형 데이터 : 순서가 의미있는 데이터
      ex) 학점, 등급
    • 명목형 데이터 : 순서가 의미 없는 데이터
      ex) 혈액형, 성별

3. 다중선형회귀, 범주형 데이터 인코딩 실습

 

▶ 인코딩 (Encoding) 이란?

성별, 날짜와 같은 범주형 데이터를 임의로 0, 1 등의 숫자로 바꾸는 작업

 

다중선형회귀 실습하면서 인코딩 하는 방법도 같이 적어놓았으니 참고하실 분들은 클릭!

[참고 게시글]

[데이터분석 과정/머신러닝] - 머신러닝 | 선형회귀 (Linear Regression) 실습 | tips 데이터 | 범주형 데이터 인코딩 (Encoding) 하는 방법

 

머신러닝 | 선형회귀 (Linear Regression) 실습 | tips 데이터 | 범주형 데이터 인코딩 (Encoding) 하는 방법

1. 라이브러리 가져오기 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns 2. tips 데이터셋 구경하기 ▶ tips 데이터셋 안의 데이터들은 어떻게 생겼는지 살펴보기 tips_df = sns.load_dataset('tips')

nasena.tistory.com


4. 선형회귀 정리

 

4-1) 선형회귀 가정

① 선형성(Linearity)

: 독립변수(X)와 종속변수(Y) 간에 선형 관계가 존재해야 함

 

② 등분산성(Homoscedasticity)

: 오차(Error)의 분산이 모든 수준의 독립변수에 대해 일정해야 함

즉, 오차가 특정 패턴을 보여서는 안되며, 독립변수의 값에 상관없이 일정해야 함

X축: 독립변수, Y축: 오차(Error)

 

 

③ 정규성(Normality)

: 오차 항은 정규 분포를 따라야 함

 

④ 독립성(Independence)

: X변수는 서로 독립적이어야 함

 

▶ 그렇지 않으면 '다중공선성의 문제'가 일어남

  • 변수가 많아지면 서로 연관이 있는 경우가 있음
    회귀분석에서 독립변수(X) 간의 강한 상관관계가 나타나는 것다중공선성(Multicolinearity) 문제 라고 함

▶ 다중공선성 해결 방법

  • 서로 상관관계가 높은 변수 중 하나만 선택하기(산점도 혹은 상관관계 행렬)
  • 두 변수를 동시에 설명하는 차원축소(Principle Component Analysis, PCA)를 실행하여 변수를 1개로 축소
tips_df = sns.load_dataset('tips')

sns.pairplot(tips_df)

Seaborn의 tips 데이터의 pairplot

 

>> 자기 자신과의 상관관계는 의미가 없으므로 그 자리에는 해당 데이터의 히스토그램을 그려줌

>> tips 데이터에서는 total_bill과 tip이 서로 상관관계가 있는 것처럼 보임

>> 그런데 만약 X변수서로 상관관계가 있는 total_bill과 tip을 모두 사용하면 다중공선성의 문제가 일어남

 

(참고) 히트맵으로 상관관계 알아보기

 

(참고) 차원축소


4-2) 선형회귀 정리

 

▶ 선형회귀 분석 시 참고

: 머신러닝 모델 중 선형회귀는 가장 이해하기 쉽고, 사용하기 쉬움

: 하지만 말 그대로 X-Y변수 간의 선형적 관계가 좋아야만 좋은 성능을 낼 수 있음

 

▶ 선형회귀 장점과 단점

  • 장점
    • 직관적, 이해하기 쉬움, X-Y변수의 관계 정량화 가능
    • 모델 학습이 빠름(가중치 계산이 빠름)
  • 단점
    • X-Y변수 간의 선형성 가정이 필요함
    • 평가 지표가 평균(Mean)을 포함하기 때문에 이상치에 민감함
    • 범주형 변수를 인코딩할 때 정보 손실이 일어남
  • 사용하는 Python 패키지
    • sklearn.linear_model.LinearRegression
from sklearn.linear_model import LinearRegression

# 선형회귀 모델 평가지표(MSE, R Square)
from sklearn.metrics import mean_squared_error
from sklearn.metrics improt r2_score

# 두 개를 같이 적어도 됨
from sklearn.metrics import mean_squared_error, r2_score
728x90

댓글