ML 01. 선형회귀

cuckoo·2022년 12월 7일
0

Machine Learning

목록 보기
1/11

키워드

  • 선형회귀모델
  • 지도학습(Supervised Learning)
  • 회귀모델의 기준모델
  • Scikit-learn

지도학습(Supervised Learning)

정답(label)이 있는 데이터를 학습하여 데이터와 정답 간의 규칙 파악하는 것입니다.

  • 새로운 데이터에 대하여 학습한 내용을 기반으로 정답 예측
  • 회귀 문제
    • 연속적인 값 예측
    • e.g. 주택 가격 예측, 강수량 예측 등
  • 분류 문제
    • 데이터의 특정 범주에 속할 확률 예측
    • e.g. 상품 구매 에부 예측(이진 분류), 고양이 종 예측(다중 분류) 등

머신러닝(Machine Learning,ML)

데이터로부터 유용한 예측을 하기 위해 모델을 학습시키는과정

  • 모델이란 무엇일까요?
    • 예측에 활용할 수 있는 데이터간의 수학적 관계, 규칙, 패턴 등을 의미
    • 데이터의 입력 특성(feature)들과 타겟(target)간의 수학적 관계를 정의한 것
| x | y |
| --- | --- |
| 20 | 2 |
| 30 | 3 |
| 10 | 1 |
| 50 | 5 |
| 40 | 4 |

→ $f(x) = y =0.1x$

기준모델(Baseline Model)

예측 모델을 만들기 전에 가장 간단하면서도 직관적이면서 최소한의 성능을 나타내는 기준이 되는 모델을 기준모델이라고 합니다.

  • 예측 모델이 의미있는지 판단하기 위한 비교 기준 필요

문제별로 기준모델

  • 분류문제: 타겟의 최빈 클래스 → 각각의 모든 데이터에 대하여 해당 값으로 예측
  • 회귀문제: 타겟의 평균값
  • 시계열회귀문제: 이전 타임스탬프의 값
  • 간단한 예측 모델
    • e.g. 선형회귀, 로지스틱 회귀 등

선형회귀모델(Linear Regression Model)

선형 회귀는 알려진 다른 관련 데이터 값을 사용하여 알 수 없는 데이터의 값을 예측하는 데이터 분석 기법으로 선형관계의 최적의 직선을 찾는 과정을 말합니다.

Error=(priceguess)Error = (price - guess)

mae=(1n)i=1npriceiguessimae = (\frac{1}{n})\sum_{i=1}^{n}\left | price_{i} - guess_{i} \right |

Simple Linear Regression (단순 선형 회귀)

  • 1개의 특성을 기반하는 선형회귀 모델

    • y=ax+by = ax +b
  • 잔차(residual)

    • 실제값 - 모델의 예측값
  • 비용함수

    • 파라미터와 에러의 관계를 나타낸 함수
  • RSS(residual sum of squares)
    - 잔차 제곱들의 합

    형회귀모델의 계수(Coefficients)

## 계수(coefficient)
model.coef_
## 절편(intercept)
model.intercept_

예측모델(Predictive Model)

  • 선형관계가 가장 적절한 직선 → RSS 최적화

용어 정리

  • 종속변수

    • 반응(Response)변수, 레이블(Label), 타겟(Target)
  • 독립변수

    • 예측(Predictor)변수, 설명(Explanatory), 특성(feature)
  • 예측값 : 만들어진 모델이 추정하는 값

  • 잔차(residual) : 예측값과 관측값 차이

  • 오차 : 모집단에서의 예측값과 관측값 차이

  • 회귀선 : 잔차 제곱들의 합인 RSS(residual sum of squares)를 최소화 하는 직선

  • RSS or SSE(Sum of Square Error) : 회귀모델의 비용함수(Cost function)

    • 여기서 계수 α 와 β 는 RSS를 최소화 하는 값으로 모델 학습을 통해서 얻어지는 값입니다.
  • 최소제곱회귀 혹은 Ordinary least squares(OLS) : 잔차제곱합을 최소화하는 방법

  • 학습 : 비용함수를 최소화 하는 모델을 찾는 과정

  • 보간(interpolate) : 주어져 있지 않은 점의 함수값을 예측

  • 외삽(extrapolate) : 기존 데이터의 범위를 넘어서는 값을 예측

  • Mean Absolute Error(MAE, 평균절대오차) :예측 error 의 절대값 평균

    scikit-learn 선형 회귀 분석

  • 우선 여러분께서 풀어야 하는 문제를 풀기에 적합한 모델을 선택하여 클래스를 찾아본 후 관련 속성이나 하이퍼파라미터를 확인해 봅니다.

  1. 데이터 준비
    • 특성행렬 X
    • 타겟 벡터 y
  2. fit() 메소드를 사용하여 모델을 학습합니다.
  3. predict() 메소드를 사용하여 새로운 데이터를 예측합니다.
from sklearn.linear_model import LinearRegression

model = LinearRegression()

feature, target = ['bathrooms'] , ['price']
X_train, y_train = df[feature] , df[target]

model.fit(X_train,y_train)

X_test = [[x] for x in df['bathrooms']]
y_pred = model.predict(X_test)

plt.scatter(X_train, y_train, color='black', linewidth=1)

plt.scatter(X_test, y_pred, color='blue', linewidth=1);
  • 특성 데이터와 타겟 데이터를 나누어 줍니다.
  • 특성행렬은 주로 X 로 표현하고 보통 2-차원 행렬입니다([n_samples, n_features]). 주로 NumPy 행령이나 Pandas 데이터프레임으로 표현합니다.
  • 타겟배열은 주로 y로 표현하고 보통 1차원 형태(n_samples) 입니다. 주로 Numpy 배열이나 Pandas Series로 표현합니다.
profile
ENTJ 데이터 분석가 준비중입니다:)

0개의 댓글