캐글의 자전거 대여 수요(Bike Sharing Demand) 예측 경연에서 사용된 데이터를 이용해 선형 회귀와 트리 기반 회귀를 비교해봅시다. 해당 데이터는 2011년 1월 ~ 2012년 12월까지 날짜/시간, 기온, 습도, 풍속 등의 정보를 기반으로 1시간 간격 동안의 자전거 대여 횟수가 기재돼 있습니다. 데이터 세트의 주요 피처는 다음과 같습니다. 이 중 타겟값은 맨 마지막 피처인 count로 '대여 횟수'를 의미합니다. Columns 명 데이터 내용 Datetime 시간 (YYYY-MM-DD 00:00:00) Season 봄(1) 여름(2) 가을(3) 겨울(4) Holiday 공휴일(1) 그외(0) Workingday 근무일(1) 그외(0) Weather 아주깨끗한날씨(1) 약간의 안개와 구름(2..
로지스틱 회귀는 선형 회귀 방식을 분류에 적용한 알고리즘입니다. 즉, 로지스틱 회귀는 분류 알고리즘입니다. 로지스틱 회귀가 선형 회귀와 다른 점은, 학습을 통해 선형 함수의 회귀 최적선을 찾는 것이 아니라 시그모이드(Sigmoid) 함수 최적선을 찾고, 시그모이드 함수의 반환 값을 확률로 간주하여 분류를 결정한다는 것입니다. 가령, 종양의 크기에 따라 악성 종양인지(1), 그렇지 않은지(0)를 회귀를 통해 1과 0의 값으로 예측한다고 해봅시다. 종양의 크기를 X축에, 악성 종양의 여부를 Y축에 나타낸다고 하면 데이터의 분포는 위와 같을 것입니다. 이를 단순 선형 회귀 모델로 예측한다면, 왼쪽 그림과 같을 것입니다. 하지만 이를 S자 커브 형태를 가지는 시그모이드 함수로 예측한다면 단순 선형 회귀 모델보다..
선형 회귀의 경우 하이퍼 파라미터 최적화 못지않게, 데이터 분포를 정규화하는 것과 인코딩이 하는 방법이 매우 중요합니다. 선형 모델은 일반적으로 피처와 타깃값의 관계가 선형적이라고 가정하고 최적의 선형함수를 찾아내 결괏값을 예측합니다. 또한, 선형 회귀 모델은 피처값과 타깃값의 분포가 정규 분포인 것을 매우 선호합니다. 특히 타깃값이 치우진 왜곡(Skew) 형태의 분포를 가지는 경우 예측 성능에 부정적인 영향을 끼칠 가능성이 높습니다. 피처값 역시 타깃값보다는 덜하지만 왜곡된 분포를 가질 경우 예측 성능에 부정적인 영향을 끼칩니다. 따라서 선형 회귀를 적용하기 전에 먼저 데이터 스케일링/정규화 작업을 수행하는 것이 일반적입니다. 하지만 해당 작업을 수행했다고 해서 무조건 예측 성능이 향상되는 것은 아닙니..
이전 실습에서 차수가 낮은 다항 회귀 모델은 과소적합이, 차수가 높은 다항 회귀 모델의 경우 회귀 계수가 매우 커짐과 동시에 과적합이 발생하는 것을 확인했습니다. 따라서 회귀 모델을 학습 데이터에 적절히 적합시키면서 회귀 계수가 기하급수적으로 커지는 것을 제어해야 합니다. 이전까지 선형 모델의 비용 함수는 RSS를 최소화하는, 즉 실제값과 예측값의 차이를 최소화하는 것만 고려했습니다. 그러다 보니 학습 데이터에 지나치게 맞추게 되고, 회귀 계수가 쉽게 커졌습니다. 이럴 경우 모델의 변동성이 심해지면서 테스트 데이터에 대해 예측 성능이 크게 저하되기 쉽습니다. 그러므로 비용 함수는 RSS를 최소화함과 동시에 과적합을 방지하기 위해 회귀 계수 값이 커지지 않도록 제어해야 합니다. 이를 만족하기 위해 비용 함..
지금까지 설명한 회귀는 독립변수와 종속변수의 관계가 일차 방정식 형태로 표현된 회귀였습니다. 회귀가 독립변수의 단항식이 아닌, 2차 3차 방정식과 같은 다항식으로 표현되는 것을 다항(Polynomial) 회귀라고 합니다. 즉, 다항 회귀는 $Y = W_{0} + W_{1}X_{1} + W_{2}X_{1}X_{2} + W_{3}X_{3}^{2}$와 같이 표현됩니다. 주의할 점은, 다항 회귀를 비선형 회귀로 혼동할 수 있다는 점입니다. 다항 회귀는 선형 회귀라는 점을 기억해야 합니다. 회귀에서 선형/비선형을 나누는 기준은 회귀 계수의 선형/비선형성이기 때문입니다. 독립 변수의 선형/비선형 여부와는 무관합니다. 위의 그림과 같이, 독립 변수와 종속 변수의 관계를 단순 선형 회귀로 모델링하는 것 보다 다항 회귀..
사이킷런의 linear_models 모듈은 매우 다양한 선형 회귀를 클래스로 구현해 제공합니다. 그중 규제가 적용되지 않은 선형 회귀 클래스인 LinearRegression을 이용해 보스턴 주택 가격 예측을 해봅시다. LinearRegression 클래스에 대해 간단히 알아보겠습니다. 해당 클래스는 RSS를 최소화해 OLS(Ordinary Least Squares) 추정 방식으로 구현한 클래스입니다. fit() 메서드로 X, Y 배열을 입력받으면 회귀 계수를 coef_ 속성에 저장합니다. 파라미터 fit_intercept : 불린 값으로, 디폴트는 True. 절편을 계산할 것인지 말지를 설정. False이면 절편이 0으로 지정 됨 normalize : 불린 값으로, 디폴트는 False. 만약 fit_in..
회귀는 현대 통계학을 떠받치고 있는 주요 기둥 중 하나로서, 데이터 값이 평균과 같은 일정한 값으로 돌아가려는 경향을 다룹니다. 회귀란 여러 독립변수와 하나의 종속변수 간의 상관관계를 모델링하는 기법입니다. $Y = W_{1}X_{1} + W_{2}X_{2} + ... + W_{n}X_{n}$ 이라는 선형 회귀식을 예로 들면, $Y$는 종속변수이며 $X_{i}$가 독립변수입니다. $W_{i}$는 독립변수의 값에 영향을 미치는 회귀 계수(coefficients)입니다. 머신러닝 관점에서 보면 독립 변수는 피처이며 종속변수는 결정값입니다. 머신러닝 회귀 예측의 핵심은 주어진 피처와 결정값 데이터로 학습을 진행하여 최적의 회귀 계수를 찾아내는 것입니다. 회귀는 회귀 계수의 선형/비선형 여부, 독립변수의 개수,..
스태킹(Stacking)은 개별적인 여러 알고리즘을 서로 결합해 예측 결과를 도출한다는 점에서 배깅 및 부스팅과 비슷합니다. 가장 큰 차이점은, 개별 모델이 예측한 데이터를 기반으로 다시 예측을 한다는 점입니다. 즉, 각 모델의 예측 결과를 모아 메타 데이터 세트를 만든 뒤, 별도의 모델로 해당 데이터 세트를 학습하고 최종 테스트 데이터에 대해 예측을 수행합니다. 스태킹 앙상블을 위해 개별적인 기반 모델들과, 메타 모델이 필요합니다. 스태킹 앙상블을 현실 문제에 적용하는 경우는 많지 않지만, 캐글과 같이 조금이라도 성능 수치를 높여야 하는 상황에서 자주 사용됩니다. 스태킹을 하려면 많은 개별 모델이 필요합니다. 2~3개의 개별 모델만으로는 예측 성능이 쉽게 향상되지 않으며, 스태킹 자체가 반드시 예측 성..
캐글 신용카드 사기 검출 분류 실습을 해봅시다. 해당 데이터 세트의 레이블인 "Class" 속성은 매우 불균형한 분포를 가집니다. 레이블 값은 0과 1로, 0이 정상이며 1이 사기 트랜잭션을 의미합니다. 전체 데이터의 0.172%만이 사기 트랜잭션 데이터입니다. 일반적으로 사기 검출이나 이상치 검출이 주제인 데이터 세트는 이처럼 레이블 분포가 극도로 불균형할 수 밖에 없습니다. 레이블 분포가 극도로 분균형할 경우 학습 후 예측 성능에 문제가 발생하는 경우가 많습니다. 이유는 당연히, 이상치 데이터가 정상 데이터에 비해 극도로 적기 때문입니다. 모델은 대부분의 경우 정상 데이터로 분류를 수행할 것입니다. 지도학습에서 이러한 문제를 해결하려면 적절한 학습 데이터를 확보해야 합니다. 대표적으로 오버 샘플링(O..
캐글의 산탄데르 고객 만족 데이터 세트를 XGBoost와 LightGBM로 학습하여 예측해보겠습니다. 산탄데르 고객 만족 데이터 세트의 370개의 피처를 기반으로 고객의 만족 여부를 예측하면 됩니다. 산탄데르 은행이 캐글에 경연을 의뢰한 데이터로서, 피처 이름은 익명 처리되어 있습니다. 레이블의 이름은 TARGET이며 0은 만족, 1은 불만족을 나타냅니다. 레이블의 분포가 불균형한 데이터 세트이므로, 모델의 예측 성능은 ROC-AUC(ROC 영역의 넓이)로 평가하겠습니다. 데이터 세트를 불러왔습니다. 레이블 칼럼을 포함하여 총 371개의 피처가 있고, 데이터는 76020개가 있습니다. 각 피처의 타입과 Null 값의 개수를 확인하겠습니다. 모든 칼럼은 int 혹은 float 자료형으로 별도의 레이블 인코..