AI & Data를 활용하는 기술경영자

Toy Kaggle Boston Housing Price Prediction 본문

Kaggle

Toy Kaggle Boston Housing Price Prediction

Data_Lover 2022. 4. 23. 16:42
728x90

코드 링크

 

날짜: 2022.04.19 ~ 

Intro

보스턴 주택 가격 데이터를 먼저 EDA부터 적합한 회귀 모델을 찾으려는 과정을 블로그에 담았습니다.
허나, 단순히 코드만 나열하는 것보단 이 속에서 볼 수 있는 수리 통계적 개념과 회귀의 정의와 대표적인 모델을 설명하려고 합니다.
앞으로도 캐글을 공부한 내용을 수리적 개념과 모델의 내용을 정리하는 블로그를 진행하려고 합니다.

 

코드 전개 순서

 

1. EDA

2. 가설 설정

3. 가설 확인

4. 캐글 속 확통

5. 4가지 머신러닝 회귀 모델

 

EDA(Exploratory Data Analysis)

 

상세한 코드 내용은 링크를 통해서 봐주시길 바랍니다.

목표: 주택 가격과 관련있는 요소 찾기

 

1. 데이터 타입과 결측값 확인

*데이터 타입 확인

이유: csv파일 내에 데이터들의 유형들이 섞여 있을 경우 연산의 문제가 생길 수 있기에 먼저 확인을 해야합니다.
이번 데이터에는 문자형 데이터가 없어서 연산에는 무리가 없겠지만 그래도 연산의 편의를 위해서 int유형을 float데이터로 변경하겠습니다.

 

*결측치 데이터 확인

이유: 결측치를 그대로 이용을 한다면, 컬럼 안에 있는 데이터들의 특성을 제대로 뽑아내기가 어려워지기에 데이터 분석을 하기가 어려워집니다.


왜냐하면, 관측된 자료를 무시하게 되어서 생기는 효율성 저하와 통계적 타당성 문제를 일으키기 때문입니다.
추가적으로, feature engineering을 효과적으로 실행할 수 없기에 확인을 한 후 있다면 제거를 하는 방향성으로 가려고 했습니다.

 

한 가지 의문: 결측치를 삭제만 해야 할까요?

의문이 든 이유: 현업이나 대다수의 데이터에는 결측치가 존재할 수 밖에 없기 때문에 활용방법에 대해서 궁금했습니다.

해답: 다양한 결측치 이용방법

  • fillna함수 응용
  • interpolate함수 응용
  • replace함수 응용
  • numpy의 where함수 응용

 

*참고 블로그

결측치 관련 논문

결측치 이용 블로그

 

2. 데이터 분포 확인하기

 

가장 기본적인 것들을 위주로 했습니다.

  • describe(): 데이터의 통계값들 보기

이를 통해서 데이터의 최대,최소 그리고 평균과 중앙값 추가적으로 사분위 데이터를 통해서 데이터의 분포도와 이상치들이 있는지 대략적 감을 얻을 수 있습니다.

  • corr(): 데이터간의 상관계수를 추출하는 메소드로 사용 시

주택 가격과 가장 밀접한 관계를 끼치는 컬럼들이 무엇이 있나를 파악할 수 있습니다.

  • log변환: 데이터 수치 감소 및 음수를 양수화

이번 데이터에서는 수치가 큰 부분들이 없어서 피요는 없지만 시도해보았습니다.

 

3. 주택 가격 데이터 정리

  • nunique() : 동일 데이터 추출

동일한 데이터가 얼마나 많은지 궁금해서 이용했습니다.
좀 더 구간을 나눠서 분포도를 보고 싶어서 시도를 해보았으나 제한 시간 때문에 하지 못했습니다.

  • 확률밀도함수 그리기

데이터의 분포 확인 및 이상치가 있는 데이터인지 확인하고 싶었습니다.

 

가설 설정

다양하게 양의 상관관계, 음의 상관관계가 나오는 것을 생각해서 설정했습니다.

 

