[AI Bootcamp] N211 - Simple Regression

HYUNG JIN·2021년 8월 9일
0

AI Bootcamp

목록 보기
12/17
post-thumbnail

Session Review

독립변수와 종속변수

  • 독립변수(independent variable; x): 우리가 조정 가능한 것 (변화하는 것)
    = 설명(Explanatory), 특성(feature)
  • 종속변수(dependent variable; y): 결과
    = 레이블(label), 타겟(target)

Linear Regression Model

선형회귀모델 = 변수들을 가장 잘 설명하는 하나의 직선을 긋는 것

최소제곱법

회귀선은 x변수들의 평균, y변수들의 평균에 해당하는 (x,y)를 지나감 b.c. 선과 변수들 간의 error의 합이 가장 작은 선을 그어야 함

예측값과 관측값(타겟값)의 차이 = 잔차 -> 잔차 제곱들의 합 = RSS = SSE(Sum of Squared Error) = 회귀모델의 비용함수
-> 이러한 비용함수를 최소화하는 모델을 찾는 과정이 회귀모델 학습 과정

예측값 공식

y^\hat{y} = Bo+B1xBo + B1 x

  • y^\hat{y}: y의 예측값 (회귀선)
  • BoBo: y절편
  • B1B1: 회귀선의 기울기
  • xx: 독립변수

BoBo, B1B1 구하는 법

B1B1
x, y의 평균을 각각 xˉ\bar{x}, yˉ\bar{y} 라고 할 때,
BoBo = (x - xˉ\bar{x})(y - yˉ\bar{y})의 합 / (x - xˉ\bar{x})^2 의 합

  • 독립변수, 종속변수가 양의 관계 = 기울기(B1B1) 양수
  • 독립변수, 종속변수가 음의 관계 = 기울기(B1B1) 음수

❗️ 기울기 차이의 의미
두 모델의 기울기를 비교할 때, 기울기가 크다는 것 = 독립변수의 차이에 따른 종속변수의 변화량이 크다

BoBo
예측값 공식에서 y^\hat{y}yˉ\bar{y} 값 넣고, x에 xˉ\bar{x} 값 넣고, 앞서 구한 B1B1 값을 대입하여 구함

Baseline Model

👀 기준모델이 필요한 이유
가장 간단하면서도 최소한의 성능을 나타내는 기준이 되는 모델 -> 모델을 만들 때, 최소한 이 것 이상의 성능을 내야한다는 것

문제별 기준모델 설정

  • 분류문제: 타겟의 최빈 클래스
  • 회귀문제: 타겟의 평균값
  • 시계열회귀문제: 이전 타임스탬프의 값

선형회귀의 경우 기준모델을 세울 때, 전체적인 그림을 확인하기 쉬운 '평균'을 사용하는 것이지 기준모델 자체가 '평균'인 것은 아님

y^\hat{y} , y.mean의 차이

  • (y - y^\hat{y}): 내가 만든 모델의 값과 실제값 사이의 오차
  • (y - y.mean): 기준모델과 실제값 사이의 오차

Simple Linear Regression

scatterplot에 가장 잘 맞는(best fit) 직선을 그려주면 그것이 회귀 예측모델

시각화 방법
sns.regplot(x=독립변수, y=종속변수)

scikit-learn 사용한 선형회귀모델 분석

sklearn 활용하기 위해서는 데이터 구조를 특성 데이터와 타겟 데이터로 나눈 매트릭스 형태로 바꿔줘야 함

  • 특성행렬(X): 보통 2차원 행렬 - 주로 np.arraypd.Dataframe로 표현
  • 타겟배열(y): 보통 1차원 형태 - 주로 np.arraypd.Series로 표현
from sklearn.linear_model import LinearRegression

model = LinearRegression() # 예측모델 인스턴스 만듦

model.fit(X_train, y_train) # 모델을 학습
model.predict(X_test) # 새로운 데이터를 예측

Machine Learning process

❗️ 일반적인 프로그래밍과 머신러닝의 차이점
룰과 데이터를 제공하여 답을 구해내는 일반적인 프로그래밍과 달리 머신러닝은 데이터와 답을 통해 룰을 찾아내는 방법

선형회귀모델의 계수(Coefficients)

회귀계수(coefficients): model.coef_
절편(intercept): model.intercept_

❗️ 회귀계수는 x(특성)가 1 증가할 때의 y(타겟) 변화량, 즉, 회귀선의 기울기를 의미

Food for Thought

Tabular Data

데이터 분석에서 중요한 역할 -> table 형식의 2차원 모양 (row, column 존재)

❓ Matrix vs. Tabulix
Tabulix: 한 column에는 무조건 같은 데이터 타입이어야 함 BUT, row 내에서는 다른 데이터 타입들이 함께 있어도 됨
<-> Matrix: 한 Matrix 안에는 같은 데이터 타입만 존재

Component of Tabular Data

  • Observations(row)
  • Variables(column)
  • Relationships(connection between each data in tables)

Dataframe vs. Matrix

판다스의 데이터프레임을 sklearn으로 옯겨서 계산하려고 하면 계산 안됨 -> 매트릭스로 바꿔줘야 수학적 계산이 가능

  • 데이터프레임을 사용하는 이유: data wrangling: 데이터에서 의미 도출 = 정보 추출
  • 매트릭스를 사용하는 이유: 머신러닝은 아주 고도화된 계산기 -> 수학적 계산을 머신러닝이 할 수 있도록 하기 위해서는 매트릭스 형태여야 함

Supervised Learning

PropertyClassfication(분류)Regression(회귀)
Output TypeDiscrete (class labels)continuous (numbers)
What are you trying to find?Decision boundaries“Best fit line”
EvaluationAccuracy“Sum of squared error” or “R squared”

👀 현업에서는 회귀보다 분류를 사용하는 경우가 더 많음
b.c. 맞출 확률이 더 높아짐 -> 정확한 값을 예측하는 것 보다 0 아니면 1이라는 binary 분류로 예측할 때, 맞을 확률이 더 높아지기 때문

+) 시계열회귀문제: 시간에 따라 변화하는 양상을 보는 것 -> 순서가 중요!

👀 지도학습 - 비지도학습의 차이
레이블(label)이 있냐 없냐의 차이
-> 답이 있냐 없냐로 설명하는 것은 약간 핀트가 나간 느낌

P-value

P-value: False Positive의 비율 -> 0.01(0.05)보다 작을 떄에는 statistically significant하다고 할 수 있음(유의미하다) b.c. p-value의 넓이가 작을수록 내 모델의 설명력이 좋은 것이니까!

P-value와 T-value는 같은 것이라고 보면 됨 -> 데이터 분석에서는 주로 P-value 사용
다만, 대학원에서 연구, 논문쓸 때에는 T-value 사용 b.c. T-value가 더 정확함

R-squared(R2R^2)

모델의 설명력을 0과 1사이의 값을 표현한 것 -> 1에 가까울수록 설명이 잘 된 모델 (0인 경우는 특성과 타겟 간의 연관이 없는 것)

e.g. R2R^2 = 0.8인 모델은 80%의 설명력을 가진 것

profile
Always stay confident

0개의 댓글