오늘은 딥러닝 실습시 가장 많이 사용하는 사이킷런에서 제공하는 보스턴 집값을 이용하여 예측하는 모델을 만들어 보도록 하겠습니다. 지도학습의 실습과정은 다음과 같습니다. 1. 과거의 데이터를 준비합니다.(과거의 데이터에서 원인과 결과 즉 독립변수와 종속변수를 찾아 냅니다.) 2. 모델의 구조를 만듭니다. (레모네이드 판매량이 온도에 따라 달라지는데 이때 온도를 독립변수, 판매량을 종속변수로 하는 모델을 만들어 봅니다.) 3. 데이터로 모델을 학습합니다. 4. 모델을 이용합니다. https://colab.research.google.com/ 실습은 코랩을 이용해서 진행하겠습니다.
키값을 확인해 보면 위와 같이 data, target, feature_names,DESCR,filename,data_module 가 있습니다. 키값의 의미 data : 학습해야 할 feed용 데이터 target : 라벨로 각 데이터의 결정값 feature_names : 데이터셋의 column 명 DESCR : 데이터셋에 대한 설명 filename : dataset을 다운로드 받는 경로
columns 명을 확인 해 보면 위와 같이 13개의 특성이 있는 것을 확인 할 수 있습니다.
DESCR을 확인해 보면 각 특성에 대한 설명을 확인해 볼 수가 있습니다. CRIM : 자치시별 1인당 범죄율 ZN : 25000 평방피트를 초과하는 거주지역의 비율 INDUS : 비소매 상업지역이 점유하고 있는 토지의 비율 CHAS : Charles 강의 경계에 위치한 경우 1 , 아니면 0 NOX : 10 ppm 당 농축 일산화 질소 RM : 주택 1가구당 평균 방의 개수 AGE : 1940년 이전에 건축된 소유주택의 비율 DIS : 5개의 보스턴 직업센터까지의 접근성 지수 RAD : 방사형 도로까지의 접근성 지수 TAX : 10000달러당 재산세율 PTRATO : 자치시별 학생/교사비율 B : Bk는 자치시별 흑인의 비율 LSTAT : 모집단의 하위계측의 비율 MEDV : 본인 소유의 주택가격(중앙값)(단위:$1000) 이때 집값을 예측하는 모델을 만들어 봅시다.
여기서 X = tf.keras.layers.Input(shape=[13]) 의 의미는 독립변수의 갯수가 13개 이므로 13이며 Y = tf.keras.layers.Dense(1)(X) 의 의미는 종속변수의 갯수가 1개 결과값을 출력하는 것을 의미합니다. model.compile(loss='mse') 는 손실함수를 평균제곱오차(mean Squared Error)를 사용하겠다는 것을 의미합니다. 이렇게 만든 모델은 다음과 같은 형태의 모델이 만들어 집니다. 이것을 수식으로 표현하면 y = w1x1 + w2x2 + .... + w13x13 + b 와 같습니다. 여기서
이 부분이 이러한 수식을 만드는 것이고
이 부분이 w와 b를 찾는 부분입니다. 이러한 부분이 뉴런 하나를 만드는 것이고 이렇게 만드는 이론을 퍼셉트론(Perceptron) 이라고 합니다. w는 가중치(weight) b는 편향(bias)라고 부릅니다.
여기서 epochs=1000의 의미는 1000번 학습하겠다는 의미이며 verbose=0 은 학습중 아무것도 출력하지 않는 것을 의미합니다. verbose = 0 : 아무것도 출력하지 않는 상태 verbose = 1 : 훈련의 진행도를 보여주는 진행막대 verbose = 2 : 미니 배치마다 손실정보를 출력
이 의미는 w1~w13 까지의 값과 b의 값이 훈련을 통해 계산이 된 값을 의미합니다. 위의 보스턴 집값은 회귀를 이용해서 숫자를 예측하는 모델을 만들어 보았습니다. 이렇게 만들어진 모델이 약간의 오차가 있는 것을 확인 할 수 있는데요~ 이번 시간에는 이렇게 회귀모델을 만들어 보면서 개념을 이해 하는 것에 의의를 두시면 될것 같습니다. <참고> 생활코딩 - https://opentutorials.org/course/4570/28974 |