딥러닝(LSTM)으로 아파트 지수 예측하기 – 2) LSTM 실험하기

LSTM 으로 아파트 지수 예측하기 실험 1부에 이어서 계속합니다.

데이터에서 빈 값 제거하기

이제 dropna 함수로 빈 값(missing value)을 제거하고 전체 데이터를 훈련 데이터와 테스트 데이터로 분리합니다. 각각의 훈련 데이터와 테스트 데이터는 속성과 타겟 열으로 분리합니다. drop함수는 특정 열이나 칼럼을 제거하는 기능을 합니다 (링크)

X_train = train_sc_df.dropna().drop(‘trade_price_idx_value’, axis=1)
y_train = train_sc_df.dropna()[[‘trade_price_idx_value’]]

X_test = test_sc_df.dropna().drop(‘trade_price_idx_value’, axis=1)
y_test = test_sc_df.dropna()[[‘trade_price_idx_value’]]

X_train.head()

dropna로 빈 값을 제거하고 난 후의 훈련 데이터

훈련/테스트 데이터 생성하기

이제 dataframe 타입이었던 훈련/테스트 데이터들을 values 를 사용하여 dataframe의 numpy 표현형만 가져옵니다. sklearn을 비롯해서 기계학습 패키지들은 일반적으로 훈련/테스트 데이터로 numpy의 ndarray 타입을 지원합니다. values를 사용하기 전의 X_train은 DataFrame 타입이였지만 values를 사용한 후 numpy.ndarray로 변경된 것을 확인할 수 있습니다.

훈련데이터 X_train은 125개의 데이터 개수와 12개의 slot을 가진것을 확인 할 수 있습니다. 훈련값 y_train은 역시 125개의 데이터 개수와 1개의 target 값을 가지고 있습니다. 여기서 최종 훈련 데이터를 생성하기 위해서는 keras의 LSTM에서 필요로 하는 3차원 데이터로 변환을 시켜줘야 합니다. 최종 데이터의 shape이 (size, timestamp, feature) 형태로 나타나야 합니다. 이번 실험의 경우 속성이 아파트 지수 한가지 이기 때문에 1을 입력하지만 n 개의 속성을 사용할 경우 feature 순서에 n의 값을 입력하면 됩니다.

reshape 완료

LSTM 실험하기

LSTM은 기존에 사용하던 Scikit-learn 패키지에서는 제공하지 않기 때문에 케라스(keras)를 사용하였습니다. 케라스는 파이썬으로 작성된 오픈 소스 라이브러리입니다. 텐서플로, Theano 등 유명한 딥러닝 알고리즘 위에서 수행할 수 있으며 딥 신경망 알고리즘들의 빠른 실험을 가능케 하도록 설계되었습니다.

LSTM 모델 생성하기

케라스에서는 층(layer)을 조합하여 모델(model)을 만듭니다. 모델은 (일반적으로) 층의 그래프입니다. 그 중에서도 가장 간단한 형태의 모델은 레이어들을 선형으로 쌓는 Sequential Model 입니다. 케라스에서는 add 함수를 사용하여 층을 쌓습니다. LSTM 레이어와 Dense 레이어 하나를 추가합니다. Dense는 완전 연결 레이어(fully connected layer)으로 기본적인 레이어 중 하나입니다. 예측하고자 하는 target의 개수가 하나이므로 Dense(1)을 출력으로 사용합니다.

전체 모델은 다음과 같은 2개의 레이어로 구성되었습니다.

  • 20 메모리 셀을 가진 LSTM 레이어 하나
  • Dense 레이어 하나 (output)

케라스는 input이 어떤 모양으로 들어올지에 대한 정보가 필요합니다. 그 정보를 알려주는 것이 input_shape 입니다. 데이터 개수(size)는 중요하지 않기 때문에 timestep과 feature만 알려주면 됩니다. 모델을 구성한 후 compile 메서드를 호출하여 학습 과정을 설정합니다.

compile에는 중요한 3가지 변수가 있습니다.

  • optimizer : 훈련 과정을 설정합니다.
  • loss : 최적화 과정에서 최소화될 손실 함수(loss function)를 설정합니다.
  • metrics : 훈련을 모니터링하기 위해 사용됩니다.

일반적으로 사용하는 adam을 optimizer로 사용하고 연속된 값 예측이라 mean_squared_error를 loss 값으로 설정합니다. 마지막으로 summary 메소드로 모델 구성 내용을 확인합니다.

모델 훈련하기

케라스에서는 fit 메소드를 통해서 훈련을 합니다. fit 메소드에서 첫번째 인자는 훈련데이터이고 두번째 인자는 지도 학습에서 레이블 데이터입니다.

fit 메소드에서 중요한 파라미터 설명입니다.

  • epochs : 훈련은 에포크(epoch)로 구성됩니다. 한 에포크는 전체 입력 데이터를 한번 순회하는 것입니다(작은 배치로 나누어 수행됩니다).

  • batch_size : numpy 데이터를 전달하면 모델은 데이터를 작은 배치로 나누고 훈련 과정에서 이 배치를 순회합니다. 이 정수 값은 배치의 크기를 지정합니다. 전체 샘플 개수가 배치 크기로 나누어 떨어지지 않으면 마지막 배치의 크기는 더 작을 수 있습니다.

  • validation_data(x_val, y_val) = 검증 데이터(validation data)를 사용합니다. 검증 데이터를 사용하면 각 에포크마다 검증 데이터의 정확도도 함께 출력되는데, 이 정확도는 훈련이 잘 되고 있는지를 보여줄 뿐이며 실제로 모델이 검증 데이터를 학습하지는 않습니다. 검증 데이터의 loss가 낮아지다가 높아지기 시작하면 이는 과적합(overfitting)의 신호입니다.

  • validation_split : validation_data 대신 사용할 수 있습니다. 검증 데이터를 사용하는 것은 동일하지만, 별도로 존재하는 검증 데이터를 주는 것이 아니라 X_train과 y_train에서 일정 비율을 분리하여 이를 검증 데이터로 사용합니다. 역시나 훈련 자체에는 반영되지 않고 훈련 과정을 지켜보기 위한 용도로 사용됩니다. 사용 예시 : validation_split=0.2

  • verbose : 훈련의 진행과정을 보여줍니다. 0일 경우 아무것도 출력하지 않고, 1일 경우 훈련의 진행도를 보여주는 진행 막대를 보여줍니다. 2일 경우 미니 배치마다 손실 정보를 출력합니다.

