머신러닝

스파르타 머신러닝 강의(다중선형회귀)

골드인생 2024. 8. 12. 16:32

# 다중선형회귀(다항회귀)   >>> x 변수가 2개 이상

- 머신러닝 모델에 범주형 데이터를 훈련시킬려면 데이터를 숫자로 바꿔야 한다. 이를 Encoding 과정이라 한다.

 

# 함수에 조건을 넣어서 범주형 데이터의 값을 숫자로 바꿔주는 방식을 사용

# 범주형 데이터 사용하기
 - 함수를 쓸 수도, sklearn에서 제공하는 함수를 쓸 수도 있음

tips_df.head(3) # 사용할 데이터

# Female 0, Male 1  >> 범주형 데이터를 숫자로 변환하는 함수 만들기
def get_sex(x):
    if x == 'Female':
        return 0
    else:
        return 1

# apply 메소드는 매 행을 특정한 함수를 적용한다.
tips_df['sex_en'] = tips_df['sex'].apply(get_sex) # head()로 숫자형 데이터로 변경된 데이터 확인

# 모델설계도 가져오기
# 학습
# 평가
model_lr3 = LinearRegression()
X = tips_df[['total_bill', 'sex_en']] # X(독립변수)가 2개 이상 # head()
y = tips_df[['tip']] # head()

# 학습
model_lr3.fit(X,y)
# 예측
y_pred_tip2 = model_lr3.predict(X) # y_pred2[:5]

# 단순선형회귀 mse : X변수가 전체 금액
# 다중선형회귀 mse : X변수가 전체 금액, 성별
print('단순선형회귀', mean_squared_error(y_true_tip, y_pred_tip))
print('다중선형회귀', mean_squared_error(y_true_tip, y_pred_tip2))

# r제곱 값
print('단순선형회귀', r2_score(y_true_tip, y_pred_tip))
print('다중선형회귀', r2_score(y_true_tip, y_pred_tip2))

 

# 선형회귀의 가정

1. 선형성(Linearity) : 종속 변수(Y)와 독립 변수(X) 간에 선형 관계가 존재해야 한다.

2. 등분산성(Homoscedasticity) : 오차의 분산이 모든 수준의 독립 변수에 대해 일정해야 한다.

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

X : 독립변수 Y : 에러 >> 첫 번째만 가능

3. 정규성(Nomality) : 오차 항은 정규 분포를 따라야 한다.

4. 독립성(Independence) : X 변수는 서로 독립적이어야 한다.

 - 다중공선성 문제 : 변수가 많아지면 서로 연관이 있는 경우가 많으므로  독립변수 간의 강한 상관관계가 나타나는 것.

 - 다중공선성 문제 해결 방법

  → 서로 상관관계가 높은 변수 중 하나만 선택(산점도 혹은 상관관계 행렬)

  → 두 변수를 동시에 설명하는 차원축소(Principle Component Analysis, PCA) 실행하여 변수 1개로 축소

 

☑️ 선형 회귀 정리

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

 

 

# 데이터 프로세스 개요