1. 주택 크기가 클수록 집값이 높아질 것입니다.(증가-증가)
2. 주택이 오래될수록 집값이 낮아질 것입니다.(증가-감소)
3. 직장과 가까우면 집값이 높아질 것입니다.(감소-증가)
4. 1인당 범죄율이 높을수록 집값은 낮으질 것입니다.(증가-증가)
5. 교통편이 좋을수록 집값이 높아질 것입니다.(증가-증가)
6. 방의 갯수가 많을수록 짒값이 높아질 것입니다.(증가-증가)
7. 하위 계층이 많을수록 집값은 낮아질 것입니다.(증가-감소)
8. 학생-교사 비율이 낮을수록 집값은 낮아질 것입니다.(감소-감소)

 

가설 확인

 

상세한 코드 내용은 링크를 통해서 봐주시길 바랍니다.
상관관계의 영향이 큰 것 같다면 O, 아니면 X

 

1. 주택 크기가 클수록 집값이 높아질 것입니다.(X)
2. 주택이 오래될수록 집값이 낮아질 것입니다.(O)
3. 직장과 가까우면 집값이 높아질 것입니다.(X)
4. 1인당 범죄율이 높을수록 집값은 낮으질 것입니다.(X)
5. 교통편이 좋을수록 집값이 높아질 것입니다.(O)
6. 방의 갯수가 많을수록 짒값이 높아질 것입니다.(O)
7. 하위 계층이 많을수록 집값은 낮아질 것입니다.(O)
8. 학생-교사 비율이 낮을수록 집값은 낮아질 것입니다.(O)

 

회고

우리가 익히 들은 주택 가격과 관련된 여러 요소들을 비교한 것은 흥미로웟습니다.

그리고, 관용적으로 주택 가격의 증가 감소의 영향을 끼치는 것들이 실제 분석을 통해서 본 결과 비단 그것 하나만이 아니라 여러 데이터의 합집합을 통해서 도출이 되어왔다는 것을 알게 되어서 좋았습니다.

 

그러나 한 가지 의문이 든건 너무나 전사적으로만 분성을 했기에 p-value값들이 너무 커서 이것이 정말로 상관관계를 분석할 수 있는 데이터와 지표였는지는 고려해봐야할 것 같습니다.

즉, 주택의 가격은 한 가지 데이터만으로 인해서 변경되는 것보단 여러 데이터의 복합적 이유로 된다는 사실을 알게 되어 여러 데이터를 합해서 상관계수를 구하는 방법을 조금 찾아봐야할 것 같습니다.

 

또한, 데이터에 따라서 객관적인 기준들이 맞지 않을 수 있다는 것을 알게 되어서 좋았습니다.

고로, 객관적 기준보단 데이터에 맞는 기준으로 가설을 설정하면 보다 좋은 설계가 될 수 있기에 데이터가 조금 더 방대해지면 A/B TEST를 도입할 것 같습니다.

객관적 기준을 기반으로 만든 것:A, 데이터 기준으로 만든 것:B

이렇게 하여서 데이터를 분석할 것 같습니다.

최종적으로, 상관관계가 인과관계를 도출할 수 있나에 대한 의문이 들게 되어서 통계적 내용을 정리할 것입니다.

 

캐글 속 확통

 

1. 상관관계와 상관계수

*상관관계

정의: 2개 변수가 선형 관계가 있는 범위를 표현하는 통계적 측도로 원인과 결과에 관한 표현 없이 간단한 관계를 설명합니다.

 

*상관계수

정의: 양의 상관관계가 있는지 음의 상관관계가 있는지 알려주고 그 상관성이 얼마나 크고 작은지 알려줍니다.
1 또는 -1에 가까울수록 상관성이 큰 것이고, 0에 가까울수록 상관성이 작은 것입니다.

 

*참고 링크

상관관계

 

2. P-value

정의: p-값(p-value)은 귀무 가설(null hypothesis)이 맞다는 것을 베이스하여, 표본에서 실제로 관측된 통계치와 같거나 더 극단적인 통계치가 관측될 확률입니다.