batch_size 와 epochs

모델을 훈련하다는 것은 훈련용 데이터 셋을 이용하여 최적화 과정을 통해 모델의 weight를 찾는 것입니다. 데이터가 많을 경우 전체 데이터를 메모리에 올리기 힘들 뿐만 아니라, 너무 큰 데이터를 한번에 학습시키면 가장 작은 cost값으로 수렴하기 힘들다는 문제가 있습니다. 그렇기 때문에 큰 덩어리를 일정크기의 작은 덩어리로 잘라서 모델에 넣어서 학습시키는데, 이 작은 덩어리의 크기를 batch size라고 합니다.

Epoch는 전체 데이터 셋에 대해 한번의 학습 과정이 완료되었다는 의미로 epochs=100이면 전체 데이터를 100번 사용해서 학습을 거치는 것이다. 원래 epoch는 인공 신경망에서 전체 데이터셋에 대해 forward pass/backward pass 과정을 거친 것을 의미한다. 즉 전체 데이터 셋에 대해 한 번 학습을 완료한 상태이다. ( epoch : one epoch is when an entire dataset is passed forward and backward through the neural network only Once)

이번 실험에서는 epochs를 100, batch_size를 30으로 진행하였습니다. 그리고 debug 정보는 출력하되 진행 정보만 확인할 수 있도록 1을 선택했습니다. 아래는 훈련 결과 화면으로 epoch 가 진행될때마다 loss 값이 줄어드는 것을 확인할 수 있습니다.

evaluate 메소드를 사용하여 compile에서 사용했던 metric, mse 값이 얼마나 나오는지 확인해보았습니다. mse 값은 0.07이 나왔습니다.

test 데이터 값이 0.95에서 1.72까지 나오는 것을 감안하면 그렇게 나쁜 결과가 아닌 것 같긴 합니다.

그렇지만 좀 더 결과를 시각적으로 확인하기 위해 실제 값과 예측 값을 plot으로 뿌려보기로 했습니다.

원래 값과 예측 값이 일치하면 직선에 가깝게 분포가 되는데 결과는 그리 만족스럽지 않은 것 같습니다. 실제 강남 부동산 지수보다 예측 부동산 지수가 전반적으로 낮게 나오고 있습니다. 그 원인은 아마도 훈련 데이터 들이 대부분 부동산 침체기 시기 데이터를 사용 되었고 최근 데이터인 테스트 데이터는 훈련 데이터에는 없던 높은 지수가 많아서 인 것으로 생각됩니다. 훈련 데이터를 최근 데이터까지 포함해서 좀더 범위를 높이면 성능은 좀 더 좋아질 것이라 생각됩니다. 그렇지만 부동산 지수를 예측하는 것이 목표가 아니라서 일단은 여기서 멈추겠습니다.

이제 본격적으로 부동산 실거래가 데이터를 사용해서 LSTM으로 예측을 하는 실험을 이어서 해보겠습니다 : )

포스팅 참고 링크

keras documentation :
https://keras.io/layers/recurrent/#lstm
https://keras.io/models/sequential/

https://keras.io/getting-started/sequential-model-guide/
https://www.tensorflow.org/guide/keras/overview?hl=ko
https://wikidocs.net/32105

https://blog.naver.com/qbxlvnf11/221449595336

https://keras.io/getting-started/sequential-model-guide

s://pozalabs.github.io/lstm/
http://blog.naver.com/PostView.nhn?blogId=qbxlvnf11&logNo=221449297033&parentCategoryNo=&categoryNo=52&viewDate=&isShowPopularPosts=false&from=postView

LSTM 이론 설명 :
https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr

RNN 설명 (동영상) :

사회초년생 뽀시래기들을 위한 주택청약 2탄

주택청약에 관한 이야기를 더 이어나갈게요!

청약통장을 만들었으니 이제 어디에다가 청약을 해야 될지 알아야겠죠? 국민주택과 민영주택에 대한 이야기를 해볼게요.

.

.

국민주택은 LH공사와 도시공사와 같은 공공기관의 주관하에 건설되는 건축을 국민주택이라고 합니다.

국민주택을 이용하고자 하는 분들은 소득이 낮은 경우 에 해당됩니다.

국가유공자와 장애인 신혼부부, 사회초년생 등 정책적으로 도움이 필요한 사회계층에 도움을 주려는 국가적인 제도라고 생각하시면 됩니다.

사회초년생도 이에 해당하는데 혜택이 있으면 받아야 하겠죠?

공급대상의 조건들을 미리 알아봅시다.

국민주택의 대상은 무주택으로 되어있는 세대 구성원이어야 하며, 소득과 자산 기준이 충족되어야지만 가능합니다.

전용면적은 85㎡ (25평) 이하의 공간을 제공하며, 분양 가상한 금액이 하로 분양가를 책정하여 합리적인 가격대로 분양을 진행하는 국가적 사업이라고 생각해 주시면 편할 것입니다.

전용면적 60㎡ (18평) 의 경우에는 가구소득과 부동산자산, 승용차 등의 여부에 따라서 추가로 제한이 될 수 있다는 것도 알아주셔야 합니다.


또한, 청약할 때 원하는 지역이 아닌 그 지역에 거주하는 조건을 충족해야지만 가능 합니다

.

국민주택 공공 분양의 청약 자격은 1. 해당지역 거주자 2.만 19세 이상인 성인 3.무주택 세대구성원 이어야 합니다.

청약통장을 보유하고 24개월 이상 납입 횟수 24회 이상 넣는 것이 가장 유리하며, 수도권 지역에서는 가입 1년 경과, 12회 납입 시 1순위 확보가 가능하고, 수도권 외에서는 가입 6개월 경과, 6회 납입 시 1순위 확보를 하실 수 있습니다.

청약 기간과 횟수가 다르다면 1순위 내 경쟁 시 당첨자 결정 방법을 알려드릴게요.

