베이지안 네트워크(Bayesian network)를 활용하여 King County의 집값에 영향을 미치는 다양한 요소의 인과관계를 확인하고, 분석하는 것이 이 프로젝트의 목적이다. 데이터의 출처는 여기(www.kaggle.com/harlfoxem/housesalesprediction)이고, 아래의 구성 순서대로 분석 및 모델링 과정을 수행할 것이다. 모든 코드는 R로 작성되었다. 1. 데이터 전처리 2. 시각화 및 상관관계 분석 3. 다중회귀분석 4. 베이지안 네트워크 모델링 1. 데이터 전처리In:
Out:
▷ KC County의 집값 데이터는 21,613개의 행과 21개의 열로 구성되어 있고, 각 열의 의미는 다음과 같다. [id]: Unique ID for each home sold 분석을 수행하기 위해 다음의 전처리 과정을 거쳤다. In:
▷ id, date, zipcode, lat, long은 분석 대상에서 제외하였다. ▷ 집의 나이를 의미하는 age는 데이터 측정 시점인 2015년에 yr_built를 빼서 생성하고, yr_built를 제외하였다. ▷ yr_renovated의 경우, 보수가 안 된 집은 0, 보수가 된 집은 공사된 해로 나타나 있다. 이를 모델에 하나의 변수로 넣게되면 해석의 문제가 발생하게 된다. 따라서 네 개의 카테고리(No Renovation, Under 1980 - 2000, 2000 - 2015)로 바꾸었다. ▷ sqft_above와 sqft_basement의 합은 sqft_living이다. 즉, 이 세 열의 정보는 중복되어 있다. 따라서 sqft_living만 남겨두고, sqft_above를 sqft_living으로 나누어 거주 공간 중 지상의 차지 비율을 의미하는 sqft_above_ratio라는 변수를 생성하였다. ▷ 범주형 변수는 factor로 변환하고, 이외의 변수는 모두 실수로 변환하였다. 2. 시각화 및 상관관계 분석In:
Out: ▷ sqft_lot, sqft_lot15, sqft_living15는 price와 비선형 관계를 보이고 있다. ▷ 위의 시각화로부터 다음의 경향성을 확인할 수 있다. - (욕실의 수 / 침실의 수 / 내부 공간 / 평가 등급 / 주변 이웃의 내부 공간)이 클수록 가격이 증가하는 경향을 보인다. - (땅의 크기 / 주변 이웃의 땅의 크기)가 클수록 가격이 감소하는 경향을 보인다. - (바다 또는 강이 보이는 뷰를 가지는 경우 / 최근에 보수공사를 진행한 경우에)에 가격이 증가하는 경향을 보인다. In:
Out: ▷ 범주형 변수인 waterfont와 yr_renovated를 제외하고, 연속형 변수에 대하여 상관관계 분석을 수행하였다. 위의 결과는 비선형 관계를 고려할 수 있는 스피어만 상관계수를 나타낸 것이다. ▷ X 표시는 상관계수 검정결과가 유의수준 0.05에서 유의하지 않은 상관관계를 의미한다. ▷ age와 sqft_above_ratio를 제외한 연속형 변수와 price가 양의 상관관계를 띄는 것으로 나타났다. 3. 다중회귀분석In:
Out:
▷ 시각화를 통해 price와 다른 연속형 변수의 비선형 관계를 확인할 수 있었다. 따라서 log를 취한 price를 모델의 반응변수로 정하였다. ▷ 이 모델의 R-squared는 0.6567로 전체 변동의 약 66%를 설명한다. F-Statistic를 통해 유의수준 0.05에서 이 모델이 유의하는 결론을 얻을 수 있다. ▷ yr_renovated 변수의 No Renovation는 유의수준 0.05에서 유의하지 않은 것으로 나타났다. 이외의 모든 변수는 유의수준 0.05에서 유의한 것으로 나타났다. In:
Out: ▷ 왼쪽 아래 끝 부분을 제외한 대부분의 데이터는 직선 상에 위치하는 것을 확인할 수 있다. 따라서 정규성 가정을 만족한다고 볼 수 있다. In:
Out:
▷ 모든 변수의 VIF가 10 이하이기 때문에, 다중공선성 문제가 나타나지 않는다고 볼 수 있다. 4. 베이지안 네트워크 모델링In:
Out:
▷ Score는 BIC로, 이를 최대화하는 구조를 찾기 위해 Hill-Climbing 알고리즘을 사용하였다. ▷ 위의 그림은 학습된 네트워크의 구조이고, 우리의 직관과 맞지 않는 관계를 가지고 있다. 위의 네트워크에 따르면 log_price가 bedrooms에 영향을 주다. 즉, 가격이 집의 침대의 개수에 영향을 준다고 보아야 한다. 이 인과관계는 우리의 직관과 맞지 않다. 따라서 데이터의 특성에 맞는 인과관계를 미리 지정하여 합리적인 네트워크를 만들어야 한다. 데이터의 특성을 고려한 베이지안 네트워크의 구성 조건은 다음과 같다. - bedrooms, bathrooms, sqft_living, waterfront, view, condition, grade, yr_renovated는 log_price에 영향을 준다.- floors, bedrooms, bathrooms, sqft_living, sqft_lot, sqft_above_ratio, sqft_living15, sqft_lot15, waterfront, view, age는 노드의 최상단에 위치하고, 서로 영향을 주고 받을 수 없다. - log_price는 어느 변수에도 영향을 줄 수 없다. - condition, grade는 최상단에 위치한 노드에 영향을 줄 수 없다.- yr_renovated는 최상단 노드에 영향을 줄 수 없다. 위의 조건을 고려하여 네트워크의 구조를 학습하여 보자. In:
Out: ▷ 앞의 네트워크 구조 학습 방법과 차이점은 blacklist, whitelist 인자에 네트워크 구성 조건을 준 것이다. ▷ sqft_lot는 네트워크에서 고립되어 어느 노드에도 영향을 주고 받지 않는 것으로 나타났다. In:
Out:
▷ bn.fit 함수를 이용하여, 학습된 구조로부터 파라미터를 학습할 수 있다. 위의 결과는 파라미터의 학습 결과이다. 각 Conditional density의 계수로부터 변수간의 관계를 확인할 수 있다. In:
Out:
▷ 다중회귀 모델과 학습 결과의 RMSE가 베이지안 네트워크 모델보다 더 낮은 것으로 나타났지만, 큰 차이는 없는 것을 알 수 있다. ▷ 두 모델의 잔차의 분포가 비슷한 형태를 띄는 것을 확인할 수 있다. |