특징: p-value의 값이 적을 수록 데이터의 가치는 커집니다. 왜냐하면, p값은 실험군-대조군의 차이가 우연히 나타났을 때 확률을 말하는데 이것이 작다면 당연히 데이터가 유의미하다는 것을 뜻하기 때문입니다.

 

*귀무가설

정의: 통계학에서 처음부터 버릴 것을 예상하는 가설이다. 차이가 없거나 의미있는 차이가 없는 경우의 가설로 이것이 맞거나 맞지 않다는 통계학적 증거를 통해 증명하려는 가설입니다.

 

*관련 링크

P-Value

공돌이

 

3. 인과관계

정의: . 하나의 사건(원인)이 다른 사건(결과)을 일으킬 때 둘의 관계를 말합니다.

 

4. 상관 관계와 인과관계

인과관계는 상관관계 안에 속하는 개념이므로 인과관계는 상관관계의 부분집합입니다.
그러한 이유로 상관관계를 인과관계다라고 볼 수는 없는 것입니다.

 

그렇다면 상관관계는 의미가 없을까요?

그렇지 않습니다. 왜냐하면, 상관계수 값을 통해 변수의 관계가 얼마나 연관성이 높은지 유추를 할 수도 있고 상관관계 연구를 통해서 인과관계를 밝힌 사례 또한 있기 때문입니다.

 

이렇게만 토이 프로젝트를 끝내기 아쉬워서 한 가지 궁금증 해결을 위한 시도를 해보았습니다.

 

최근에, 캐글 필사를 하면서 lazypredict을 알게 되었습니다. 이는 우리의 데이터가 어떤 모델을 이용했을 때, 좋은 결과를 도출할 수 있는 확인할 수 있는 용도입니다. 왜냐하면, 튜닝없이 Basic모델을 사용했을 때 나온 결과이기에 절대적인 신뢰보단 참고용입니다. 저는 이번 토이 프로젝트 이후에 한 가지 궁금함이 생겼습니다.

 

lazypredict가 예측하는 모델이 정확한지 제가 직접 대표적인 4개의 회귀 모델을 돌린 것을 비교하고 싶다는 생각을 했습니다.

 

이때, 저 또한 모델을 돌릴 때 튜닝을 사용하지 않았습니다.

머신러닝 회귀 모델

**상세한 내용은 코드를 통해서 확인해 주세요**

 

아래와 같은 4가지 회귀 모델은 사용한 것은 정말로 가장 기초적인 모델들이고 제가 항상 캐글 필사를 하면 보는 회귀 모델들입니다. 그래서 이번 기회에 사용하고, 이 모델들의 장단점을 정리하고 싶어서 아래의 4가지를 선정했습니다.

추가적으로, 정리할 때 논문Scikit-learn 공식문서를 보고 정리하기도 했습니다.

Linear Regression

정의: 선형 함수로 예측을 수행하는 회귀형 선형 알고리즘이고, y of train ~ y of test 사이의 평균제곱오차를 최소화하는 파라미터와 절편을 찾아내는 알고리즘입니다.

 

특징: 특성이 하나라면 직선, 두 개면 평면, 그 이상이면 초평면이 되어서 다양한 특성을 처리하는 특징을 갖고 있습니다.

 

장점: 학습 속도가 빠르고, 예측이 빠르기에 데이터가 많을 때도 학습 속도와 성능이 잘 되도록 변경이 가능합니다.

그러한 이유로, 데이터에 비해 특성이 많을 때 학습이 잘 되고 예측이 어떻게 이뤄지는 이해가 쉽게 됩니다.

 

단점: 계수의 값들이 어떻게 나오는지에 관한 명확한 근거가 없고 데이터셋의 특성이 서로 연관성이 크면 클수록 계수 분석이 어렵습니다.

 

 

 

728x90

'Kaggle' 카테고리의 다른 글

JPX Tokyo Stock Exchange Prediction competition  (0) 2022.05.04