먼저 1순위 자격을 받기 위해서는 매월 약정일에 월납 입금을 해당 지역에서 정한 최소 납입 횟수 이상 납입하는 게 좋습니다. 3년 이상 기간 동안 무주택가구 구성원으로서 저축총액(10만 원/1회)이 많은 분을 기준으로 전용면적 40㎡(12평) 초과 시 저축총액이 많은 분이 40㎡(12평) 이하 시 납입 횟수가 많은 분을 기준으로 합니다.

청약 절차는 입주자 모집공고 – 청약 – 당첨자발표 – 당첨자 서류 제출 – 계약 체결 – 입주 순으로 이루어집니다.

.

공공분양 일반공급 60㎡(18평) 이하의 주택이거나 생애 최초(특별공급)일때에는 주택자산 및 소득기준을 기준 부동산 2억1550만원 이하 자동차가액 2799만원이하 일때 해당됩니다.

자세한 소득기준액은 가구당 월 평균소득 100% 생애최초공급, 일반공급 60㎡(18평) 이하, 배우자가 소득이 없는 신혼부부 일때 기준 소득액을 넘지 않아야 합니다.

3인 – 5,401,814 원
4인 – 6,165,202 원
5인 – 6,699,865 원

가구당 월 평균소득 120% 노부모부양, 다자녀가구, 배우자가 소득이 있는 신혼부부 일때 기준 소득액을 넘지 않아야 합니다.

3인 – 6,482,177 원
4인 – 7,398,242 원
5인 – 8,039,838 원

공공분양은 일반공급(20%)와 특별 공급 (80%)로 나누어져 있습니다.

특별공급 (80%)중 20%는 사회 초년생을 위한 생애 최초주택구입자 혜택이 있습니다.

  • 생애최초로 주택을 구입하는 무주택세대구성원 (세대에 속한 모든 자가 과거 주택소유사실이 없을 것)
  • 입주자저축 1순위이고, 저축액이 선납금 포함 600만원 이상인 자
  • 혼인중이거나 자녀(동일한 주민등록등본상 미혼자녀에 한함)가 있는 자
  • 근로자 또는 자영업자(과거 1년내 소득세를 납부한 자 포함)로서 5년 이상 소득세를 납부한 자
  • 부동산(2억1550만 원 이하), 자동차(차량 최고가액이 2799만 원 이하)의 요건이 충족되어야 합니다.

공공임대주택 종류는 5년.10년 공공임대주택과 분납 임대주택, 50년 공공임대주택으로 구성되어 있습니다.

먼저 5년 10년 공공임대주택은 임대기간이 종류 후 입주자에게 우선 분양전환하는 주택입니다.

분양 전환가 책정방법은 5년형은 건설원가 +시세에 따른 감정가 / 2 = 분양전환가로 전환됩니다. 시세에 따른 감정가는 평균 시세의 80%로 책정됩니다.

10년임대형의 분양전환가는 5년형과 다르게 시세에따른 감정가나 자율로 결정되며, 자율은 감정가를 초과할 수 없습니다. 요즘 10년 임대형이 이슈가 많은데요?! 성남시에서 입주할때와 10년 지난후 계발된 후 분양받을때의 집값의 비율이 너무나 높아져 입주자들의 불만이 높아져 논란이 되고 있습니다.

분납 임대주택 입주자가 입주시까지 집값의 일부만을 초기 지분금(30%)으로 납부하고, 임대기간 10년 동안
단계적으로 잔여분납금을 모두 납부해서 분양하는 저택입니다.

50년 공공임대주택 영구임대주택을 대체할 목적으로 기금을 지원받아 한국토지주택공사 또는 지자체가 건설, 공급 하는 임대주택으로 분양전환되지 않습니다.

민영주택이란?

국민주택기금의 지원 없이 민간 건설업자가 건설하는 주택과 국가·지방자치단체 등이 국민주택기금의 지원 없이 공급하는 전용면적 85m²(25.7평)을 초과하는 주택을 말합니다.

기존에는 청약에 당첨되면 소유권 이전 등기를 할 때부터 유주택자로 분류되었지만 이제는 분양권과 입주권을 처음 공급받아 공급계약을 체결하는 날이나 해당 분양권 등을 매수해 매매 잔금을 완납하는 날부터 주택을 소유한 것으로 간주합니다.

청약자격은 해당지역 거주지역이어야되며, 만19세 이상, 지역별 예치금 요건에 더해 청약통장 가입기간이 6개월 이상 이어야 되며,

  • 청약과열지구) 가입기간이 2년이 경과한 분
  • 수도권) 가입 1년 경과한 분(필요한 경우 시 도지사가 24개월까지 연장 가능)
  • 수도권외) 가입 6개월 경과한 분(필요의 경우 시 도지사가 12개월까지 연장 가능) 합니다.

국민주택과 다르게 기간과 예치금액 중요도가 다릅니다.

위 예치금액을 봐주세요.

자세한 내용을 보려면  로보리포트로 GOGO~~!

https://land.roboreport.co.kr/


– iOS 는 아래 URL
https://itunes.apple.com/kr/app//id1437603027?mt=8


– Android 는 아래 URL
http://bitly.kr/7R8x8

다음편도 기대해 주세요!

View this post on Instagram

사회초년생 뽀시래기들을 위한 주택청약 2탄 _ 2탄으로 다시 돌아왔어. 청약통장에대해서 말했으니 이제 어디에 청약을 넣어야 할지? 가르쳐 줄게. 국민주택 & 민영주택 뭐가 뭔지 헷갈리겠지만 한번 읽어봐! 둘이 달라 달라! . 국민주택의 공공분양은 25평이하의 주택을 저렴하게 살수있고, 공공임대는 5,10년 임대후 분양으로 전환할 수 있는 주택이야 . (다른 임대주택의 종류도 많아)(대표적인 것만) 국민주택은 청약통장의 납입횟수와 연체여부가 중요해! 민영주택은 국민주택보다 조건이 까다롭진 않지만 통장 가입기간과 예치금이 중요해! 민간업체에서 해서인지 국민주택보다는 비싼편이야. 다들 알지? 자이 래미안 푸르지오 롯데캐슬 브랜드 주택들이 이에 포함돼. 열심히 돈 모아서 어디에 투자할지 조금은 도움이 되었길 바래! 우리도 곧 내 집을 갖게 될거야! 화이팅! _ 갈땐 팔로워 꾹!! 하트 꾹!! ♥♥ _ 로보리포트도 많이많이 놀러와~!! (앱도있엉^^) https://land.roboreport.co.kr . – iOS 는 아래 URL이구. https://itunes.apple.com/kr/app//id1437603027?mt=8 – Android 는 아래 URL이야. http://bitly.kr/7R8x8 _ #로보리포트 #부동산인공지능 #부동산기계학습 #주택청약 #국민주택 #민영주택 #공공분양 #공공임대 #민영분양 #주택청약통장 #청약 #주택청약통장 #꿀팁 #재태크

