다중선형회귀(Multiple Linear Regression)
면접 질문 정리하기
- 머신러닝모델을 만들 때 학습과 테스트 데이터를 분리 해야 하는 이유를 설명할 수 있습니다.
- 다중선형회귀를 이해하고 사용할 수 있습니다.
- 과적합/과소적합을 일반화 관점에서 설명할 수 있습니다.
- 편향/분산의 트레이트오프 개념을 이해하고 일반화 관점에서 설명할 수 있습니다.
Warm up
복습
회귀모델을 만들 때 기준모델을 어떻게 정의하나요? 이 과정이 왜 중요할까요?이 회귀 모델이 어느정도의 성능을 내는지 비교하기 위한 모델로 해당 모델이 단순하게 평균값으로 예측을 하는 것보다 얼마나 더 신뢰할 수 있는지 판단할 수 있다.
회귀분석이 무엇인지 간단하게 설명해 보세요.타겟변수가 연속형일 때, 해당 값을 예측하기 위한 방법으로 예측력은 여타 다른 머신러닝 모델에 비해 현저하게 떨어지지만 회귀모델에서 가장 기초적인 모델으로 의미가 있다.
다음 영상을 시청하세요.
How to Calculate R Squared Using Regression Analysis
- R^2값이 1에 가깝다는 것은 무엇을 의미하나요?타겟변수를 맞출 확률이 100%에 가깝다.(R^2 값은 회귀분석에서 회귀식의 예측력을 파악하는 지표로 쓰이며 머신러닝에서의 정확도와 비슷한 의미라고 할 수 있다.)
Standard Error of the Estimate used in Regression Analysis (Mean Square Error)
-
- 왜 훈련/테스트 데이터를 나누는 것일까요?우리가 모델을 훈련시킨 데이터셋을 가지고 모델을 평가한다면 그 평가방법이 다분히 의심스러울 것이다. (훈련데이터에 대해서는 정확도가 높게 나올 것이기 때문)따라서, 정말 이 모델이 예측을 잘하는지 평가를 하려면 훈련했던 데이터가 아닌 완전히 새로운 데이터가 필요하다. 이러한 과정을 위해 훈련데이터와 테스트데이터를 나눈다.test : X의 테스트 셋을 모델에 넣어 나온 예측값과 테스트y값을 비교하여 정확도를 계산한다.
- train : X,y의 훈련/테스트 데이터를 각각 4개로 나누고 X,y의 훈련데이터로 모델을 훈련시킨 다음
Machine Learning Fundamentals: Bias and Variance
low bias, low variance 모델은 어떤 모델을 말하나요? 훈련/테스트세트를 사용해 설명해 보세요.: 훈련 데이터에서도 변수간의 관계를 잘 포함하여 bais가 작고, 과적합되지 않아 테스트 셋에서도 높은 성능을 보여 분산이 작은 모델
직선적인 회귀모델 → 두 변수간의 관계를 완전히 포함하지 못하기 때문에 bias는 크지만, 과적합되지 않아서 분산은 작다.(과적합 모델에 비해선 안정적일 수 있음)
구불구불한 곡선의 회귀모델 → 과적합문제로 bias는 작지만 분산은 크다.
가장 이상적인 모델 → bias도 작고 분산도 작은 모델!!
n212 Lecture Note 정리
회귀모델을 평가하는 평가지표들(evaluation metrics)
MSE : 제곱을 하기때문에 스케일이 변하고, 이상치에 민감하다는 단점이 있음
MAE : 제곱을 하지 않아서 단위가 변하지 않는다. 그래서 에러에 대해 직관적으로 파악하지 좋음
RMSE : 단위가 변하는 MSE에 대해 루트를 씌워서 단점을 해소함.
용어들이 헷갈릴 수 있는데 수식을 매번 쓰는게 가시적이지 않고 더럽,,,을 수 있으니 간단하게 보기 좋게 영어의 앞글자로 따서 대문자로 표현한 것이다.
용어가 많아 보이지만 제곱해서 다 더하는 것들은 'SS'
그걸 평균내는 것들은 'MS'가 붙는다고 생각하면 된다.
R2=R^2 = R2= 예측값과 평균간의 차이(제곱합)을 실제값과 평균의 차이로 나눈 값.( 범주형 정확도 계산에서맞춘개수전체개수\frac{맞춘개수}{전체개수}전체개수맞춘개수 로 나눠서 정확도를 보는 것 처럼 실제와의 비율로 보는 것 )
MSE=SSEnMSE = \frac{SSE}{n}MSE=nSSE
MSE
이 오차제곱합은 제곱을 하므로 모델의 예측값과 실제값 차이의 면적의 합입니다.
따라서 특이값이 많을 수록 커지므로 특이값에 민감합니다.
이러한 지표에 대해 잘 정리해둔 블로그
[
MSE, MAE 이란 무엇인가.
MSE- mean squared error - 평균 제곱 오차 잔차(오차)의 제곱에 대한 평균을 취한 값 MSE = ...
[
회귀의 오류 지표 알아보기
생성한 선형회귀 모델을 평가하는 지표들을 차례로 살펴보죠. 각각의 지표는 특성을 이해하고 상황에 맞게 사용해야 합니다. MAE는 다음과 같이 정의됩니다. $$ MAE = \frac { \sum \vert y - \hat y \vert }{n} $$ 모델의 예측값과 실제값의 차이를 모두 더한다는 개념입니다. 절대값을 취하기 때문에 가장 직관적으로 알 수 있는 지표입니다.
https://partrita.github.io/posts/regression-error/
)](https://partrita.github.io/posts/regression-error/)
분산/편향 트레이드오프
과/소적합은 오차의 편향(Bias)과 분산(Variance)개념과 관계가 있습니다.
결론만 우선 정리해 보면
분산이 높은경우는, 모델이 학습 데이터의 노이즈에 민감하게 적합하여 테스트데이터에서 일반화를 잘 못하는 경우 즉 과적합 상태입니다.
편향이 높은경우는, 모델이 학습 데이터에서, 특성과 타겟 변수의 관계를 잘 파악하지 못해 과소적합 상태입니다.
위키 정의
[
편향-분산 트레이드오프 - 위키백과, 우리 모두의 백과사전
통계학과 기계 학습 분야에서 말하는 편향-분산 트레이드오프(Bias-variance tradeoff) (또는 딜레마(dilemma))는 지도 학습 알고리즘이 트레이닝 셋의 범위를 넘어 지나치게 일반화 하는 것을 예방하기 위해 두 종류의 오차( 편향, 분산)를 최소화 할 때 겪는 문제이다. 편향은 학습 알고리즘에서 잘못된 가정을 했을 때 발생하는 오차이다. 높은 편향값은 알고리즘이 데이터의 특징과 결과물과의 적절한 관계를 놓치게 만드는 과소적합(underfitting) 문제를 발생 시킨다.
통계학과 기계 학습 분야에서 말하는 편향-분산 트레이드오프(Bias-variance tradeoff) (또는 딜레마(dilemma))는 지도 학습 알고리즘이 트레이닝 셋의 범위를 넘어 지나치게 일반화 하는 것을 예방하기 위해 두 종류의 오차(편향, 분산)를 최소화 할 때 겪는 문제이다.
편향은 학습 알고리즘에서 잘못된 가정을 했을 때 발생하는 오차이다. 높은 편향값은 알고리즘이 데이터의 특징과 결과물과의 적절한 관계를 놓치게 만드는 과소적합(underfitting) 문제를 발생 시킨다.
분산은 트레이닝 셋에 내재된 작은 변동(fluctuation) 때문에 발생하는 오차이다. 높은 분산값은 큰 노이즈까지 모델링에 포함시키는 과적합(overfitting) 문제를 발생 시킨다.
편향-분산 분해는 학습 알고리즘의 기대 오차를 분석하는 한 가지 방법으로, 오차를 편향, 분산, 그리고 데이터 자체가 내재하고 있어 어떤 모델링으로도 줄일수 없는 오류의 합으로 본다. 편향-분산 트레이드 오프는 분류(classification), 회귀분석[1][2], 그리고 구조화된 출력 학습(structed output learning) 등 모든 형태의 지도 학습에 응용된다. 또한 사람의 학습에서 직관적 판단 오류(heuristics)의 효과성을 설명하기 위해 언급되기도 한다.
여기에서 편향(bias)은
이고, 분산(var)은
고분산 학습 알고리즘은 트레이닝 셋을 잘 표현하기는 하지만, 지나치게 큰 노이즈나 아예 부적절한 트레이닝 데이터까지 과적합(overfitting)할 위험이 있다. 반대로 고편향 학습 알고리즘은 과적합(overfitting) 문제가 거의 없는 단순한 모델을 제시하지만 트레이닝 데이터로부터 중요한 규칙성을 제대로 포착하지 못하는 과소적합(underfitting) 문제가 발생한다.
다중회귀분석 코드
# 실험에 사용할 랜덤 데이터를 만듭니다 (30, 2)
rng = np.random.RandomState(1)
data = np.dot(rng.rand(2, 2), rng.randn(2, 30)).T
# rand() ---> 0~1사이의 함수를 균일한 확률로 생성하는 함수(균일분포)
# randn() ---> 평균이 0, 표준편차가 1인 표준정규분포를 따르는 난수를 생성하는 함수
X = pd.DataFrame([i[0] for i in data]) # 데이터의 첫번째 열만 추출
y = pd.DataFrame([i[1] for i in data]) # 데이터의 두번째 열만 추출
위에 코드 분석
rng.rand(2, 2) #(2,2)행렬
rng.randn(2, 30) # [[,,,,,,,,,,,,], [,,,,,,,,,,,,,]] 식으로 (2,30)행렬의 넘파이array
np.dot(rng.rand(2, 2), rng.randn(2, 30)) # 행렬의 계산으로 (2,30)행렬 나옴
data # 전치해서 (30,2) 행렬
다항회귀모델을 사용해서 과적합을 만들어 봅시다.
마지막으로, 독립변수와 타겟변수 사이에 비선형 관계를 학습할 수 있는 다항회귀모델(polynomial regression)의 차수(degrees)를 조정해 회귀곡선을 만들어보는 실험을 해보겠습니다.
from sklearn.preprocessing import PolynomialFeatures
# PolynomialFeatures() : 다중회귀분석을 다항식으로 만들어주는 함수
X1 = np.arange(6).reshape(3, 2)
print(X1)
poly = PolynomialFeatures(2) # 다중회귀식의 독립변수를 제곱, 세제곱 등을 해줌
X_poly = poly.fit_transform(X1)
회귀식에서
다중은 독립변수 X가 여러개 → x가 여러개여도 선형모델
다항(식)은 그 X의 차수가 1차, 2차로 여러개인 것 → 독립변수와 종속변수의 관계는 비 선형적이지만 독립변수들 간의 다항항들은 선형결합으로 이루어진 것이기 때문에 여전히 선형모델이라고 부른다.
정말 비선형인 것은 최소제곱법으로 피팅할 수 없는 모델들을 말함.
비선형 모델은 독립변수가 아니라 회귀변수가 비선형일 경우에 비선형 회귀모델이라고 말한다.
Zoom
오차 잔차 차이 —> 모/표준 차이인데 혼용해서 많이 쓴다.
[
오차(error)와 잔차(residual)의 차이
오차(error)에 비해 잔차(residual)는 조금 낯설 수 있다. 만약 모집단에서 회귀식을 얻었다면, 그 회귀식을 통해 얻은 예측값과 실제 관측값의 차이가 오차이다. 반면 표본집단에서 회귀식을 얻었다면, 그 회귀식을 통해 얻은 예측값과 실제 관측값의 차이가 잔차 이다. 둘의 차이는 모집단에서 얻은 것이냐 표본집단에서 얻은 것이냐 뿐이다. 나도 그렇지만, 많은 사람들이 오차와 잔차를 구분없이 혼동해서 사용한다.
'코드스테이츠 Ai Boostcamp' 카테고리의 다른 글
[Tree Based Model]Random Forests(랜덤 포레스트) (0) | 2021.06.16 |
---|---|
[Tree Based Model]Decision Trees(의사결정나무) (0) | 2021.06.15 |
[선형모델]Simple Regression(단순선형회귀) (0) | 2021.06.12 |
[n13x] Sprint Challenge (0) | 2021.06.12 |
[선형대수] 클러스터링(군집분류) (0) | 2021.06.12 |
댓글