ex) 사람의 키는 평균 키로 회귀하려는 경향을 가지고 있어서 세대가 지날 수록 평균 키가 커지는 것
선형 회귀식 Y = W1X1 + W2X2 + W3X3 + ... WnXn
Y는 종속 변수 , X1,X2, ... Xn 은 독립변수 , W1,W2, ... Wn 은 독립변수 값에 영향을 미치는 회귀계수
→ 머신러닝 회귀 예측의 핵심은 주어진 피처 ( 독립변수 ) 와 결정 값 ( 종속변수 ) 데이터 기반에서 학습을 통해 최적의 회귀계수를 찾아내는 것이다.
지도학습 유형
분류 → 예측값이 이산형 클래스 값(카테고리 같은)
회귀→ 예측값이 연속형 (숫자값 같은)
선형회귀
회귀중에서 선형 회귀가 가장 많이 사용된다. 선형회귀는 실제 값과 예측 값의 차이 ( 오류의 제곱 값)를 최소화 하는 직선형 회귀선을 최적화하는 방식이다.
일반 선형 회귀
릿지
라쏘
엘라스틱넷
로지스틱 회귀
2. 단순 선형 회귀
단순 선형 회귀
→ 독립변수도 하나, 종속변수도 하나인 선형회귀
→ 주택 가격이 주택의 크기로만 결정 된다고 할 때!
→ 실제 값과 회귀 모델의 차이에 따른 오류 값 : 잔차
→ 최적의 회귀 모델은 전체 데이터의 잔차의 합이 최소가 되는 모델을 만든다는 의미
→ 잔차에는 +,- 값이 있기 때문의 절댓값을 취하거나 위사진처럼 제곱의 값을 구해서 더하는 방식 (RSS) 을 취한다.
→ 회귀에서 이 RSS 는 비용(cost) 이며, 이 w변수로 구성되는 RSS를 비용함수라고 한다.
비용함수를 손실함수 (loss function) 라고도 하며, 머신러닝 회귀 알고리즘은 데이터를 계속 학습하면서 이 비용 함수가 반환하는 값( 즉, 오류값) 을 지속해서 감소시키고 최종적으로는 더 이상 감소하지 않는 최소의 오류 값을 구하는 것이다.
3. 경사 하강법
경 사 하강법은 W파라피터가 많을 때 '점진적으로' 반복적인 계산을 통해 W 파라미터 값을 업데이트하면서 오류값이 최소가 되는 W파라미터를 구하는 방식
ex) 최초 오류 값이 100이었다면 두 번째 오류 값은 100 보다 작은 90, 세 번째는 80 과 같은 방식으로 지속해서 오류를 감소시키는 방식으로 W 값을 계속 업데이트 → 오류값이 더 이상 작아지지 않으면 그 오류 값을 최소 비용으로 판단하고 그 때의 W 값을 최적 파라미터로 반환
→ 미분된 1차함수의 기울기가 감소하지 않는 지점을 비용 함수가 최소인 지점으로 간주하고 그 때의 w 를 반환
→ (실제값-예측값)의 제곱의합의 평균을 계산한 후에 w1 에 대해, w0 에 대해 각각 편미분
→ 새로운 w1 = 이전 w1 - (w1에서 편미분한 결괏값)
→ 위 편미분 값이 너무 클 수 있기 때문에 보정 계수를 곱한다 =이를 '학습률' 이라한다.
개별적인 모델을 순차적으로 학습을 시킬 때, 하나의 모델을 각 한 턴에 학습을 시키고, 각각의턴 마지막에는 오분류된 (회귀오차가 큰) 샘플들을 찾아서 그 것들이 새로운 훈련세트에서는 더 많이 나올 수 있도록 가중치를 부여함. 즉, 앞선 모델에 의해서 나타는 큰 오차는 이어서 학습된 모델이 그 오차를 줄이기 위한 학습을 할 것이므로 줄어들 것이다.
첫번째 모델과 가중치, 두번째 모델과 가중치, 세번째 모델과 가중치를 잘 합하면 최종적 분류 경계면 생성!
2. GBM
에이다부스트와 유사하나, 가중치 업데이트를 경사하강법을 이용하는 것이 큰 차이
x1,x2,x3 … 의 피처가 있을 때, 결괏값을 y, 예측함수를 F(x) 라고 한다. 오류 식 y-F(x) 를 최소화하는 방향성을 가지고 반복적으로 가중치 값을 업데이트하는 것이 경사 하강법이다.
GBM 은 과적합에도 강한 뛰어난 예측 성능을 가진 알고리즘이다. 하지만 수행 시간이 오래 걸린다는 단점이 있다.
3.XGBoost
XGBoost는 그래디언트 부스팅머신이다. 보다 빠르게 수행하고자, 스케일 과정에서 병렬처리가 가능하게 하려는 목적이 있다.
Approximate algorithm 은 병렬처리가 가능하므로 Basic exact greedy algorithm 보다 빠른 수행
4.LightGBM
위의 부스팅 계열 알고리즘보다 더 빠른 수행 가능
원래의 부스팅은 모든 feature, 모든 data instances 에 대해 추정해야하므로 시간이 오래걸림
Idea
Gradient-basde One-Side Sampling
Keep large gradients and randomly drop instances small gradients
실질적으로는 gradients 가 낮은 객체들은 random하게 drop 되므로 모든 객체에대해 수행 X
Exclusive Feature Bundling
하나의 개체에 대해서 두개이상의 변수들이 0이 아닌 값을 동시에 가질 확률이 매우 낮다는 것을 이용