A post shared by 로보리포트 (@land_roboreport_) on

사회 초년생 뽀시래기들을 위한 주택청약 1탄

다들 궁금해하는 주택청약에 관해 이야기해볼게요!  

내 집 마련은 모든 사회초년생 뽀시래기들의 로망이죠!

하지만 내 집 마련을 위한 방법은 돈으로 사는 방법만 있는 게 아니에요.

내 집을 분양받고 싶은 뽀시래기들은 주택청약종합저축 통장에 어서 가입하는게 좋습니다.

주택청약종합저축은 아파트나 주택을 살 수 있는일종의 티켓이라고 생각하면 되요.

내가 가고 싶은 곳에 오랫동안 돈을 저금해 경재력 있는 티켓을 가지고 청약을 하는 거죠!!

혜택은 국민주택, 민영주택을 모두 합쳐서 청약을 할 수 있는 입주자저축이고, 금리는 1.0%~1.8%로 높은 편이며, 소득공제 혜택이 있어서 오랜 기간 차곡차곡 돈을 모을수록 이득입니다

그런데 어디에서 가입해?

국민, 기업, 농협, 신한, 우리, 하나, 대구, 부산, 경남 총 9개의 은행에서 누구나 가입할 수 있고, 위 은행에서 단 한 곳에서만 1계좌로 가입 할 수 있어요. (중복은 불가능해요.)

 

나는 바쁜 몸이라구! 은행까지 가야돼?

인터넷 뱅킹을 이용해서 집에서도 편하게 개설할 수 있어요.

손 까닥하면 통장이 뚝딱!! 청약 신청할 때에는 아파트 실평수에 따라 청약 통장에 최소한으로 예치해야 하는 금액도 달라질 수 있어 관련 사항을 꼼꼼히 살펴보고 작성해야 되며, 꼭 자동이체를 신청하길 바랍니다. 

오랜 기간 적금을 넣는 것도 중요하지만, 연체 유무가 당첨 확률을 달리하기 때문에 꼭 연체하는 일은 없도록 해야되겠죠!!

 얼마씩 넣지?

2만 원~50만 원까지 넣을 수 있지만  10만원까지만 납입금액으로 인정돼요.

그래서 10만 원씩 꾸준히 넣는 게 여러 주택 유형에 청약 넣기 유리해요!! 

자세한 내용을 보려면  로보리포트로 GOGO~~!

https://land.roboreport.co.kr/


– iOS 는 아래 URL
https://itunes.apple.com/kr/app//id1437603027?mt=8


– Android 는 아래 URL
http://bitly.kr/7R8x8

인스타그램 land_roboreport_

다음편도 기대해 주세요!

부동산 챗봇 특허 등록 완료

안녕하세요. 로보리포트입니다. 간만에 팀소식 전달드립니다. 작년 8월에 출원했던 부동산 챗봇 특허가 심의 통과되어 드디어 특허증이 나왔습니다.

특허 발명의 명칭은 챗봇을 이용한 부동산 거래 비서 서비스 장치 및 방법입니다. 발명의 주요 내용으로 챗봇으로 부동산 매물 정보를 받고 입력받은 내용을 기계학습을 사용하여 추천하는 일련의 방법들이 포함되어 있습니다.

이번 특허는 로보리포트 서비스 이름으로 나온 첫번째 특허라 감회가 새로웠습니다. 부동산 기계학습 솔루션 관련하여 출원 했던 특허들도 어서 등록이 되었으면 좋겠습니다 : )

기존 소상공인 상권분석 서비스

기존의 상권분석 서비스를 소개하는 포스팅입니다. 이번 포스팅에는 정부 기관에서 제공하는 서비스들을 소개하겠습니다. 예비 창업자들이 가장 궁금해 하는 것들이 ‘근처에 경쟁점은 몇 개나 있을까?’ ‘창업하면 얼마나 벌 수 있을까’ ‘이 자리는 과거에 어떤 업종이, 얼마동안, 얼마의 매출을 올리며 영업해 왔을까’ 하는 질문들이 라고 합니다. 이 중 몇가지는 아래 기존 서비스에서 대답을 얻을 수 있고 또 몇가지는 로보리포트에서 준비하는 서비스에게 대답을 하려고 합니다 : )

우리마을 가게

사이트 주소 : https://golmok.seoul.go.kr

서울시에서 제공하는 상권분석 서비스입니다. 최근 3년 시계열을 관측하여 폐업 유사패턴 공간에서 개별기업의 생존확률을 추정하여 만든 창업위험도 지수를 제공하고 있습니다. 그 외 서울 상권 분석 서비스도 제공하고 있습니다. 다양한 데이터를 제공하는 좋은 서비스이나 서울시에서 만들어서 서울시 외의 정보는 제공하지 않습니다.

창업신호등 서비스

상권정보 서비스 (소상공인시장진흥공단)

웹사이트주소 : http://sg.sbiz.or.kr/main.sg#/main

소상공인시장 진흥공단에서 제공하는 상권정보 서비스는 창업기상도, 상권평가 등급, 점포이력 분석 등 다양한 정보를 제공하고 있습니다. 예비 창업자 중에서 이 자리는 과거에 어떤 업종이, 얼마동안 있었는지 궁금해하는 사람들은 점포이력분석에서 과거 점포 내역을 확인할 수 있습니다.

상권분석 서비스 메인 화면

창업기상도는 NICE지니데이타에서 분석한 결과를 그대로 가져와서 보여주고 있습니다. 7개의 광역시에서 커피, 치킨, 한식 세 업종의 창업기상도를 제공하고 있습니다.

 창업기상도에 영향을 끼치는 요소들이 %로 나오는 것이 흥미롭습니다. 아마 통계 모델을 사용해서 분석 한 것 같습니다.


