먼저 회귀란, 여러 개의 독립변수와 한 개의 종속변수 간의 상관관계를 모델링 하는 기법을 통칭한다.
즉, Y= W1*X1 + W2*X2 + ... + Wn*Xn 이라는 선형 회귀식에서 Y는 종속 변수, X는 독립 변수, W는 독립 변수의 값에 영향을 미치는 회귀 계수(Regression coefficients)이다. 우리는 학습을 통해 최적의 회귀 계수를 찾아야 한다.
[Week5] 05. 회귀(1) (tistory.com)
(자세한 내용 참고)
회귀 계수가 선형인지에 따라 선형 회귀/비선형 회귀, 독립변수의 개수에 따라 단일 회귀/다중 회귀로 나뉜다.
분류와 회귀의 가장 큰 차이점은 분류(Classfication)는 예측값이 카테고리와 같은 이산형 클래스 값이고, 회귀(Regression)는 연속형 숫자 값이라는 것이다.
일반 선형 회귀(+경사하강법)
- 독립 변수도 하나, 종속 변수도 하나인 선형 회귀
- 특정 기울기(w1)와 절편(w0)을 회귀 계수로 지칭하며, 1차 함수식으로 모델링이 가능하다.
- 실제 값과 회귀 모델의 차이에 따른 오류 값, 잔차의 합이 최소가 되는 모델을 만든다.
- 잔차는 + 혹은 -가 될 수 있으므로 절댓값으로 더하거나(Mean Absolute Error) 제곱을 구해서 더한다.(RSS, Residual Sum of Square)
- 경사 하강법(Gradient Descent)를 이용하여 비용 함수 RSS를 최소화 한다.
- LinearRegression 클래스는 규제가 없는 선형 회귀를 RSS를 최소화하는 방식으로 구현한 클래스이다.
- fit() 메서드로 X,y 배열을 입력받으면 회귀 계수(W)를 coef_속성에 저장한다.
class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=Treu, n_jobs=1)
릿지(Ridge)
- RSS를 최소화 하는 방향으로만 학습할 때 생기는 과적합 문제를 해결하기 위해 L2 규제를 적용함.
- 즉, 비용함수 cost = RSS 최소화 + 회귀 계수 크기 제어(규제)
- alpha값을 크게하면 규제가 커져 과적합 개선, 작게 하면 학습 데이터 적합을 개선할 수 있다.
- L2 규제는 W의 제곱에 대해 패널티를 부과한다.
라쏘(Lasso)
- L1 규제를 적용한 선형 회귀
- w의 절댓값에 페널티를 부과하며, 불필요한 회귀 계수를 급격하게 감소시켜 0으로 만들고 제거한다. 즉, 피처 선택의 특성을 가진다.
엘라스틱넷(ElasticNet)
- L2 규제와 L1 규제를 결합한 회귀
- 변수의 수가 훈련 샘플의 수보다 많고, 변수 몇 개가 강하게 연관되어 있을 경우 라쏘에 문제가 발생하므로 엘라스틱넷 회귀를 선택한다.
- 시간이 오래걸린다.
- 파라미터는 l1_ratio = a/(a+b)이다. l1_ratio의 값이 0, 즉 a가 0이면 L2 규제와 동일하다. 반대로 l1_ratio의 값이 1이면 b가 0이므로 L1 규제와 동일하다.
https://yganalyst.github.io/ml/ML_chap3-4/
로지스틱 회귀(Logistic Regression)
- 선형 회귀 방식을 분류애 적용한 알고리즘
- sigmoid 함수 최적선을 찾고 함수의 반환값을 확률로 간주해 분류를 결정한다. 따라서 0~1사이의 값 반환
- LogisticRegression 클래스에서 slover 파라미터로 최적화 방식을 선택할 수 있다. 일반적으로 lbfgs 또는 liblinear 선택
- penalty 파라미터와 C(=1/alpha)를 이용해 규제를 적용할 수 있다.
https://velog.io/@skkumin/%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1-%ED%9A%8C%EA%B7%80Logistic-Regression
회귀 트리
- 회귀를 위한 트리를 생성하고 이를 기반으로 회귀 예측 진행
- 리프 노드에 속한 데이터 값의 평균값을 구해 회귀 예측값을 계산한다.
- DecisionTree, Gradient Boost, XGBoost, LightGBM 모두 분류/회귀가 가능하다.
- 선형 회귀와 다른 처리 방식이므로 coef_속성이 없으나 feature_importances_로 피처별 중요도를 알 수 있다.
- 과적합이 발생하기 쉬우므로 depth와 node 수를 조절해야 한다. Pruning(가지치기) 필요.
+ 추가
- 선형 회귀는 피처값과 타깃값의 분포가 정규 분포(종 모양)인 형태를 매우 선호한다.
- standardScaler/MinMaxScaler, 다항 특성, 로그 변환 등을 이용하여 데이터 전처리를 진행한다.
[Week5] 05. 회귀(2) (tistory.com)
피처 데이터 세트 변환 방법 참고
#회고
분류에 이어 회귀도 끝!
비록 기계학습 중간고사는 망했지만...🥲
'기타' 카테고리의 다른 글
[AWS] AWS Public IPv4 주소 요금 변경 + 문의 (0) | 2024.03.07 |
---|---|
인류문명과환경공학 정리 (0) | 2024.01.09 |
[Sklearn] 분류 알고리즘 정리 (0) | 2023.09.25 |
[Sklearn] 알고리즘 학습/예측 기본 (0) | 2023.09.25 |
[AWS] EC2 docker container exited 이유 (0) | 2023.09.16 |