9. 회귀분석
목차
- Step 0. 데이터 전처리
- Step 1. Steepest Descent Method
- Step 2. Stochastic Gradient Descent
이번엔 연속형 변수를 예측하는 가장 기본이 되는 방법론인 회귀분석에 대해 공부를 해보려 한다.
선형회귀 모형은 종속(목표)변수가 존재하는 지도학습(Supervised learning)이다. 보통 통계학에서의 회귀분석 모형은 종속변수에 대해 가정이 필요하지만 데이터마이닝 영역에서는 그렇지 않다고 한다.
이렇듯 머신러닝에서 쓰이는 수치해석법으로는 Steepest Descent Method와 Stochastic Gradient Descent가 존재한다.
Steepest Descent Method는 최대경사도법으로 전체 자료에 대해 1차 미분한 탐색경로 설정하고 반복 갱신해가며 최적의 회귀계수 베타값을 찾아나가는 과정이다.
그러나 데이터마이닝에선 관찰값의 데이터 수가 무수히 많기 떄문에 계산량이 기하급수적으로 증가하게 되는데, 그래서 나온 방법론인 Stochastic Gradient Descent 이다.
해당 방법론은 전체자료를 대상으로 gradient를 계산하지 않고 개별 관측값의 gradient를 반복 계산하며 갱신을 수행한다.
그래도 개별 관측값을 모두 계산하게되면 계산량이 많아지기에 Mini batch 라는 전체 자료의 일부 관측값을 이용함으로써 계산량을 줄인다.
그리고 해당 회귀모형이 잘 구축되었는지 확인하기 위해 검증 자료를 통해 훈련에 포함되지 않은 결과도 잘 설명하는지 확인하는 과정인 cross validation을 수행한다.
자 이제 예제 코딩을 통해 공부를 해보도록 하자
Step 0. 데이터 탐색 및 전처리
회귀분석을 위한 데이터셋을 불러오자. 이번엔 url을 이용하여 여러 독립변수로 집값을 예측하는 california house price dataset을 이용할 것이다
Data description
목표변수 :
- medianHouseValue: Median house value for households within a block (measured in US Dollars)
독립변수 :
- longitude: A measure of how far west a house is; a higher value is farther west
- latitude: A measure of how far north a house is; a higher value is farther north
- housingMedianAge: Median age of a house within a block; a lower number is a newer building
- totalRooms: Total number of rooms within a block
- totalBedrooms: Total number of bedrooms within a block
- population: Total number of people residing within a block
- households: Total number of households, a group of people residing within a home unit, for a block
- medianIncome: Median income for households within a block of houses (measured in tens of thousands of US Dollars)
- oceanProximity: Location of the house w.r.t ocean/sea
1 |
|
1 |
|
확인 결과 total_bedrooms 변수가 다른 변수들에 비해 데이터 개수가 부족하다. 더 자세히 확인해보도록 하자
1 |
|
1 |
|
처음에 total_bedrooms에 결측값들이 존재함을 확인했기에 결측값이 존재하는 index들을 찾아보자
1 |
|
1 |
|
자 이제 결측값들이 존재하는 인덱스 번호에 imputation을 실행해주자
1 |
|
1 |
|
이번엔 시각화를 이용해서 데이터 탐색을 해보자
1 |
|
데이터 분포를 확인하니 정규분포를 가정하기엔 어려운 분포 모양을 띄고있음. 회귀분석을 통해 예측하기엔 까다로운 dataset이다.
그래서 최대한 분포모양을 적합시키기 위해 변환을 실행시켜준다.
1 |
|
그리고 ocean_proximity는 범주형 자료여서 연속형 변수로 바꿔주기 위해 one-hot-encoding 작업을 수행한다.
1 |
|
1 |
|
전처리 과정을 수행했기에 회귀분석을 진행해보자.
Step 1. Steepest Descent Method
처음은 전통적인 통계학 방법 이용해 회귀분석을 진행해보자
1 |
|
1 |
|
1 |
|
약 0.61 의 설명력을 나타내는 회귀식임을 확인했다.
소숫점 자리가 매우 길기 때문에 소수점 두자리에서 절상하는 함수를 이용하자
1 |
|
1 |
|
Step 2. Stochastic Gradient Descent
이제 계산량을 줄이기 위한 SGD regressor를 기존 데이터에 적용시켜보자
1 |
|