*  지역/업종 매출 영향변수는 해당 지역/업종 내에서 매출이 높은 지역에서 나타나는 공통특성을 뽑아 변수별로 중요도를 산정한 자료입니다.
* 순위가 높은 변수일수록 매출에 미치는 영향력이 큰 것으로 이해할 수 있으므로 상권조사 항목으로 활용할 수 있고, 집중 마케팅 대상으로 선정할 수 있습니다.

그 외 창업에 들어가는 점포의 비용 및 투자비용을 입력하면 3년이내 초기 투자금을 회수하려면 얼마를 벌어야 하는지에 대한 세부 정보도 제공하고 있습니다.

3년 내 초기 투자금을 회수하려면 월평균 목표 매출이 얼마나 나와야 하며 목표 고객 수는 어느정도 되는지 확인을 할 수 있습니다.

서울 내에서 창업을 한다면 위 두 사이트는 필수라는 생각이 들정도로 좋은 정보들을 제공을 하고 있습니다. 다만 상권 예측에 있어서는 아쉬운 점이 조금은 보였는데요. 이부분은 로보리포트 서비스의 차기 업데이트에 포함해서 진행을 해볼까 합니다. 그리고 정부에서 제공하는 분석 사이트외에 유료로 제공하는 상권 분석 서비스도 시간이 되면 한번 정리해보도록 하겠습니다.

관련 포스팅

소상공인-폐업에-따른-총-사회적-비용

평균 창업 비용과 창업 기간

부동산 인공지능 분석 서비스, 로보리포트

2019년 8월 20일 – 실거래가 및 경매 알림 서비스 오픈

안녕하세요. 로보리포트입니다.

로보리포트 어플리케이션 및 웹서비스에  실거래가 및 경매 알림 서비스가 오픈되었습니다.

관심있는 매물(아파트, 연립다세대, 오피스텔) 및 지역의 실거래가 받기 버튼을 클릭을 하면

회원 정보에 있는 이메일로 하루에 한번 (저녁 8시) 실거래가 알림을 받을 수 있습니다.

지도에서 지역 아이콘을 클릭하면 지역 상세 보기로 들어갑니다.

실거래가 탭에서 지역신규 실거래가 알림받기를 하면 선택한 지역의 실거래가가 업데이트되면 다음날 이메일로 알려드려요.

지역 실거래가뿐만 아니라 지역내의 새로운 경매 알림 받기도 설정할 수 있습니다.

알림을 받고 싶은 지역 상세 페이지의 경매 탭으로 들어가서 아래의 지역 신규 경매 버튼을 눌러주세요.

지역 뿐만이 아니라 개별 아파트, 연립다세대, 오피스텔에 대한 실거래가 알림도 가능합니다.

아파트 세부 정보 페이지로 들어가서 실거래가 알림버튼을 눌러주세요.

이렇게 설정한 알림 설정을 보고 싶다면 메인화면의 알림아이콘을 클릭하면 아래와 같이 설정된 알림 아이콘을 확인할 수 있습니다.

실거래가 알림을 삭제하고 싶으면 옆의 종 아이콘을 누르면 리스트에서 삭제되면서 해당 매물 실거래가 알림이 해제됩니다.

알림을 받을 이메일 설정은 맨오른쪽 위의 설정 버튼을 눌러주세요.

개인 설정 페이지 -> 내 정보 보기에서 회원 가입시 입력한 이메일 확인 및 수정이 가능합니다.

그럼 로보리포트의 새로운 실거래가/경매 알림 서비스를 사용해보시고 많은 피드백도 부탁드립니다!

이어서 매물/경매 조건별 알람 설정등의 업데이트가 예정되어 있습니다.

감사합니다.

로보리포트 사이트 바로가기

딥러닝(LSTM)으로 아파트 지수 예측하기 – 1) 훈련 데이터 생성

이번 포스팅에서는 LSTM으로 아파트 지수 예측하기 실험을 하겠습니다.

LSTM은 RNN(Recurrent Neural Network) 알고리즘의 특별한 한 종류입니다. RNN은 글, 유전자, 손글씨, 음성 신호, 주가 등 배열(sequence 또는 시계열 데이터)의 형태를 갖는 데이터에서 패턴을 인식하는 인공 신경망입니다. LSTM은 기존 RNN을 개선한 모델로 긴 의존 기간(long-term dependency)을 필요로 하는 데이터를 학습하는데 효과적인 모델입니다. RNN과 LSTM에 대한 알고리즘에 대한 설명은 개별 포스팅을 작성해서 추후에 링크 걸어놓도록 하겠습니다.

이번 포스팅에서는 실험을 먼저 진행해 보겠습니다. LSTM 실험에는 시계열 데이터가 필요하기 때문에 연속된 부동산 매매 데이터가 필요합니다. 부동산 개별 실거래가는 매달에 맞춰 거래가 일어나지 않기 때문에 일단 한국감정원에서 배포하는 전국주택가격지수 중에서 강남구의 아파트 거래가격 지수를 사용하겠습니다. 부동산 개별 실거래가를 사용한 실험이나 다른 경제 지표와 같이 수행하는 실험은 이어서 포스팅하겠습니다.

실험에 사용한 전체 코드와 데이터는 여기서 다운로드 받을 수 있습니다. 실험은 google colab (설명)에서 진행했습니다.

실험 데이터 업로드 하기

패키지 import & 실험 데이터 파일 올리기

실험에 사용할 패키지들을 import합니다. 구글 colab에서 데이터 업로드를 하기 위해 google.colab 패키지의 upload 함수를 사용합니다. 아래와 같이 데이터 업로드가 정상적으로 완료되었습니다.

데이터 파일은 아래와 같이 날짜와 그 달의 강남구 아파트 매매 지수가 있는 간단한 형식으로 되어있습니다.

date,trade_price_idx_value
2006-01-01,74.200000000000003
2006-02-01,75.799999999999997
2006-03-01,78.099999999999994
2006-04-01,81.400000000000006
2006-05-01,83.599999999999994
2006-06-01,83.799999999999997
2006-07-01,83.599999999999994
2006-08-01,83.5

데이터 기본 format

df.info()로 데이터를 살펴봅니다. 기간은 2006년도에서 2019년도로 되어있지만 매달 한 건의 강남구 아파트 매매지수만 있다보니 데이터 개수는 생각보다 적습니다. 총 165개의 데이터가 있습니다.

