728x90
01. 회귀 소개¶
- 회귀 분석은 유전적 특성을 연구하던 영국의 통계학자 갈톤(Galton)이 수행한 연구에서 유래했다는 것이 일반론입니다. 회귀 분석은 데이터 값이 평균과 같은 일정한 값으로 돌아가려는 경향을 이용한 통계학 기법으로 일례로 사람의 키는 평균 키로 회귀하려는 경향을 가진다는 자연의 법칙입니다.
- 회귀는 여러 개의 독립변수와 한 개의 종속변수 간의 상관관계를 모델링하는 기법을 통칭합니다. 머신러닝 관점에서 독립변수는 피처에 해당되며 종속변수는 결정 값입니다. 즉, 머신러닝은 주어진 피처와 결정 값 데이터 기반에서 학습을 통해 최적의 회귀 계수를 찾아내는 것입니다.
- 회귀 계수가 선형이나 아니냐에 따라 선형 회귀와 비선형 회귀로 나눌 수 있으며 독립변수의 개수가 한 개인지 여러 개인지에 따라 단일 회귀, 다중 회귀로 나뉩니다.
- 지도학습은 분류와 회귀로 나뉘며 분류는 예측값이 이산형 클래스 값이고 회귀는 연속형 숫자 값입니다.
- 선형 회귀는 실제 값과 예측값의 차이(오류의 제곱 값)를 최소화하는 직선형 회귀선을 최적화하는 방식입니다. 규제는 일반적인 선형 회귀의 과적합 문제를 해결하기 위해서 회귀 계수에 패널티 값을 적용하는 것을 말합니다.
※ 대표적인 선형 회귀 모델
- 일반 선형 회귀 : 예측값과 실제 값의 RSS를 최소화할 수 있도록 회귀 계수를 최적화하며, 규제를 적용하지 않은 모델
- 릿지(Ridge) : L2 규제를 추가한 회귀 모델. L2 규제는 상대적으로 큰 회귀 계수 값의 예측 영향도를 감소시키기 위해서 회귀 계수값을 더 작게 만드는 규제 모델입니다.
- 라쏘(Lasso) : L1 규제를 적용한 모델. L1 규제는 예측 영향력이 작은 피처의 회귀 계수를 0으로 만들어 회귀 예측 시 피처가 선택되지 않게 하는 것입니다. 이러한 특성 때문에 L1 규제는 피처 선택 기능으로도 불립니다.
- 엘라스틱넷 : L1, L2 규제를 함계 결합한 모델. 주로 피처가 많은 데이터 세트에서 적용되며, L1 규제로 피처의 개수를 줄임과 동시에 L2 규제로 계수 값의 크기를 조정합니다.
- 로지스틱 회귀 : 분류에서 사용되는 선형 모델. 희소 영역의 분류로 텍스트 분류와 같은 영역에서 뛰어난 예측 성능을 보입니다.
02. 단순 선형 회귀를 통한 회귀 이해¶
- 단순 선형 회귀는 독립변수도 하나, 종속변수도 하나인 선형 회귀입니다.
- 회귀에서는 비용 함수가 반환하는 값을 지속해서 감소시키고 최종적으로 더 이상 감소하지 않는 최소의 오류 값을 구하는 것이며 비용 함수를 손실 함수라고도 합니다.
03. 비용 최소화하기 - 경사 하강법(Gradient Descent) 소개¶
- 경사 하강법은 고차원 방정식에 대한 문제를 해결해 주면서 비용 함수 RSS를 최소화하는 방법을 직관적으로 제공하는 뛰어난 방식입니다.
- 경사 하강법은 '점진적으로' 반복적인 계산을 통해 W 파라미터 값을 업데이트하면서 오류 값이 최소가 되는 W 파라미터를 구하는 방식입니다.
- 경사 하강법은 모든 학습 데이터에 대해 반복적으로 비용함수 최소화를 위한 값을 업데이트하기 때문에 수행 시간이 매우 오래 걸린다는 단점이 있습니다. 경사 하강법은 매우 시간이 오래 걸리므로 일반적으로 확률적 경사 하강법을 이용합니다.
04. 사이킷런 LinearRegression을 이용한 보스턴 주택 가격 예측¶
- LinearRegression 클래스는 예측값과 실제 값의 RSS를 최소화해 OLS 추정 방식으로 구현한 클래스입니다.
※ 입력 파라미터
- fit_intercept : 불린 값으로, 디폴트는 True입니다. 절편 값을 계산할 것인지 말지를 지정합니다.
- normalize : 불린 값으로 디폴트는 False입니다. fit_intercept가 False인 경우에는 이 파라미터가 무시됩니다. 만일 True이면 회귀를 수행하기 전에 입력 데이터 세트를 정규화합니다.
※ 속성
- coef_ : 회귀 계수가 배열 형태로 저장하는 속성.
- intercept_
- OLS 기반의 회귀 계수 계산은 입력 피처의 독립성에 많은 영향을 받습니다. 피처 간의 상관관계가 매우 높은 경우 분산이 매우 커져서 오류에 매우 민감해지는 현상을 다중공선성 문제라고 합니다.
◎ 회귀 평가 지표¶
- 회귀의 평가를 위한 지표는 실제 값과 회귀 예측값의 차이 값을 기반으로 한 지표가 중심입니다.
※ 회귀의 성능을 평가하는 지표
- MAE : 실제 값과 예측값의 차이를 절대값으로 변환해 평균한 것입니다.
- MSE : 실제 값과 예측값의 차이를 제곱해 평균한 것입니다.
- RMSE : MSE 값은 오류의 제곱을 구하므로 실제 오류 평균보다 더 커지는 특성이 있으므로 MSE에 루트를 씌운 것이 RMSE
- R²: 분산 기반으로 예측 성능을 평가. 실제 값의 분산 대비 예측값의 분산 비율을 지표로 하며, 1에 가까울수록 예측 정확도가 높습니다.
◎ LinearRegression을 이용해 보스턴 주택 가격 회귀 구현¶
- 생략
05. 다항 회귀와 과적합/과소적합 이해¶
- 다항 회귀는 선형 회귀입니다.
◎ 다항 회귀를 이용한 과소적합 및 과적합 이해¶
- 다항 회귀는 피처의 직선적 관계가 아닌 복잡한 다항 관계를 모델링할 수 있습니다. 다항 회귀의 차수를 높일수록 학습 데이터에만 너무 맞춘 학습이 이뤄져서 정작 테스트 데이터 환경에서는 오히려 예측 정확도가 떨어집니다. 즉, 차수가 높아질수록 과적합의 문제가 크게 발생합니다.
- 좋은 예측 모델은 학습 데이터의 패턴을 지나치게 단순화한 과소적합 모델도 모든 학습 데이터의 패턴 하나하나 감안한 지나치게 복잡한 과적합 모델도 아닌, 학습 데이터의 패턴을 잘 반영하면서도 복잡하지 않은 균형 잡힌 모델을 의미합니다.
◎ 편향-분산 트레이드오프(Bias-Variance Trade off)¶
- 편향-분산 트레이드오프는 머신러닝이 극복해야 할 가장 중요한 이슈 중의 하나입니다.
- 단순화된 과소적합 모델을 고편향성을 가졌다고 표현하며 반대로 지나치게 복잡한 과적합 모델을 고분산성을 가졌다고 표현합니다.
- 일반적으로 편향과 분산은 한 쪽이 높으면 한 쪽이 낮아지는 경향이 있습니다.
- 높은 편향/낮은 분산에서 과소적합되기 쉬우며 낮은 편향/높은 분산에서 과적합도기 쉽습니다. 평향과 분산이 서로 트레이드오프를 이루면서 오류 Cost 값이 최대로 낮아지는 모델을 구축하는 것이 가장 효율적인 머신러닝 예측 모델을 만드는 방법입니다.
06. 규제 선형 모델 - 릿지, 라쏘, 엘라스틱넷¶
◎ 규제 선형 모델의 개요¶
- 학습 데이터에 지나치게 맞추게 되면 회귀 계수가 쉽게 커집니다.
- 비용 함수에 alpha 값으로 패널티를 부여해 회귀 계수 값의 크기를 감소시켜 과적합을 개선하는 방식을 규제라고 부릅니다.
- L2 규제를 적용한 회귀를 릿지, L1 규제를 적용한 회귀를 라쏘라고 합니다.
◎ 릿지 회귀¶
- 릿지 회귀에서 alpha 값이 커질수록 회귀 계수 값을 작게 만듭니다. 하지만 릿지 회귀의 경우에는 회귀 계수를 0으로 만들지는 않습니다.
◎ 라쏘 회귀¶
- L1 규제는 불필요한 회귀 계수를 급격하게 감소시켜 0으로 만들고 제거합니다.
- 회귀 계수가 0인 피처는 회귀 식에서 제외되면서 피처 선택의 효과를 얻을 수 있습니다.
◎ 엘라스틱넷 회귀¶
- 엘라스틱넷(Elastic Net) 회귀는 L2 규제와 L1 규제를 결합한 회귀입니다.
- 엘라스틱넷은 라쏘 회귀가 서로 상관관계가 높은 피처들의 경우에 이들 중에서 중요 피처만을 셀렉션하고 다른 피처들은 모두 회귀 계수를 0으로 만드는 성향이 강합니다. 특히 이러한 성향으로 인해 alpha값에 따라 회귀 계수의 값이 급격히 변동할 수도 있는데, 엘라스틱넷 회귀는 이를 완화하기 위해 L2 규제를 라쏘 회귀에 추가한 것입니다.
- 반대로 엘라스틱넷 회귀의 단점은 수행시간이 상대적으로 오래 걸린다는 것입니다.
- alpha 파라미터 값은 a+b이며 l1_ratio 파라미터 값은 a/(a+b)입니다. l1_ratio가 0이면 a가 0이므로 L2 규제와 동일하면 l1_ratio가 1이면 b가 0이므로 L1 규제와 동일합니다.
◎ 선형 회귀 모델을 위한 데이터 변환¶
- 선형 회귀 모델과 같은 선형 모델은 일반적으로 피처와 타깃값 간에 선형의 관계가 있다고 가정하고, 이러한 최적의 선형함수를 찾아내 결과값을 예측합니다. 또한 선형 회귀 모델은 피처값과 타깃값의 분포가 정규 분포 형태를 매우 선호합니다.
- 따라서 선형 회귀 모델을 적용하기 전에 먼제 데이터에 대한 스케일링/정규화 작업을 수행하는 것이 일반적입니다. 일반적으로 중요 피처들이나 타깃값의 분포도가 심하게 왜곡됐을 경우에 이러한 변환 작업을 수행합니다.
- StandatdScaler 클래스를 이용해 평균 0, 분산 1인 표준 정규 분포를 가진 데이터 세트로 변환하거나 MinMaxScaler 클래스를 이용해 최솟값 0이고 최댓값 1인 값으로 정규화를 수행합니다. 위 방법을 통해 성능 향상이 없을 경우 log 함수를 적용합니다.
- 타깃값의 경우는 일반적으로 로그 변환을 적용합니다. np.log()가 아닌 np.log1p()를 사용하며 언더 플로우 발생을 방지합니다.
07. 로지스틱 회귀¶
- 로지스틱 회귀는 선형 회귀 방식을 분류에 적용한 알고리즘입니다. 로지스틱 회귀는 시그모이드 함수 최적선을 찾고 이 시금이드 함수의 반환 값을 확률로 간주해 확률에 따라 분류를 결정합니다.
- 시그모이드 함수는 항상 0과 1사이 값을 반환합니다.
- 로지스틱 회귀는 가볍고 빠르지만, 이진 분류 예측 성능도 뛰어납니다. 또한 로지스틱 회귀는 희소한 데이터 세트 분류에도 뛰어난 성능을 보여서 텍스트 분류에서도 자주 사용됩니다.
08. 회귀 트리¶
- 트리 기반의 회귀는 회귀 트리를 이용합니다. 즉, 회귀를 위한 트리를 생성하고 이를 기반으로 회귀를 예측합니다.
- 회귀 트리는 리프 노드에 속한 데이터 값의 평균값을 구해 회귀 예측값을 계산합니다.
- 결정 트리, 랜덤 포레스트, GBM, XGBoost, LightGBM 등 모든 트리 기반의 알고리즘은 분류뿐만 아니라 회귀도 가능합니다. 트리 생성이 CART(Classification And Regression Trees)는 분류뿐만 아니라 회귀도 가능하게 해주는 트리 생성 알고리즘입니다.
- 회귀 트리 Regressor 클래스는 선형 회귀와 다른 처리 방식이므로 회귀 계수를 제공하는 coef_ 속성이 없습니다. 대신 feature_importance_를 이용해 피처별 중요도를 알 수 있습니다.
- 선형 회귀는 직선으로 예측 회귀선을 표현하는 데 반해, 회귀 트리의 경우 분할되는 데이터 지점에 따라 브랜치를 만들면서 계단 형태로 회귀선을 만듭니다.
09. 회귀 실습 - 자전거 대여 수요 예측¶
- log() 보다는 log1p()를 이용하는데, log1p()의 경우는 1+log() 값으로 log 변환값에 1을 더하므로 NaN에 대한 문제를 해결해 줍니다. 그리고 log1p()로 변환된 값은 다시 넘파이의 expm1() 함수로 쉽게 원래의 스케일로 복원될 수 있습니다.
◎ 로그 변환, 피처 인코딩과 모델 학습/예측/평가¶
- 회귀 모델을 적용하기 전에 데이터 세트에 대해서 먼저 처리해야 할 사항이 있습니다. 결괏값이 정규 분포로 돼 있는지 확인하는 것과 카테고리형 회귀 모델의 경우 원-핫 인코딩으로 피처를 인코딩하는 것입니다.
- 회귀 트리의 평가가 더 좋더라도 회귀 트리가 선형 회귀보다 더 나은 성능을 가진다는 의미는 아닙니다. 데이터 세트의 유형에 따라 결과는 얼마든지 달라질 수 있기 때문입니다.
10. 회귀 실습 - 캐글 주택 가격:고급 회귀 기법¶
- 사이파이 stats 모듈의 skew() 함수를 이용해 칼럼의 데이터 세트의 왜곡된 정도를 쉽게 추출할 수 있습니다.
- 일반적으로 skew() 함수의 반환 값이 1이상인 경우를 왜곡 정도가 높다고 판단하지만 상황에 따라 편차는 있습니다.
- 왜곡된 정도가 높은 피처는 로그 변환합니다.
- 회귀 계수가 높은 피처, 즉 예측에 많은 영향을 미치는 중요 피처의 이상치 데이터의 처리가 중요합니다.
- 머신러닝 알고리즘을 적용하기 이전에 완벽하게 데이터의 선처리 작업을 수행하라는 의미는 아닙니다. 일단 대략의 데이터 가공과 모델 최적화를 수행한 뒤 다시 이에 기반한 여러 가지 기법의 데이터 가공과 하이퍼 파라미터 기반의 모델 최적화를 반복적으로 수행하는 것이 바람직한 머신러닝 모델 생성 과정입니다.
11. 정리¶
- 선형 회귀는 실제값과 예측값의 차이인 오류를 최소로 줄일 수 있는 선형 함수를 찾아서 이 선형 함수에 독립변수를 입력해 종속변수를 예측하는 것입니다.
- 실제값과 예측값의 차이를 최소화하는 것에만 초점을 맞춘 단순 선형 회귀는 학습 데이터에 과적합되는 문제를 수반할 가능성이 높아 이를 해결하기 위해 규제를 선형 회귀에 도입했습니다.
- L2 규제를 적용한 릿지, L1 규제를 적용한 라쏘, 그리고 L1에 L2 규제를 결합한 엘라스틱넷으로 나누어 집니다.
- 선형 회귀를 분류에 적용한 대표적인 모델이 바로 로지스틱 회귀입니다.
- 회귀 트리를 이용해 예측하는 방법도 있습니다. 회귀 트리는 리프 노드에서 평균값을 구해 회귀 예측값을 계산합니다.
- 선형 회귀는 데이터 값의 분포도가 정규 분포와 같이 종 모양의 형태를 선호하며, 특히 타깃값의 분포도가 왜곡되지 않고 정규 분포 형태로 되어야 예측 성능을 저하시키지 않습니다.
- 또한 데이터 세트에 카테고리형 데이터가 있을 경우 이를 레이블 인코딩을 통한 숫자형 변환보다는 원-핫 인코딩으로 변환해줘야 합니다. 하지만 회귀 트리의 경우 인코딩 방식에 크게 영향을 받지는 않습니다.
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:80% !important;}</style>"))
728x90
'Book report > 파이썬 머신러닝 완벽가이드' 카테고리의 다른 글
[파이썬 머신러닝 완벽가이드] 07. 군집화 (0) | 2022.09.18 |
---|---|
[파이썬 머신러닝 완벽가이드] 06. 차원 축소 (0) | 2022.09.12 |
[파이썬 머신러닝 완벽가이드] 04. 분류 (0) | 2022.04.24 |
[파이썬 머신러닝 완벽가이드] 03. 평가 (0) | 2022.04.10 |
[파이썬 머신러닝 완벽가이드] 02. 사이킷런으로 시작하는 머신러닝 (0) | 2022.03.27 |