파이썬/머신러닝
scikit-learn & 머신러닝 기초
코린이도이
2021. 6. 8. 10:54
1. 선형회귀(Linear Regression)
- 다음과 같은 선형 함수 y=Wx + b를 이용해서 회귀(Regression)를 수행하는 모델을 뜻한다.
- 이때 x,y는 가지고 있는 데이터이고, w와 b는 데이터에 적합한 값으로 학습될 수 있는 파라미터(Parameter)이다.
2. 손실 함수(Loss Function) - MSE
- 머신 러닝 모델을 학습시키기 위해서는 적절한 파라미터값을 알아내기 위해서 현재 파라미터값이 우리가 풀고자 하는 목적에 적합한 값인지를 측정할 수 있어야 한다. 이를 위해 손실 함수 J(θ)를 정의한다.
- 손실 함수는 여러가지 형태로 정의될 수 있다. 그 중 가장 대표적인 손실 함수 중 하나는 평균제곱오차(Meanof Squared Error(MSE))이다.
- MSE는 아래과 같은 수식으로 정의 된다.
- 예를 들어, 정답이 y=[1, 10, 13, 7]이고 우리의 모델의 예측값이 y ̂=[10, 3, 1, 4]와 같이 잘못된 값을 예측한다면 MSE 손실 함수는 아래와 같이 35.375라느 큰 값을 갖게 될 것이다.
- 하지만, 정답이 y=[1, 10, 13, 7]이고 우리의 모델의 예측값이 y ̂=[2, 10, 11, 6]와 같이 비슷한 값을 예측한다면 MSE 손실 함수는 앙래와 같이 1.5라는 작은 값을 갖게 될 것이다.
- 이처럼 손실 함수는 우리가 풀고자 하는 목적에 가까운 형태로 파라미터가 최적화 되었을 때(즉, 모델이 잘 학습되었을 때) 더 작은 값을 갖는 특성을 가져야만 한다.
- 이런 특징 때문에 손실 함수를 다른 말로 비용 함수(Cost Function)라고도 부른다.
3. scikit-learn
- 선형 회귀를 포함한 다양한 머신러닝 모델을 쉽고 간편하게 구현할 수 있도록 도와주는 라이브러리이다.
- https://scikit-learn.org/
- scikit-learn 기본 사용법
- Estimator 선언(ex. LinearRegression)
- .fit() 함수 호출을 통한 트레이닝 (Training)
- .predict() 함수 호출을 통한 예측 (Predict)
- scikit-learn을 이용한 예측 모델 구성방법
- 트레이닝 데이터, 테스트 데이터 준비
- Feature 정규화 (Normalize)
- Estimator 선언
- .fit()
- .predict()
- scikit-learn을 training data, test data 나누기
-
from sklearn.model_selection import train_test_split #80%는 트레이닝 데이터, 20%는 테스트 데이터로 나눈다. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
-
- scikit-learn을 이용해서 MSE, RMSE 정의하기
- MSE는 차이를 제곱하기 때문에 제곱에 의해서 생기는 오차를 보정하기 위해 RMSE(Root MEan Square Error)를 이용해서 성능을 측정하기도 한다.
- scikit-learn에서 MSE와 RMSE를 정의하는 방법은 다음과 같다.
-
from sklearn.metrics import mean_squared_error #MSE(Mean Squared Error)를 측정한다. MSE = mean_squared_error(y_test, y_preds) #RMSE(Root Mean Squared Error)를 측정한다. RMSE = np.sqrt(MSE)