훈련 데이터와 테스트 데이터 분리하기

plot으로 데이터 흐름을 살펴봅니다. 2014년도가 강남구 아파트 매매지수의 저점이였고 그 후 가파르게 상승하고 있습니다. 이제 데이터를 훈련 데이터, 테스트 데이터로 분리합니다. 2017년 1월 1일까지의 데이터를 훈련 데이터, 그 이후의 데이터를 테스트 데이터로 분리합니다.

그래프에서 train set과 test set을 색으로 표시하면 아래와 같습니다.


plot으로 표시된 train, test 데이터 셋

데이터 스케일링(Scaling)

마지막으로 MinMaxScaler 클래스를 사용하여 데이터를 스케일링 합니다. MinMaxScalar(X)는 데이터의 최대값이 1, 최소값이 0이 되도록 변환합니다. 이렇게 데이터의 scale을 맞추면 weight의 scale도 일관성 있게 나올 수 있습니다.

사용방법은 다음과 같습니다.

(1) 훈련 데이터의 분포 추정 : 훈련 데이터를 입력으로 하여 fit 메서드를 실행하여 분포 모수를 객체내에 저장
(2) 훈련 데이터의 변환 : 훈련 데이터를 입력으로 하여 transform 메서드를 실행하면 훈련 데이터를 변환
(3) 테스트 데이터의 변환: 테스트 데이터를 입력으로 하여 transform 메서드를 실행하여 테스트 데이터를 변환.

훈련 데이터는 (1)번과 (2)번 과정을 합쳐서 fit_transform 메서드를 사용하고 테스트 데이터는 transform 메서드를 사용하여 스케일링을 진행합니다.

정규화가 완료된 데이터들은 다시 pandas dataframe 데이터 타입으로 변환합니다. dataframe으로 타입을 변경하는 이유는 pandas는 시계열 자료에 대한 다양한 기능을 제공하여 LSTM에서 사용하는 window를 만들기 유용하기 때문입니다.

sliding window 구성하기

window는 LSTM을 훈련하기 위한 단위로 고정된 사이즈를 가집니다. window가 12개라면 과거 시간 데이터 12개를 사용해서 다음 시간 단위의 값을 예측하게 됩니다. 현재 실험 데이터의 경우 과거의 시간 단위 12개 부동산 지수들이 훈련 속성들이 되고 현재 시간의 부동산 지수가 target이 됩니다.

dataframe의 shift 연산을 사용하면 인덱스는 그대로 두고 데이터만 시간 단위로 이동할 수 있어 sliding window 타입의 데이터를 구성하기에 용이합니다. 예를 들어 shift(1)을 하면 바로 다음 시간 인덱스로 데이터가 이동하며 shift(-1)을 하면 바로 이전 시간 인덱스로 데이터가 이동합니다. 아래 예시를 보면서 자세히 설명해보겠습니다.

shift 사용하여 window 구성

shift(1)을 사용한 칼럼은 데이터 값이 다음 시간 인덱스로 한칸씩 이동한 것을 확인할 수 있습니다. 이렇게 구성된 데이터에서 dropna로 NaN값을 포함한 데이터를 제거하고 드디어 본격적인 실험에 들어갑니다. 생각보다 포스팅이 길어져서 여기서 한번 자르고 다음 포스팅으로 이어 쓰겠습니다.

참고:

LSTM 실험 (Keras) :
https://3months.tistory.com/168

minmax:
https://datascienceschool.net/view-notebook/f43be7d6515b48c0beb909826993c856/

신경망 이론 이해하기 – 1 ) perceptron

로보리포트 서비스에서는 부동산 가격 예측을 하기 위해 MLP (다층 신경망)을 사용합니다. 대표적인 기계 학습 알고리즘이라 생각해서 그동안 따로 설명을 하지 않았지만 신경망 알고리즘이 무엇이냐는 질문을 많이 받아서 최대한 쉽게 설명을 해볼까 합니다.

신경세포의 구조

신경망 알고리즘은 실제로 신경세포(뉴런, neuron)의 모양과 작동 방식을 따라 만들어졌습니다. 뉴런이 두개 이상 모이면 신경이 되며, 모든 뉴런은 수상돌기, 신경세포체, 축색돌기로 구성되어 있습니다. 뉴런의 구조는 아래 그림을 확인해주세요.

뉴런의 기본 기능은 자극을 받았을 경우 전기를 발생시켜 다른 세포에 정보를 전달하는 것으로 이렇게 발생하는 전기 신호를 활동전위(action potential)이라고 합니다.

뉴런에서 수상돌기로 입력받은 신호들의 강도의 합이 어느 설정치(threshold, 역치 값) 이상이면 축색돌기로 신호를 전달하고 이하면 전달(출력)하지 않습니다. 이렇게 전달된 축색돌기의 신호는 시냅스로 이어진 다른 뉴런들에게 전달되게 됩니다.

Perceptron

Perceptron은 위에 설명한 neuron의 구조를 그대로 본따서 만들어졌습니다.

neuron이 수상돌기에서 입력을 받는 부분은 perceptron에서는 X 값으로 표현되고, neuron의 세포체의 가중합은 X의 각 유닛과 연결된 연결 가중치의 곱의 합으로 표현되고, 마지막으로 임계치를 넘으면 신호를 전달하는 부분은 활성화 함수라고 하는 함수에 의하여 출력 값을 얻도록 표현되었습니다. (아래 표 참조)

 neuronperceptron
입력수상돌기에 들어온 입력들X
연결수상돌기로 입력받은 신호들의 강도의 합X의 각 유닛과 연결된 연결 가중치의 곱의 합
출력가중합이 threshold를 넘으면 축색으로 출력가중합을 활성화 함수에 입력하여 출력 값(a) 출력

그럼 perceptron의 실제 작동 방식을 확인해보겠습니다.

  1. input A의 값들은 각 unit(a1, a2, a3 …) 의 각자의 가중치(w1, w2, w3 … ) 값에 곱해져서 더해집니다. (weighted sum)
  2. 1의 값에 bias가 더해집니다.
  3. 이렇게 더해진 값은 활성화 함수(activation function)의 input값이 되서 최종 출력 값이 나오게 됩니다.

아래는 perceptron의 예시입니다.

