지도학습에는 크게 두가지가 있습니다. 전에서 했던 분류 , 이번에서할 회귀로 나누어집니다. 우리가 원하는값이 이산값일경우 분류를 하는 것이고 우리가 원하는값이 연속형(숫자값)이면 회귀입니다.
선형회귀는 실제값과 예측값의 차이를 최소화하는 직선형 회귀선을 최적화하는 방식입니다. 과적합을 방지하는 규제모델에 따라 여러가지 유형으로 나누어집니다.
대표적인 선형회귀 모델
- 일반 선형회귀 : 예측값과 실제값의 MSE(예측값과 실제값의 차이의 제곱)을 최소화 할 수 있도록 회귀 계수를 최적화하며 규제는 적용하지 않는 모델
- 릿지(Ridge) 회귀 : 선형회귀에 L2규제를 추가한 회귀 모델으로 L2규제는 상대적으로 큰 회귀계수 값의 예측 영향도를 감소시키기 위해서 회귀계수를 더 작게 만드는 규제 모델입니다. (회귀계수가 0이 되지는 않습니다.)
- 라쏘(Lasso) 회귀 : 선형회귀에 L1규제를 추가. L2규제는 회귀계수 값의 크기를 줄이는데 반해 L1 규제는 예측 영향력이 적은 피처의 회귀계수를 0으로 만들어 회귀예측시 피처가 선택되지 않도록 합니다.
- 엘라스틱 넷 (Elastic Net) 회귀 : L1규제와 L2규제를 함께 결합한 모델 L1규제로 피처의 개수를 줄이고 L2규제로 계수값의 크기를 조정합니다.
- 로지스틱(Logistic) 회귀 : 회귀이나 분류에 사용합니다. (이진분류, 희소영역, 텍스트 분류)
# 단순 선형회귀
예측값과 실제값의 차이를 줄이는 방향으로 회귀직선을 예측합니다.
손실함수의 최소화
[ 경사 하강법 ]
최초 w에서 미분을 적용한뒤 , 이 미분값이 계속 감소하는 방향으로 순차적으로 w를 업데이트합니다. 마침내 더이상 미분된 1차함수의 기울기가 감소하지 않는 지점을 손실함수가 최소인 지점으로 간주해 그때의 w를 반환합니다.
과정
지금까지는 y = wx + w0 형태의 예측모델 즉, 피처가 1개인 경우인 모델을 살펴보았습니다. 피처가 여러개일때는 어떻게 할까요?
간단합니다. 피처가 1개인 경우를 그대로 확장하면됩니다. 피처가 M개인 경우 그에 따른 회귀계수도 (M+1)개가 도출됩니다.
즉 , Y.= w0 + w1X1 + w2X2 + -- 꼴로 표현됩니다.
이것을 한번에 계산하기 위해 행렬로 나타냅시다.
w0를 weight 배열안에 집어너으려면 다음과 같습니다.
사이킷런에서의 Linear Regression
입력파라미터
- fit_intercept : default =True 절편값을 계산하는지 여부
- normalize : default = False 회귀 수행전 입력 데이터 세트 정규화
속성
-coef_ : fit() 수행후 저장된 회귀계수 배열 Shape : (Target 값수 , 피처 개수)
- intercept_ : 절편값
회귀 평가 지표
사이킷런의 다항 회귀
PolynomialFeatures 클래스를 통해 피처를 Polynomial(다항식)피처로 변경합니다. PolynomialFeatures클래스는 degree 파라미터를 통해 입력 받은 단항식 피처를 degree에 해당하는 다항식 피처로 변경합니다.
# 규제 선형 모델 (릿지, 라쏘, 엘라스틱넷)
회귀계수가 매우 커지면 다항식이 복잡해지고 그로인한 예측성능은 떨어질 가능성이 많습니다. 즉 , 손실함수는 학습 데이터의 잔차오류값을 최소화하는 MSE와 과적합 방지를 위해 회귀계수값을 커지지안도록 적절한 균형을 이뤄야 합니다.
이처럼 알파값으로 패널티를 부과해 회귀계수값의 크기를 감소시켜 과적합을 개선하는 방법을 Regularization(규제) 라 합니다.
# 로지스틱 회귀
시그모이드 함수 : y = 1 / 1 + e**-x
사이킷런에서 Logistic Regression 규제 파라미터
-penalty : L1,L2 규제
- C : 알파의 역수
#회귀 트리
> 회귀함수를 기반으로 하지않고 트리를 기반으로 하는 회귀 방식입니다.
'DNN > 머신러닝' 카테고리의 다른 글
파이썬 머신러닝 완벽 가이드를 읽고.. (0) | 2021.07.22 |
---|---|
군집화 ( k-means , 군집 평가 , 평균이동 , GMM , DBSCAN) (0) | 2021.07.22 |
분류 - Ensemble(앙상블) [결정트리,RandomForest,Boost,스태킹] (0) | 2021.07.21 |
성능지표 / 평가 (0) | 2021.06.25 |
사이킷런으로 타이타닉 생존자 예측 (0) | 2021.06.23 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!