orange3

지도학습- 예측 - 선형회귀(보스턴 집값 예측)

@thiskorea 2023. 5. 24. 00:28

기계학습의 예측을 실습하기로 한다.

대표적인 예로 보스턴 집값 예측이 있다.

 

우선 오렌지3를 연다.

우분투에서는 다음 파이썬 패키지로부터 설치를 한다.

udo apt install virtualenv build-essential python3-dev

sudo apt install virtualenv

virtualenv --python=python3 --system-site-packages orange3venv

virtualenv -p python3 .

source bin/activate
pip install PyQt5 PyQtWebEngine
pip install orange3

그리고 오렌지3를 열기 위해서 다음과 같이 명령어를 입력한다.

orange-canvas

또는

python3 -m Orange.canvas

처음에는 보스턴 집값 데이터셋을 불러온다. 

오렌지3에서는 기본 데이터셋으로 제공하고 있다.

 

데이터셋을 클릭하면 다음과 같이 아이콘이 빈 화면에 생긴다.

데이터셋을 더블클릭하면 다음과 같이 목록이 나온다.

이 목록에서 Housing을 선택하고 왼쪽에 초록색 원이 생기고 하단에 데이터 갯수가 나오면 선택된 것이다.

여기서 데이터를 확인하기 위해 Data - Data Table(데이터 테이블)을 연결한다.

데이터 테이블을 선택하면 다음과 같이 화면에 데이터 테이블이 생긴다.

그러면 이제 데이터셋과 데이터 테이블을 연결한다.

연결은 간단하게 드래그앤드랍을 이용할 수 있다.

데이터 테이블을 더블 클릭하면 다음과 같이 데이터를 확인할 수 있다.

데이터셋은 총 506개이고 13개의 특징(features)를 갖고 있다.

  1. CRIM: 해당 지역의 인구당 범죄율
  2. ZN: 25,000 평방 피트를 초과하는 거주 지역의 비율
  3. INDUS: 소매 비즈니스 외 상업적 비즈니스에 대한 비율
  4. CHAS: 찰스 강에 인접해 있는지 여부 (강 경계 = 1, 그렇지 않으면 = 0)
  5. NOX: 산화 질소 농도 (천만분의 1)
  6. RM: 주택당 평균 방의 수
  7. AGE: 1940년 이전에 건설된 자가 주택의 비율
  8. DIS: 보스턴 고용 센터까지의 가중 거리
  9. RAD: 방사형으로 뻗은 고속도로까지의 접근성 지수
  10. TAX: 10,000 달러당 재산 세율
  11. PTRATIO: 학생-교사 비율
  12. B: 1000(Bk - 0.63)^2, 여기서 Bk는 해당 지역의 흑인 비율
  13. LSTAT: 인구의 하위 계층 비율

MEDV는 target 데이터이고 주택의 중앙값을 1000달러 단위로 나타낸 값이다.

 

집값은 보스턴 지역의 다양한 요인에 영향을 받을 수 있으며 다른 특징들 간의 관계를 분석하여 모델을 훈련시키면 보스턴 지역의 다른 지역 주택에 대한 가격 예측을 수행할 수 있다.

 

변수 간의 순위 상관 관계를 계산하기 위해 Data-Rank를 사용한다. 

Rank를 통해서 변수의 중요도를 계산하고 상위 5개를 확인할 수 있다.

인구의 하위 계측 비율, 주택당 평균 방의 갯수, 학생-교사 비율, 상업적 비즈니스의 비율, 재산세율이 중요한 요인임을 확인할 수 있다.

 

그리고 각각의 상관관계를 확인해본다. 

y축에 집값을 놓고 x값을 바꿔가며 각각의 상관관계를 찾아볼 수 있다.

위에 나온 것처럼 중요한 변수들이 상관관계가 높은 것을 확인할 수 있다.

이제 본격적으로 예측을 위한 모델을 구성해본다.