input으로 티셔츠 이미지의 각 픽셀의 값이 들어가고 최종적으로 티셔츠의 색이 밝은 색인지, 어두운 색인지 판결하는 perceptron이 있다고 해보겠습니다. X 값과 weight를 더해서 나온 식의 값이 -0.1을 넘으면 밝은 색 (+1)으로 아니면 어두운 색(-1)이라고 분류하고 있습니다. 여기서 weight는 각 연결의 강도를 의미합니다.

X의 양수의 값들이 더해졌으니 당연히 예시로 들어온 티셔츠는 밝은 색으로 분류가 됩니다.

기계학습으로 클래스 예측을 한다는 것은 간단하게 말하자면 인스턴스들의 클래스를 구분짓는 선(decision boundary) 을 찾는 것입니다. perceptron은 linear combination을 f(x)로 사용하기 때문에 linear binary classifier 입니다.

위와 같이 직선으로 클래스를 구분할 수 있는 데이터라면 문제가 없지만 클래스가 뒤섞여 있을 때도 직선인 decision boundary를 사용할 수 밖에 없다는 한계가 존재합니다.

이런 perceptron의 한계점을 극복하기 위해 MLP(다층 신경망)이 나오게 됩니다. 다음 포스팅에서는 신경망의 훈련과정을 시각적으로 표현해주는 웹 사이트 소개에 이어서 MLP 설명이 들어가겠습니다.

Reference

https://towardsdatascience.com/what-the-hell-is-perceptron-626217814f53

웹에서 간단하게 딥러닝 실습하기 : 구글 colab 사용방법

이제 본격적인 부동산 지수 딥러닝 실험하기 실습에 들어가기에 앞서 구글에서 제공하는 colab을 소개합니다. 정식 명칭은 Colaboratory 이며 구글에서의 소개말은 아래와 같습니다.

Colaboratory는 설치가 필요 없고 완전히 클라우드에서 실행되는 무료 Jupyter 노트북 환경입니다. Colaboratory를 사용하면 브라우저를 통해 무료로 코드를 작성 및 실행하고, 분석을 저장 및 공유하며, 강력한 컴퓨팅 리소스를 이용할 수 있습니다.

1. google Colaboratory 소개

기존에 개인이 딥러닝 실험을 하려면 클라우드 서버, gpu 구입, tensorflow 및 기타 패키지 설치 등등 여러가지 준비해야 할 사항들이 많았는데요. google colab에서는 이미 구글 클라우드에 tensorflow 등 기본 패키지들이 깔려있어서 그냥 웹을 열고 jupyter notebook 사용하듯이 사용하면 됩니다.

웹이다 보니 여러가지 제한 사항이 있기는 있습니다. 특히 GPU에서는 오랫동안 실행되는 백그라운드 계산은 도중에 중단될 수도 있습니다. 구글에서는 암호화폐 채굴에 Colaboratory를 사용하지 말라고 faq에 적어놓았습니다. 선의로 시작하는 프로그램이 악용되는 좋은 예. Colaboratory의 UI를 통해 지속적 또는 장기간 계산을 실행하고자 하는 사용자는 로컬 런타임을 사용하는 것이 좋다고 합니다.

즉 간단하게 웹에서 딥러닝 또는 기계학습을 실행하기에는 그럭저럭 괜찮다고 생각합니다. 그럼 사양을 확인해볼까요.

2. colab 사용하기


https://colab.research.google.com/ 

colab 메인 화면

colab 사이트로 들어가면 google 드라이, github, 기존 notebook 업로드 등 옵션을 선택할 수 있습니다. 어느정도 시간이 지나면 session이 끊길수 있기 때문에 google 드라이브 밑에 새 python3 노트를 실행해 봅니다.

jupyter와 비슷해서 별 문제없이 기존에 jupyter notebook을 사용했던 사람이면 무리없이 사용할 수 있습니다.

+코드를 눌러서 새 cell을 열고 colab의 성능을 확인해봅시다.

3. 기본 사양 확인하기

일단 !df -h 로 하드디스크를 확인해봅니다.

명령어 왼쪽 옆의 버튼을 누르면 실행이 됩니다. 사용자에게 55G가 배정되어 있고 그중 33기가가 지금 사용가능합니다. 실험을 하기에는 충분한 용량인 것 같습니다.

!cat /proc/meminfo 으로 사용할 수 있는 메모리를 체크해봅니다.

!cat /proc/cpuinfo 로 cpu 정보도 확인해봅니다. 듀얼코어 2.30GHz 입니다.

4. 딥러닝 관련 설정 확인하기

하지만 중요한건 cpu 뿐만이 아니라 GPU, TPU 까지 사용할 수 있다는 것입니다.

TPU는 Tensor Processing Unit의 약자로 구글에서 2016년 5월에 발표한 데이터 분석 및 딥러닝용 하드웨어입니다. 특정조건하에서는 GPU보다 10배나(?!) 빠르다고 합니다. 이번에 실험을 하면서 실제로 성능 차이를 느낄 수 있을지 확인해봐야겠습니다.

런타임-> 런타임유형변경을 클릭하면 아래와 같이 하드웨어 가속기를 선택을 할 수 있습니다. 간혹 사용자가 많으면 사용을 못할 수도 있지만 무료 서비스니까 이건 감안은 해야할 것 같습니다;

GPU로 변환하고 !nvidia-sim로 gpu정보를 확인해봅니다. cuda version은 10.0이군요.

마지막으로 기본적으로 설치되 어 있는 tensorflow 버전을 확인해보겠습니다.

import tensorflow as tf
print(tf.version)

최근에 2.0 버전이 나오긴 했는데 1.13.1 버전이네요. 그래도 왠만한 최근 코드들은 다 돌려볼수 있을 듯 합니다. 그리고 본인이 원하는 tensorflow 버전을 직접 설치해서 사용 가능합니다. (링크 참조)

그럼 다음 포스팅부터는 본격적인 실험에 들어가보겠습니다.

참고

https://jybaek.tistory.com/686


https://colab.research.google.com/notebooks/snippets/importing_libraries.ipynb

https://medium.com/@jjeaby/colaboratory-%EC%9D%98-gpu-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-deep-learning-%EC%9D%84-%ED%95%B4%EB%B3%B4%EC%9E%90-79e12e6ed3b0

공공데이터 이용정책

