Dr.부동산
[계량분석론] 0522 머신러닝 & 파이썬 본문
기계학습 알고리즘
1. 기계학습의 유형
전통적으로 쓰는 통계적인 방법들은 얼마나 평균을 잘 보여줄 수 있는지에 신경을 쓰지만,
머신러닝은 어떻게든 퀄리티가 좋은, 정확도가 높은 결과가 나와주길 바란다.
머신러닝의 유형에는 지도학습(supervised), 비지도학습(unsupervised), 강화학습(reinforcement)이 있다.
- 지도학습의 경우 종속변수가 존재한다. ex. 회귀분석과 같은 경우
- 비지도학습은 종속변수가 없다. 데이터가 생기는대로 잘 구분을 짓는다던지, 관계를 파악하던지의 행동을 한다. ex 클러스터링
유형 |
내용 |
알고리즘 |
활용예시 |
지도학습 |
이미 유형(class)을 구분 짖는 속성(attribute)을 갖는 주어진 데이터 집합(Training set)으로부터 유형(class)를 구분하는 함수적 모델(model)을 찾아 유형(class)을 구분 짖는 속성(attribute)을 갖지 않는 새로운 데이터의 유형을 구분하는 기술 |
-Bayesian classification -Decision tree -Regression -Neural Network -hidden Markov model(HMM) |
- 이미지 인식 - OCR (이미지의 문자인식) - 음성인식 - NLP(자연어인식) - 추세예측(회귀분석) |
비지도학습(Unsupervised Learning) |
유형(class)을 구분 짖는 속성(attribute)을 갖지 않는 주어진 데이터 집합(Training set)으로부터 데이터 자체의 상호 유사성(likelihood or distance)을 통하여 유형(class)를 구분하는 함수적 모델(model)을 찾아 새로운 데이터의 유형을 구분하는 기술 |
-K-Means clustering -Nearest Neighbor Clustering -EM clustering -Self-organizing feature map (SOM) -Principal component analysis (PCA) -Independent Component Analysis(ICA) |
- 마케팅의 고객세분화 - 개체의 분포 특성 분석 - News Summarizing |
강화학습(Reinforcement Learning) |
데이터의 상태(State)을 인식하고 이에 반응한 행위(Action)에 대하여 환경으로부터 받는 포상(Reward)을 학습하여 행위에 대한 포상을 최적화 하는 정책(model)을 찾는 기술 |
-Brute force -Monte Carlo methods -Markov Decision Processes -Value Functions -Q-Learning -Dynamic Programming |
- 로봇제어 - 게임개인화 - 공정최적화
|
기기계학습(Machine Learning)의 근본 원리
원리 |
설명 / 해석 |
균등의 원리(Principle of Indifference) |
차이를 증명할 만한 데이터를 관측하기 전에는 구별하지 않는다. |
오캄의 원리(Principle of Occam's Razor) |
주어진 데이터를 설명하는 범위 내에서는 단순한 모델을 선호한다. |
양보의 원리(Principle of No Free Lunch) |
학습 알고리즘의 효율과 성능은 서로 양보해야 하는 관계이다 |
3. Regression (for Estimation)
- 추정을 위한 regression은 관측값을 가장 잘 설명하는 함수를 도출하는 과정이다.
4. Regression (for Classification)
- 분류를 위한 regression은 2개 이상의 서로다른 집단을 분류하는 최적의 함수를 도출하는 과정이다.
- 2차원인 것을 1차원으로 왜곡을 시킨 것일 수 있다. 데이터가 잘 분리가 될 수 있도록 효과적으로 왜곡을 시킬 수 있을까를 생각하는 것이 기계학습의 전반적인 컨셉이다.
- Cortes and Vapnik(1995) suggested SVM : 공간상의 각점 A∈R에 대해서 두 그룹중 하나에 Y가 속하도록 함.
5. Decision Rule (Tree)
- 트리구조를 가지는 의사결정나무학습.
- 처음에 자식노드를 정하고 그 아래 손자노드를 만드는 것이 때로는 효과적인데, 어떤 상황에서는 효과적이지 않다. 순서가 정해지다 보니까 최적으로 학습을 잘 하는데 한계가 있다.
6. Clustering
- 전체적인
7. Association Rule
- 관계를 찾는 알고리즘
8. Collaborative Filtering
딥러닝
1. Perceptron
- 신경세포와 Perceptron : 인간의 뇌세포를 모사한 방법, 중요한 정보는 신경전달 물질을 조금 더 사용하지 않을까 하는 것. W를 높임.
- 신경망이 깊어지면 딥러닝과 연결되어진다. 하나는 퍼셉트론, 여러개는 인공신경망이라 한다.
2. Perceptron의 학습과정
- 임의의 경계를 정의 -> Weight 조정 -> 최적모형 정의
3. 보다 현실적인 문제
- 체스판, 나선형, 쿠키와 치와와같은 경우
- 과거보다는 정확한 데이터 (체중, 운동, 신장, 비만 혈당 등 레이어를 줌)
4. 이미지 학습
- 이미지 학습과정 예시 : 픽셀에서 edge들을 찾아내서 object를 파악.
5. 레이어 수에 따른 학습의 차이
- 요새 트렌드는 분류해서 알려주는 것이 아니라 오브젝트를 전체적으로 쌓아가서 차선인식, 사람인식을 한번에 분류
6. 학습과정의 예시
- 빨강색, 파랑색을 분류하는 방법 :
https://developers.google.com/machine-learning/crash-course/introduction-to-neural-networks/playground-exercises?hl=ko
모델링 절차
1. modeling 수행절차
2. 모델링 적용 (cut-off)
3. Training, Testing , Validation
- 교차검증 Cross Validation (4-fold CV)
- 모델 성능에 대한 바이어스
4. overfitting, Underfitting, Generalization
- 데이터가 부족한상황에서 과소적합, 과대적합의 문제
5. Randon Forest
- 대표적 ensamble 기법중 하나
- 하나의 변수가 선택이 되고 다음으로 넘어가다보니 처음 어떤 변수가 선택이 되느냐에 따라 문제가 되기도 함 -> 변수에 대한 조합을 랜덤하게 다양한 변수들이 골고루 사용. 변수의 조합도 일부만가지고 sub sampling을 해본다.
파이썬 실습
- 3.7버전 Graphic Installer 다운
- Colab을 사용하려면 구글 드라이브(https://drive.google.com/)에 접속하여 메뉴에서 "새로 만들기" > "더보기" > "Colaboratory"를 클릭한다.
샘플예제
- 데이터 셋 : KB부동산 data, 월별 지수, 지역별 급여데이터, 지역별 아파트 거래량, 인허가 물량, 미분양, 지역별 고용통계
- 노드에 신호를 주고 얼마나 흘려보낼지 결정을 해야 한다. 학습속도를 조절하고, 과도한 학습을 줄인다.
- 실제 들어오는 인풋값과 타겟값을 설정해주면 모형이 만들어진다. 이러한 모형에 대해 예측 값을 파악 .
- in[ ]에 입력하고 out[ ]에서 학습한 출력물을 본다.
import sys
sys.path.append('/home/ubuntu/GME')
import time
import uuid
import os
import pickle
import pandas as pd
import numpy as np
from scipy import stats
# from sklearn_pandas import DataFrameMapper
from sklearn.feature_extraction import DictVectorizer
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import LabelBinarizer
from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.preprocessing import StandardScaler
#from db.db import DBManager
from util import logging
class dataHandler(object):
def __init__(self, dataPath='/home/ubuntu/GME/data/data_181216.txt'):
self.logger = logging.getLogger(self.__class__.__name__)
self.logger.info("READ CSV...")
self.data = self.readCSV(dataPath)
def __del__(self):
pass
def readCSV(self, dataPath=None):
return pd.read_csv(dataPath)
def writeCSV(self, dataPath=None):
return self.data.to_csv('/home/ubuntu/GME/data/data_transformed.csv', sep=',', encoding='ms949')
# coding: utf-8
from datetime import datetime
from sklearn.cross_validation import train_test_split
import numpy as np
import pandas as pd
import math
import matplotlib.pyplot as plt
import csv
data_list = ['원본_20160716_2010년 대출취급명세_건.xlsx','20170228_00_2010년상환현황(대출잔액수정).xlsx',
'20170228_00_2010년상환현황(대출잔액수정)2.xlsx','소득10분위별__가구당_가계수지__도시_2인이상___소득.xlsx',
'경기동행지수_2010100__구성지표_시계열__9차__20170106114916.xlsx','KB주택가격지수.xls',
'181004_생명보험해지율_수정.xlsx']
default_path = '/home/ubuntu/GME/data/'
inc_qtl = pd.read_excel(default_path + data_list[3])
eco_ind = pd.read_excel(default_path + data_list[4])
# house_price = pd.read_excel(default_path + data_list[5])
ins_cls = pd.read_excel(default_path + data_list[6])
from scipy import stats
import numpy as np
np.random.seed(12345678)
rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)
rvs2 = stats.norm.rvs(loc=5,scale=10,size=500)
stats.ttest_ind(rvs1,rvs2).pvalue
RandomForest
https://rednooby.tistory.com/52?category=633023
->파이썬, 급등지역 찾을때 국토부에서 쓴다.
'부동산금융투자 > 부동산계량분석론' 카테고리의 다른 글
[계량분석론] 0605 VAR과 지역계량분석 (0) | 2019.06.05 |
---|---|
[계량분석론] 0522 파이선 이용사례 (0) | 2019.05.22 |
[계량분석론] 0508 모형 ARIMA, GARCH (0) | 2019.05.08 |
[ 계량분석론] 0501 제7장 계열상관 (0) | 2019.05.01 |
[계량분석론] 0501 제9장 Omitted variable & 패널 분석 (0) | 2019.05.01 |