본문 바로가기

빅데이터

단순선형회귀분석과 보스턴 집값 데이터(1)

 

정의

 

회귀분석이란 간단히 말해 데이터의 관계성을 기술하는 것, 다시 말해 하나의 변수로 다른 변수의 값을 예측하거나 설명하는 것이다. 통계학의 자료 분석 방법 중 하나이다. 하나의 종속변수에 독립변수가 하나라면 단순회귀분석, 하나의 종속변수에 둘 이상의 독립변수를 다중회귀분석이라고 한다. 파이썬에서는 대표적으로 sklearn(scikit-learn) 패키지에서 선형회귀분석을 위한 함수(Linear Regression)를 제공한다. 회귀분석을 통해 다음 세가지를 알 수 있다.

 

1. 종속변수와 독립변수 간에 선형관계 존재 여부

2. 종속변수에 영향을 미치는 독립변수가 유의한지와 영향력의 정도

3. 추정된 회귀모형을 통한 종속변수의 예측치

 


종속변수서로 관계를 주고 받는 둘 또는 그 이상의 변수중에는, 다른 변수에 영향을 주는 변수도 있고, 다른 변수에 의해 영향을 받는 변수도 있을 것이다. 이때 영향을 받는 변수를 종속변수라 한다.

독립변수어떠한 효과를 관찰하기 위하여 실험적으로 조작되거나 혹은 통제된 변수를 말한다. 간단히 말하자면 종속변수에 영향을 끼치는 변수이다.


 

 

알파와 베타를 구해야 한다.

 

단일선형회귀모델의 4가지 가정

 

1. 하나의 종속 변수와 하나의 독립변수를 분석

2. 독립변수 X의 각 값에 대한 Y의 확률분포가 존재함

3. Y의 확률분포의 평균은 X값이 변함에 따라 일정한 추세를 따라 움직인다.

4. 종속변수와 독립변수 간에는 선형 함수 관계가 존재함

 

 

최소자승법

 

이번에는 최소자승법을 이용하여 회귀 계수를 추정할 것이다. 최소자승법이란 '어떤 계의 해방정식을 근사적으로 구하는 방법으로, 근사적으로 구하려는 해와 실제 해의 오차의 제곱의 합이 최소가 되는 해를 구하는 방법이다.'라고 위키피디아에 나와있다. 다시 말해 잔차를 제곱한 값들의 합이 최소가 되도록 표본회귀식의 알파와 베타를 구하는 방법이다. 여기서 잔차란 독립변수 X값이 주어졌을 때, 표본오차 때문에 발생하는 예측 된 Y의 값과 실제 값 Y의 차이를 말한다. 자세한 설명은 예제를 풀며 하겠다.

 

 

예제 : 보스턴 집값 데이터

 

보스턴 집값 데이터는 1978년 하버드대학교에서 발표된 자료로 집값에 영향을 미치는 요인들을 모아 집값의 변동을 보여주는 데이터 셋이다.선형 회귀를 테스트하는 유명한 데이터이고 인터넷에서 쉽게 받을 수 있다. 이 데이터를 이용해 특정 요인과 집값간의 상관관계가 있는지 파악해보자.

 

우선 주피터 노트북을 켠 후 기본적인 라이브러리부터 불러와준다.

 

 

1. pandas는 데이터 분석에 가장 많이 사용되는 라이브러리 중 하나로 데이터 분석, 가공, 처리등을 쉽게 하기 위한 함수를 제공하는 패키지이다.

2. numpy는 행렬, 벡터 등 수학 계산을 다룰 때 이용하는 패키지로 매우 자주 사용된다.

3. matplotlib은 그래프를 그릴 때 주로 사용하는 패키지이다.

4. matplotlib.pyploy은 matplotlib의 서브패키지로 MATLAB처럼 플롯을 그려주는 패키지인데 MATLAB가 뭔지는 잘 모르겠다.

5.%matplotlib inline은 ipython의 magic function 중 하나로 matplotlib의 시각화 결과를 ipython notebook 안에서 출력하는 함수이다.

6.matplotlib.style.use('ggplot')은 matplotlib로 불러온 그래프를 ggplot스타일로 바꿔주는 역할을 한다.

 

이번 실습에서 사용할 라이브러리를 불러온 후 데이터를 불러온다.

 

 

 

1. sklearn 패키지에서 제공하는 datasets을 불러온다.

2. datasets에 저장되어있는 보스턴 집값 데이터를 boston_house_price에 저장한다.

 

실제 데이터를 보기 위해서 boston_house_price에 저장된 데이터를 불러오면

 

 

이렇게 알아보기 힘든 자료들이 뜬다.

 

데이터의 모양, 특성, 컬럼을 파악하기 위해 아래 코드를 입력해준다.

 

 

이 데이터는 딕셔너리 형식으로 구성되어있다. 데이터의 키(key)를 살펴보면 data, target, feaeture_names, DESCR, filename를 볼 수 있고 feature_names를 보면 해당 데이터의 컬럼이 어떻게 구성되어있는지 확인할 수 있다.

 

컬럼 설명
DESCR = description

 

그리고 데이터의 세부적인 내용을 저장하고 있는 DESCR을 출력하면 자세한 정보들을 확인할 수 있다.

 

그럼 이제 본격적으로 회귀분석을 위한 과정을 밟아보겠다.

 

우선 해당 데이터가 직관적이지 않기 때문에 데이터 프레임으로 정제해 보기 편하도록 가공하겠다

 

이처럼 필요한 데이터를 가공하기 위해 판다스의 DataFrame 함수를 이용하면 깔끔하게 볼 수 있다. 깔끔히 정리된 자료를 data_frame에 저장한다. 그런데 아직 컬럼에 이름이 나와있지 않고 숫자가 적혀있어 어떤 특성을 나타내는지 알 수 없다.

 

이렇게 바꾸고자 하는 값의 위치 = 넣고자 하는 값을 입력해주면 숫자가 각 특성의 이름으로 바뀐 것을 볼 수 있다. 특정 요인과 집값간의 상관관계를 분석해야 하는데 집값 데이터가 보이질 않는다. 집값 비교를 위해 target이라는 키에 저장되어 있는 집값을 불러와야 한다.

 

위에서 사용한 코드를 약간 변형하면 쉽게 해결할 수 있다.

 

 

열 추가 : DataFrame객체 ['이름'] = 데이터 값

 

data_frame에 'Price'라는 새로운 열을 추가했다. 이제 하나의 표에서 원하는 데이터를 모두 확인할 수 있다.

 

(2)에서 계속