예측을 위해서는 선형 회귀 모델을 사용하고 이를 위해서 훈련 데이터와 테스트 데이터로 분리한다.

Transform - Data Sampler를 선택하고 데이터셋과 연결한다.

이제 Model-Linear Regression을 선택하고 데이터 샘플러와 연결한다.

데이터 샘플러를 더블클릭하면 다음과 같이 샘플 타입이 나온다.

주로 7:3비율을 사용하기 위해 고정 비율 70%를 사용한다.

선을 더블클릭하여 데이터는 Data Sample(훈련 데이터)를 보낸다.

선형 회귀 모델의 옵션에서 정규화를 선택할 수 있다.

정규화 옵션을 선택했으면 이제 모델의 성능을 확인할 시간이다.

다음과 같이 Evaluate-Test and Score를 데이터샘플(훈련 데이터)와 모델로부터 입력을 받는다.

MSE, RMSE, MAE, R2에 대해서 chatGPT에게 물어서 다음과 같은 대답을 얻었다.

 

MSE (Mean Squared Error), RMSE (Root Mean Squared Error), MAE (Mean Absolute Error), R2 (Coefficient of Determination)는 회귀 모델의 예측 성능을 평가하기 위해 사용되는 지표들입니다. 각각의 지표에 대해 설명해드리겠습니다:

 

MSE (Mean Squared Error):
MSE는 실제 값과 예측 값 사이의 평균 제곱 오차를 나타내는 지표입니다. 각 예측 값과 실제 값의 차이를 제곱한 후, 이를 모든 데이터 포인트에 대해 평균을 구합니다. MSE는 예측 오차의 크기를 측정하며, 값이 작을수록 예측 성능이 좋다고 해석됩니다. MSE는 아웃라이어에 민감할 수 있습니다.

RMSE (Root Mean Squared Error):
RMSE는 MSE의 제곱근 값으로, 예측 오차의 평균 크기를 나타내는 지표입니다. MSE의 문제점 중 하나인 오차의 단위 문제를 해결하기 위해 사용됩니다. RMSE 역시 값이 작을수록 예측 성능이 좋다고 해석됩니다. RMSE 역시 아웃라이어에 민감할 수 있습니다.

MAE (Mean Absolute Error):
MAE는 실제 값과 예측 값 사이의 평균 절대 오차를 나타내는 지표입니다. 각 예측 값과 실제 값의 차이를 절댓값으로 계산한 후, 이를 모든 데이터 포인트에 대해 평균을 구합니다. MAE는 예측 오차의 크기를 측정하며, 값이 작을수록 예측 성능이 좋다고 해석됩니다. MAE는 아웃라이어에 상대적으로 덜 민감합니다.

R2 (Coefficient of Determination):
R2는 회귀 모델이 종속 변수의 변동을 얼마나 잘 설명하는지를 나타내는 지표입니다. R2 값은 0과 1 사이의 값을 가지며, 1에 가까울수록 모델이 종속 변수의 변동을 잘 설명한다는 것을 의미합니다. R2는 예측 값과 평균값 간의 차이를 종속 변수의 분산으로 나눈 비율로 계산됩니다. R2 값이 음수인 경우 모델이 평균보다 성능이 나쁘다는 의미입니다.

이러한 지표들은 회귀 모델의 예측 성능을 평가하고 모델 간의 비교를 돕는 데에 사용됩니다. 

 

위 지표를 통해 모델의 성능을 파악하고 남은 데이터(테스트 데이터)를 이용해 예측을 해본다.

모델과 데이터 샘플 중 남은 데이터를 입력을 받아 예측을 통해서 다음과 같은 결과를 얻을 수 있다.

왼쪽 값은 예측값이고 MEDV는 실제 데이터 값이다. 값의 차이를 통해서 우리의 예측값의 오차를 확인할 수 있다.

 

아래는 오렌지3를 이용해서 만든 모델이다. 아래 첨부파일을 통해서 모델을 다운로드 받을 수 있다.

Linear_Regression_boston_housing.ows
0.01MB