회귀 소개
회귀 분석은 데이터 값이 평균과 같은 일정한 값으로 돌아가려는 경향을 이용한 통계학 기법입니다. 통계학 용어를 빌리자면 회귀는 여러 개의 독립변수와 한 개의 종속변수 간의 상관관계를 모델링하는 기법을 통칭합니다.
예를 들어 아파트의 방 개수, 방 크기, 주변 학군 등 여러 개의 독립변수에 따라 아파트 가격이라는 종속변수가 어떤 관계를 나타내는지를 모델링하고 예측하는 것입니다.
독립변수의 값에 영향을 미치는 것을 회귀 계수(Regression Coefficients)라고 합니다. 머신러닝 관점에서 보면 독립변수는 Feature에 해당되며 종속변수는 결정 값입니다.
머신러닝 회귀 예측의 핵심은 주어진 피처와 결정 값 데이터 기반에서 학습을 통해 최적의 회귀 계수를 찾아낸 것입니다. 회귀는 회귀 계수의 선형/비선형 여부, 독립변수의 개수, 종속변수의 개수에 따라 여러 가지 유형으로 나눌 수 있습니다. 회귀에서 가장 중요한 것은 바로 회귀 계수입니다.
지도학습은 두 가지 유형으로 나뉘는데, 바로 분류와 회귀입니다. 이 두 가지 기법의 가장 큰 차이는 분류는 예측값이 카테고리와 같은 이산형 클래스 값이고 회귀는 연속형 숫자 값이라는 것입니다.
회귀 중 선형 회귀가 가장 많이 사용이 됩니다. 선형 회귀는 실제값과 예측값의 차이(오류의 제곱 값)를 최소화하는 직선형 회귀선을 최적화하는 방식입니다.
대표적인 선형 회귀방법으로 일반 선형 회귀, 릿지(Ridge), 라쏘(Lasso), 엘라스틱넷(ElasticNet), 로지스틱 회귀(Logistic Regression)을 들 수 있습니다.
단순 선형 회귀
단순 선형 회귀는 독립변수와 종속변수가 하나인 것을 의미합니다. 예를 들어 평수가 커지면 가격도 높아지는 경향의 그래프를 생각하면 됩니다.
실제 값과 회귀 모델의 차이에 따른 오류 값을 남은 오류, 즉 잔차라고 부릅니다. 최적의 회귀 모델을 만든다는 것은 바로 전체 데이터의 잔차(오류 값) 합이 최소화 되는 모델을 만든다는 의미입니다. 동시에 오류 값이 최소가 될 수 있는 최적의 회귀 계수를 찾는다는 의미도 됩니다.
전체 데이터의 오류 합을 구하기 위해 단순히 더했다가는 뜻하지 않게 오류 합이 크게 줄어들 수 있습니다. 따라서 보통 오류 합을 계산할 때는 절대값을 취해서 더하거나(Mean Absolute Error), 오류 값의 제곱을 구해서 더하는 방식(RSS, Residual Sum of Square)를 취합니다. 보통 RSS를 선호합니다.
회귀에서 RSS는 비용(Cost)이며 w변수(회귀 계수)로 구성되는 RSS를 비용 함수라고 합니다. 머신 러닝 회귀 알고리즘은 데이터를 계속 학습하면서 이 비용 함수가 반환하는 값을 지속해서 감소시키고 최종적으로 더 이상 감소하지 않는 최소의 오류 값을 구하는 것입니다. 비용 함수를 손실 함수(loss function)이라고 합니다.
비용 최소화하기 - 경사 하강법(Gradien Descent)
경사 하강법은 고차원 방정식에 대한 문제를 해결해 주면서 비용 함수 RSS를 최소화하는 방법을 직관적으로 제공하는 뛰어난 방식입니다. '데이터를 기반으로 알고리즘이 스스로 학습한다'는 머신러닝의 개념을 가능하게 만들어준핵심 기법의 하나입니다.
'점진적으로' 반복적인 계산을 통해 w파라미터 값을 업데이트하면서 오류 값이 최소가 되는 w파라미터를 구하는 방식입니다. 딥러닝 기반인 신경망에서도 경사 하강법을 통한 학습을 수행합니다.
'ML with SckitLearn' 카테고리의 다른 글
릿지 회귀 : Ridge Model 이란? Scikit Learn에서의 실습 (0) | 2020.10.24 |
---|---|
Regulation(규제) 선형 모델에 대한 개요 - 릿지(Ridge), 라쏘(Lasso), 엘라스틱(Elastic Net) (0) | 2020.10.20 |
train_test_split()의 사용과 교차 검증 cross_val_score 이용하기 (0) | 2020.10.18 |
선형 회귀 분석 - LinearRegression 및 보스턴 주택 가격 회귀 구현 (0) | 2020.10.18 |
StandardScaler : 피처스케일링 정규화 (1) | 2020.10.03 |
온라인쇼핑몰을 위한 RFM Segmentation 실전 연습 (0) | 2020.10.02 |
[DBSCAN] 밀도기반 군집화 Cluster Algorithm (0) | 2020.10.01 |
Estimator의 이해와 fit(), predict(), accuracy_score() Method (0) | 2020.09.30 |