최근에 공공데이터의 제공 및 이용 활성화 정책 방향에 따라서 공공 데이터를 open api로 공개하거나 따로 공개하지 않더라도 공공저작원의 자유이용을 허용하는 사이트들이 증가하고 있습니다. 이번 포스팅에서는 각 공공 기관별 공공데이터 이용정책을 확인해보겠습니다.

공공데이터포털사이트

일단 먼저 공공데이터의 산실과도 같은 공공데이터포털 사이트입니다.

공공데이터 이용정책 :
https://www.data.go.kr/guide/guide/policy.do

기본적으로 공공데이터 이용허락범위 관련하여 “이용허락범위 제한 없음”일 경우 자유로운 이용이 가능하며, 제한이 있을 경우 각 유형(공공데이터법 시행규칙 별지 제4호 제공대상 공공데이터 등록서 참고)별로 아래 내용에 유의하시기 바랍니다.

공공데이터 이용정책

개별 API 설명에 들어가보면 대부분이 “이용허락범위 제한 없음”으로 되어 있지만 가끔씩 제한이 있는 경우도 있습니다. 그럴경우 제한 범위 리스트입니다. 전체 리스트는 링크로 이동하셔서 확인 가능합니다.

공공데이터 개별 API 설명에서 이용허락범위를 허락하는 부분은 아래와 같습니다.

국가통계포털 사이트

통계청에서 제공하는 국가통계 포털 사이트 입니다.

국가통계포털 사이트 : http://kosis.kr/index/index.do

국가통계포털

통계청에서 제공하는 다양한 데이터들을 다운로드 받을 수 있습니다.

통계 정보 이용 방침: http://kosis.kr/serviceInfo/useGuide.do

이용자는 기본적으로 KOSIS 통계정보를 자유롭게 사용, 재사용 및 재배포할 수 있으며 통계정보의 비상업적 또는 상업적 활용이 모두 가능합니다. ( 공공데이터법 감사합니다 ㅠ – ㅠ )

그러나 간행물 이나 CD 로 구입한 정보나 KOSIS 에서 다운받은 그대로 사용하는 것은 허락하지 않습니다. 자세한 내용은 위 이용 방침 링크에서 확인 할 수 있습니다.

KOSIS 통계정보 이용방법

통계지리정보사이트 개발지원센터

통계지리정보서비스(SGIS)에서 통계청에서 제공하는 데이터를 API로 제공하고 있습니다.


통계지리 정보 서비스 : https://sgis.kostat.go.kr/view/index

통계지리 정보 서비스 API :
https://sgis.kostat.go.kr/developer/html/openApi/api/data.html#41

통계지리 정보 서비스 API

공공데이터 이용정책에 관련하여 개별 페이지를 따로 찾을 수 는 없었으나 위에 공공누리의 제1유형 아이콘이 있습니다.

공공누리 유형안내 사이트 :
https://www.kogl.or.kr/info/license.do

공공누리 1유형의 요약정보는 아래와 같습니다. 즉 상업적 이용을 포함하여 자유롭게 이용이 가능합니다.

  • 출처표시
  • 상업적, 비상업적 이용가능
  • 변형 등 2차적 저작물 작성 가능

한국은행 경제통계시스템

경제통계 분석을 할 경우에 꼭 사용해야 하는 API중 하나입니다. 한국은행에서 제공하는 다양한 데이터를 사용할 수 있습니다.

다만 상업적 이용까지 자유롭게 허용했던 다른 공공기관과 다르게 한국은행은 상업적인 목적으로 이용할 경우 OPEN API 서비스를 신청할때부터 통계작성기관 이용승낙서를 받아야 한다고 한다고 합니다. 한국은행은 제외한다고 했으니 한국 은행 데이터는 가능한 것 같은데 open api 사용하기 전에 통계 작성 기관을 확인해야 하니 다른 공공기관보다는 무척 불편하게 되어있네요;

이용약관:
https://ecos.bok.or.kr/jsp/openapi/OpenApiController.jsp?t=introUseProv&menuGroup=MENU000002&menuCode=MENU000011

제4조(통계정보의 상업적 이용) ① 통계정보를 상업적인 목적으로 이용하고자 하는 자는 OpenAPI 서비스를 신청할 때 통계작성기관(한국은행은 제외한다)으로부터 이용승낙서를 받아 제출하여야 한다.

② 영리 행위를 목적으로 하는 이용자가 통계작성기관으로부터 승낙 받지 않은 통계정보를 이용한 경우에는 상업적인 목적으로 이용한 것으로 간주되며 제공기관은 OpenAPI 서비스 제공을 중단할 수 있다.

③ 이용자가 OpenAPI 서비스를 활용하여 영업활동을 하는 경우 제공기관은 그 결과에 대해 일체의 책임을 지지 않는다.

당연하겠지만 데이터 출처 역시 의무입니다.

제7조(출처표시 의무) 이용자는 통계정보를 이용함에 있어 한국은행 경제통계시스템에서 제공된 정보임을 표시하여야 한다.

   ※ 출처표시의 예

      – 출처 : ECOS(한국은행, 국제수지), 2016.00.00.

      – 자료 : ECOS(한국은행)>물가>소비자물가지수, 2016.00.00

법원경매정보

대한민국법원경매에 대해 정보를 제공하는 사이트입니다.

https://www.courtauction.go.kr/

따로 API를 제공하고 있지는 않지만 공공저작물의 자유이용을 허락하고 있습니다.

https://www.courtauction.go.kr/CopyrightProtection.laf

한국교육학술정보원

한국교육학술정보원은 초중등학교 정보공시 사이트 학교알리미를 운영하고 있습니다. 학구도, 학교별 학생수, 진학률 등 학교에 대한 다양한 정보를 제공합니다. 아쉬운 점은 OPEN API로 데이터를 제공하는 것이 아니라는 것입니다. 하지만 데이터의 자유로운 사용은 보장하고 있습니다.

학교알리미 공공데이터 이용정책:
https://www.schoolinfo.go.kr/ng/pnngpi_a01_l0.do

학교알리미 공공데이터 이용정책

지금까지 공공데이터 이용정책을 확인해보았습니다. 지금까지 확인한 데이터들도 많은데 앞으로 점점 더 공공데이터가 확대되는 방향으로 간다고 하니 데이터 덕후로서는 기대가 많이 됩니다 : )