Dr.부동산

[계량분석론] 0522 머신러닝 & 파이썬 본문

부동산금융투자/부동산계량분석론

[계량분석론] 0522 머신러닝 & 파이썬

anony mous 2019. 5. 22. 19:17

기계학습 알고리즘

1. 기계학습의 유형 
전통적으로 쓰는 통계적인 방법들은 얼마나 평균을 잘 보여줄 수 있는지에 신경을 쓰지만, 
머신러닝은 어떻게든 퀄리티가 좋은, 정확도가 높은 결과가 나와주길 바란다.

머신러닝의 유형에는 지도학습(supervised), 비지도학습(unsupervised), 강화학습(reinforcement)이 있다. 
- 지도학습의 경우 종속변수가 존재한다. ex. 회귀분석과 같은 경우 
- 비지도학습은 종속변수가 없다. 데이터가 생기는대로 잘 구분을 짓는다던지, 관계를 파악하던지의 행동을 한다. ex 클러스터링 


유형

내용

알고리즘

활용예시

지도학습 
(Supervised Learning)

이미 유형(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

 

신경망 소개: Playground 실습  |  머신러닝 단기집중과정  |  Google Developers

예상 시간: 20분 처음 만들어보는 신경망 이 실습에서는 처음으로 신경망을 학습시켜 보게 됩니다. 신경망을 통해 명시적인 특성 교차를 사용하지 않고도 비선형 모델을 학습할 수 있습니다. 과제 1: 주어진 모델은 두 개의 입력 특성을 하나의 뉴런으로 결합합니다. 이 모델이 비선형성을 학습할 수 있을까요? 모델을 실행하여 추측을 확인해 보세요. 과제 2: 히든 레이어의 뉴런 수를 1개에서 2개로 늘려보고 선형 활성화에서 ReLU와 같은 비선형 활성화로 변경해

developers.google.com

불러오는 중입니다...

모델링 절차
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

 

[Python] 파이썬 클래스, 인스턴스, 모델링, 메소드 정의, 기초 개념잡기

개념 클래스 - 변수나 함수들을 모아서 필요할때 사용할 수 있는 집합체 인스턴스 - 클래스에 의해 만들어진 객체 - 인스턴스는 각자 자신의 값을 가지고 있음 모델링 - 클래스로 현실의 개념을 표현 메소드 - 함..

rednooby.tistory.com

->파이썬, 급등지역 찾을때 국토부에서 쓴다.