Q . 기준모델이란?
A . 예측 모델을 구체적으로 만들기 전에 가장 간단하면서도 직관적이면서 최소한의 성능을 나타내는 기준이 되는 모델을 기준모델 이라고 한다.
- 변수 간의 관계를 설명하는 최초의 모델, 직관적인 모델, 초소한의 성능이 되는 모델
- 기준을 잡기 위한 기초 공사이다.
- 평균값을 기준으로 사용하는 모델을 평균기준모델이라고 말한다.
Q . 예측모델이란?
A . scatterplot에 가장 잘 맞는(best fit) 직선을 그려주면 그것이 회귀 예측모델이 된다. 가장 잘 맞는 직선을 회귀선이라고 한다.
예측값 : 만들어진 모델이 추정하는 값
잔차 : 예측값과 관측값 차이
( 오차( error )는 모집단에서의 예측값과 관측값 차이를 말한다. )
회귀선 : 잔차 제곱들의 합인 RSS( residual sum of squares )를 최소화 하는 직선
RSS는 SSE( Sum of Square Error )라고도 말하며 이 값이 회귀모델의 비용함수( Cost function )가 된다.
머신러닝에서는 이렇게 비용함수를 최소화 하는 모델을 찾는 과정을 학습이라고 한다.
여기서 계수 와 는 RSS를 최소화 하는 값으로 모델 학습을 통해서 얻어지는 값입니다.
,
Q . Ordinary least squares(OLS)란 ?
A . RSS를 최소화하는 방법. OLS를 최소제곱회귀라고도 부른다.
Q . 선형회귀에서 외삽을 할 때 문제점은?
A . 외삽을 하면 지금까지 훈련했던 데이터가 아니기 때문에 전혀 다른 예측이 될 수 있다. 아주 작게 독립변수를 0에 두고 외삽을 했을 때 음수가 나오는 것도 외삽의 문제이다.
# Scikit-Learn의 예측모델 클래스( LinearRegression )를 import
from sklearn.linear_model import LinearRegression
# 예측모델 인스턴스를 만든다.
model = LinearRegression()
# X 특성들의 테이블과, y 타겟 벡터를 만든다. // 통상적으로 Matrix는 대문자, vector는 소문자로 표기
feature = ['GrLivArea']
target = ['SalePrice']
X_train = df[feature]
y_train = df[target]
# 모델을 학습(fit)
model.fit(X_train, y_train)
# 새로운 데이터 한 샘플을 선택해 학습한 모델을 통해 예측
X_test = [[4000]]
y_pred = model.predict(X_test)
print(f'sqft GrLivArea : {X_test[0][0]}')
print(f'주택의 예상 가격 : ${int(y_pred)}')
# sqft GrLivArea : 4000
# 주택의 예상 가격 : $447090
# 전체 test 데이터를 모델을 통해 예측
X_test = [[x] for x in df_t['GrLivArea']]
y_pred = model.predict(X_test)
# train 데이터에 대한 시각화
plt.scatter(X_train,
y_train,
color='black',
linewidth=0.8)
# test 데이터에 대한 예측을 파란색 점으로 시각화
plt.scatter(X_test,
y_pred,
color='blue',
linewidth=1);
< 전체 Machine Learning Flow Chart >
ex) 데이터셋에서 living 데이터를 feature vector화시키고,
label인 price로 ML 알고리즘으로 선형회귀모델을 학습시킨다.
그 후 test data를 이용하여 4000인 값을 학습한 모델에 적용해 예상하는 label인 price를 얻는다.
# 회귀계수(coefficient)
model.coef_
# 절편(intercept)
model.intercept_
Q . 상관계수는 선형회귀 전에 타겟과의 관계도가 강한 특성을 찾으려는지, 상관계수와 선형회귀의 관계는 어떻게 될까요?
A . 선형회귀의 설득력하고 관계가 있다고 말할 수 있습니다.
선형관계에 없어도 선형회귀선은 그릴 수 있는데,
상관관계가 낮으면 그 선형회귀선은 별로 쓸모가 없기 때문입니다.