ML (Basic of Regression- 회귀)

이동일·2023년 9월 21일
0

Machine Learning

목록 보기
5/12

지도학습

지도학습(Supervised Learning):입력 데이터와 해당 데이터에 대한 정답 또는 레이블(label)이 주어진 상태에서 모델을 학습시키는 방법
ex)스팸메일

  • 종류
  1. 회귀(Reggression): 연속형 출력 변수 예측한다.
  2. 군집화(Clustering): 지도 학습과 달리 데이터를 클러스터 또는 그룹화하는 비지도 학습 알고리즘
  3. 차원 축소(Dimensionality Reduction): 차원 축소 알고리즘은 데이터의 특성 수를 줄이는 데 사용된다.
  4. 서포트 벡터 머신(Support Vector Machines): 이진 및 다중 클래스 분류와 회귀 작업에 사용되는 강력한 알고리즘
  5. 앙상블 학습(Ensemble Learning): 여러 기본 모델을 결합하여 더 강력한 예측 모델을 생성하는 기법

선형회귀

선형회귀(Linear Regression)는 지도 학습의 한 율형으로, 입력 변수와 연속적인 출력 변수 간의 관계를 모델링하는 데 사용되는 간단하고 기본적인 통계적 기술

최소 제곱법

최소 제곱법(Ordinary Least Squares, OLS): 선형 회귀 모델을 학습하고 최적화하는데 사용된다. OLS를 사용하여 데이터와 선형 모델 간 잔차(오차)를 최소화 하여 모델의 가중치와 절편을 추정할 수 있다.

1.데이터 프레임 생성
import pandas as pd
data = {'x': [1,2,3,4,5], 'y':[1,3,4,6,5]}
df = pd.DataFrame(data)


2.선형 회귀 모델 생성
import statsmodels.formula.api as smf
lm_model = smf.ols(formula = 'y ~ x', data=df).fit() #선형회귀 모델 수식 지정  (y는 출력, x는 입력변수)

3. 모델 확인
lm_model.params #y절편 0.5  x기울기 1.1
#Intercept    0.5
#x            1.1



4. 시각화
plt.figure(figsize=(12,10))
sns.lmplot(x='x', y='y', data=df)
plt.xlim([0,5])

잔차분포

잔차분포(Residdual Distribution): 선형 회귀 모델을 통해 예측된 값과 실제 관측된 값 사이의 차이인 잔차(Residuals)들의 확률 분포를 나타낸다.
잔차는 각 데이터 포인트에 대한 모델의 예측 오차를 나타낸다.

  • 특징
  1. 잔차의 정규성(Normality of Residuals): 선형 회귀 모델에서는 잔차가 정규 분포를 따르는 것이 중요하다. 잔차들이 평균이 0이고 고르게 분포되어 있어야 한다.
  2. 잔차의 독립성(Independence of Residuals): 잔차들은 서로 독립적이어야 한다. 즉, 한데이터 포인트의 잔차가 다른 데이터 포인트의 잔차에 영향이 있으면 안된다.
  3. 잔차의 등분산성(Homoscedasticity): 잔차들의 분산은 입력 변수와 관계없이 고정되어야 한다.
resid = lm_model.resid
resid

0   -0.6
1    0.3
2    0.2
3    1.1
4   -1.0

결정계수(R2)

결정 계수: 모델이 주어진 데이터에 얼마나 잘 적합하고 주어진 종속변수의 변동성을 얼마나 잘 설명하는지 나타내는 통계적 지표


1.만들어둔 lm_model(선형 회귀) 사용
import numpy as np
mu = np.mean(df['y']) #실제 종속변수 y의 평균을 계산하여 mu 변수에 저장
y = df['y']

y_hat = lm_model.predict() #위에서 만든 학습된 선형 회귀 모델 lm_model을 사용하여 입력변수x에 대한 예측값 y_hat 생성
np.sum((y_hat - mu)**2) / np.sum((y - mu)**2) #결정계수 계산

lm_model.rsquared #선형 회귀 모델 성능 평가를 간단하게 확인
# 출력값 0.8175675675675674

#lm_model.rsquared #선형 회귀 모델 성능 평가를 간단하게 확인


2. 시각화

sns.distplot(resid, color = 'black')

0개의 댓글

Powered by GraphCDN, the GraphQL CDN