본문 바로가기
데이터 사이언스/하계 AI 중급과정

1. Linear Regression (선형 회귀)

by 수학과인데 공대생 2023. 6. 29.
728x90

머신러닝의 목적은 데이터의 알려진 속성들을 학습하여 예측 모델을 만드는데 있다. 이때 잘 찾아 낼 수 있는 가장 직관적이고 간단한 모델은 선(line)이다.

즉, 선형 회귀는 정돈된 데이터들을 가장 잘 표현한 직선을 찾는 과정을 말한다.

단순 선형 회귀

위 그래프에서 다음 데이터들을 가장 잘 표현한 선은 무엇일까?

3번 그래프 임을 쉽게 알 수 있다.

3번 그래프는 일차함수 그래프이며, 이는 일차 함수(y = ax + b)의 형태로 나타난다.

 

기울기와 y절편을 찾는 과정은 최소제곱문제로서 찾아낼 수 있다.

cf) https://math-love.tistory.com/7

 

선형대수학 최소제곱분석

임의의 연립일차방정식 Ax = b는 해를 갖는 경우와 해를 갖지 않는 경우로 나누어 진다. 최소제곱문제는 연립방정식이 해를 갖지 않으면 어떤 해를 찾아야 가장 적절한지를 이야기 하는 것이다. E

math-love.tistory.com

 

선형회귀는 일차 함수의 관계이므로

x를 독립변수, y를 종속변수라 할 수 있다.

 

선형회귀는 한 개 이상의 독립 변수 x와 y의 관계를 모델링한다.

여기서 독립변수의 개수가 하나라면 단순 선형 회귀, 두 개 이상이라면 다중 선형 회귀라고 한다.

독립변수 개수 선형 회귀 종류 독립 & 종속 관계
1개 단순 선형 회귀 y = b + ax
2개 이상 다중 선형 회귀 y = b + a1x1 + a2x2 + ... + anxn

 

이번 포스팅에서는 단순 선형 회귀에 관해서만 다룬다.

단순 선형 회귀에 대한 예를 살펴보자.

 

공부 시간에 따른 시험 점수 in Excel

다음 표는 공부 시간에 따른 시험 점수를 나타낸 것이다.

1열이 공부 시간이며, 2열이 시험 점수에 해당한다.

공부 시간은 독립변수, 시험 점수는 종속변수이다. 독립변수가 공부 시간 하나이므로 단순 선형 회귀에 해당한다.

 

 

이제 주피터 노트북에서 코드를 입력해보자.

import matplotlib.pyplot as plt # 시각화
import pandas as pd
dataset = pd.read_csv('LinearRegressionData.csv') # LinearRegressionData.csv -> 공부 시간에 따른 시험 점수 csv파일

dataset에 공부 시간에 따른 시험 점수를 넣는다.

head() 메서드를 이용해 dataset를 확인하면 아래와 같다.

head() 메서드는 5행까지 출력

이제 독립변수 X와 종속변수 y를 지정해주어야 한다.

X = dataset.iloc[:, :-1].values  # 처음부터 마지막 컬럼 직전까지의 데이터 (독립변수)
y = dataset.iloc[:, -1].values # 마지막 컬럼 데이터 (종속 변수)

독립변수 X의 슬라이싱을 [ : , :-1]과 같이 한 이유는 단순 선형 회귀가 아닌 경우를 대비해서 이다. 다중 선형 회귀의 경우 독립변수의 개수가 2개 이상이기 때문에 마지막 열인 종속변수를 제외하고 모두 독립변수가 된다.

 

from sklearn.linear_model import LinearRegression
reg = LinearRegression() # 객체 생성
reg.fit(X, y) #학습 (모델 생성)

sklearn.linear_model 패키지에서 LinearRegression 클래스를 import한 후  객체를 생성한다.

이후, fit 매서드를 통해 학습을 시킨다.

 

y_pred = reg.predict(X) # 독립변수 전체에 대한 예측 값
y_pred

학습된 객체의 predict를 출력한다.

 

plt.scatter(X, y, color = 'blue')
plt.plot(X, y_pred , color = 'green')
plt.title('Score by hours')
plt.xlabel('hour')
plt.ylabel('score')
plt.show()

matplotlib를 활용한 시각화는 다음과 같다. 실제 값이 직선에 근접해 있으며 좋은 모델이라고 할 수 있을 것이다.

기울기, y절편, 직선의 방정식

다음을 통해 기울기, y절편, 직선의 방정식을 구할 수 있다.

728x90