대표적인 차원 축소 알고리즘인 PCA, LDA, SVD, NMF에 대해서 알아봅시다. 차원 축소는, 매우 많은 피처로 구성된 다차원 데이터 세트의 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 것입니다. 일반적으로 차원이 증가할수록 데이터 포인트 간의 거리가 기하급수적으로 멀어지므로 데이터들이 공간 상에 희소(sparse)하게 존재하게 됩니다. 수백 개 이상의 피처로 구성된 데이터의 경우 적은 차원에서 학습된 모델보다 예측 신뢰도가 떨어집니다. 또한 피처가 많으면 개별 피처간에 상관관계가 높을 가능성이 큽니다. 선형 회귀와 같은 선형 모델에서는 입력 변수 간의 상관관계가 높을 경우 다중 공서넝 문제가 발생하여 모델의 예측 성능이 저하됩니다. 데이터의 차원을 축소하면 더 직관적으로 데이터를 해석할 수..
캐글에서 제공하는 House Prices : Advanced Regression Techniques 데이터 세트를 이용해 회귀 분석을 더 심층적으로 알아봅시다. 79개의 변수로 구성된 이 데이터는 미국 아이오와 주의 에임스(Ames) 지방의 주택 가격 정보를 가지고 있습니다. 자전거 대여 예측 예제와 동일하게 RMSLE 값이 평가 지표로 제시되었습니다. 가격이 비싼 주택일수록 예측 결과 오류가 전체 오류에 미치는 비중이 높으므로 이것을 상쇄하기 위해 오류값을 로그로 변환한 RMSLE를 사용하는 것입니다. 본 실습에서는 많은 데이터 가공을 수행할 것이므로, 원본 DataFrame을 따로 보관해놓겠습니다. 타겟값은 맨 마지막 칼럼인 SalePrice입니다. 데이터 세트의 크기와 피처의 타입, Null이 있는..
캐글의 자전거 대여 수요(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개의 개별 모델만으로는 예측 성능이 쉽게 향상되지 않으며, 스태킹 자체가 반드시 예측 성..
