머신러닝
스파르타 머신러닝 강의(다중선형회귀)
골드인생
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) : 오차의 분산이 모든 수준의 독립 변수에 대해 일정해야 한다.
즉, 오차가 특정 패턴을 보여서는 안되며, 독립 변수의 값에 상관없이 일정해야 한다.
3. 정규성(Nomality) : 오차 항은 정규 분포를 따라야 한다.
4. 독립성(Independence) : X 변수는 서로 독립적이어야 한다.
- 다중공선성 문제 : 변수가 많아지면 서로 연관이 있는 경우가 많으므로 독립변수 간의 강한 상관관계가 나타나는 것.
- 다중공선성 문제 해결 방법
→ 서로 상관관계가 높은 변수 중 하나만 선택(산점도 혹은 상관관계 행렬)
→ 두 변수를 동시에 설명하는 차원축소(Principle Component Analysis, PCA) 실행하여 변수 1개로 축소
☑️ 선형 회귀 정리
- 장점
- 직관적이며 이해하기 쉽다. X-Y관계를 정량화 할 수 있다.
- 모델이 빠르게 학습된다(가중치 계산이 빠르다)
- 단점
- X-Y간의 선형성 가정이 필요하다.
- 평가지표가 평균(mean)포함 하기에 이상치에 민감하다.
- 범주형 변수를 인코딩시 정보 손실이 일어난다.
- Python 패키지
sklearn.linear_model.LinearRegression
# 데이터 프로세스 개요