머신러닝 회귀모델
단순선형회귀
회귀 분석의 절차
- X라는 값이 입력되면 Y=β0+β1X라는 계산식을 통해 값을 산출하는 예측 함수를 정의합니다.
- 실제 값 y와 예측 함수를 통해 도출된 예측값 pred_y간의 차이를 계산합니다.
- 계산한 차이에 기반하여 β0와 β1를 업데이트하는 규칙을 정의하고 이를 바탕으로 β0와 β1의 값을 조정합니다.
- 위의 과정을 특정 반복 횟수(iteration) 만큼 반복합니다.
- 반복적으로 수정된 β0와 β1를 바탕으로 Y=β0+β1X라는 회귀식을 정의합니다.
실습
- beta_0, beta_1, X 를 받아 회귀식을 통해 예측값 y_pred를 계산하여 반환하는 prediction() 함수를 구현합니다.
- 반복 횟수만큼 오차(loss)를 계산하고 beta_0,beta_1의 값을 변경하는 함수인 gradient_descent() 를 구현합니다. (앞서 구현한 prediction(), update_beta()를 활용하세요)
- 실행 버튼을 눌러 회귀 분석 과정의 시각화를 확인합니다.
- 제출 버튼을 눌러 올바른 회귀 알고리즘 구현 여부를 확인합니다.
beta_0와 beta_1 값을 업데이트 하는 규칙을 정의하는 함수
delta_0 = -(lr * (2 / len(X))) * (np.dot(X.T, loss))
delta_1 = -(lr * (2 / len(X)) * np.sum(loss))
delta_0 = -(lr * (2 / len(X))) * np.sum(y - y_pred)
delta_1 = -(lr * (2 / len(X))) * np.dot(X.T, (y - y_pred))
- 두 함수는 동일하다
- lr: learning late
- np.dot 함수는 벡터나 행렬의 곱셈을 수행하는 NumPy의 함수
Gradient Descent
def gradient_descent(X, y, iters, lr):
beta_0 = np.zeros((1,1))
beta_1 = np.zeros((1,1))
np.zeros(shape, dtype=float)
- np.zeros 함수는 모든 요소가 0으로 채워진 배열을 생성하는 NumPy 함수
- np.zeros((1,1))는 numpy에서 (1,1) 형태의 배열을 생성하고, 그 안에 0을 채워넣는 함수
전체코드
데이터 준비를 위한 사이킷런 함수/라이브러리
from sklearn.model_selection import train_test_split : 학습용 데이터와 테스트용 데이터를 나누어주는 함수(train_test_split())를 불러옵니다.
train_test_split(X, y, test_size=0.3, random_state=0): 데이터 X와 y에 대해 70%를 학습용, 나머지 30%의 데이터를 테스트용 데이터로 나눈 결과 데이터를 반환합니다.
단순 선형 회귀를 위한 사이킷런 함수/라이브러리
from sklearn.linear_model import LinearRegression: 단순 선형 회귀 모델을 불러옵니다.
model=LinearRegression() : 선형회귀 모델 model을 정의합니다.
model.fit(X, y): 인공지능 모델 model을 X, y 데이터셋에 대해서 학습시킵니다.
model.predict(X): 모델 model의 X 데이터에 대한 예측값을 반환합니다.
model.score(X, y) : 테스트 데이터를 인자로 받아 학습이 완료된 모델 model의 평가 점수를 출력합니다.
model.intercept_ : 학습이 완료된 모델 model의 β0β0 를 반환합니다.
model.coef_ : 학습이 완료된 모델 model의 β1β1 를 반환합니다.
다중선형회귀
tensor = tf.constant([[1, 2], [3, 4], [5, 6]])
print(tensor.shape) # Output: (3, 2)
- shape returns a tuple representing the dimensions of an array
다항회귀모델
다항 회귀를 위한 사이킷런 함수/라이브러리
# 다항회귀모델 polynominal Regression Model
- poly=PolynomialFeatures(degree, include_bias): Polynomial 객체 poly를 생성합니다.
- degree: 만들어줄 다항식의 차수를 의미합니다.
- include_bias : 편향 변수의 추가 여부를 설정합니다.(True/False) True로 설정하게 되면, 해당 다항식의 모든 거듭제곱이 0일 경우 편향 변수를 추가합니다. 이는 회귀식에서 β0 와 같은 역할을 합니다.
- poly.fit_transform(X): 데이터 X와 X의 degree제곱을 추가한 데이터를 반환합니다.
- fit(X)와 transform(X) 을 각각 분리해서 진행하는 것도 가능합니다.
- from sklearn.linear_model import LinearRegression: 다중 선형 회귀 모델을 불러옵니다.
- model=LinearRegression() : 다중선형회귀 모델 model을 정의합니다.
- model.fit(X, y): 인공지능 모델 model을 X, y 데이터셋에 대해서 학습시킵니다.
-