Rucrazia's Blog
Neural Network, Decision Tree, KNN 본문
Neural Network
딥러닝의 기초이자 거의 모든것 이다.
이것을 알아야 CNN, ALEX NET 등을 알아들을수 있다.
뉴럴 넷은 뇌가 처리하는 방식을 본 따서 처리하는 알고리즘을 만든다.
뉴런보다 컴퓨터가 처리 속도가 빠르다.
뇌는 분산 처리, 칩은 중앙 처리 방식(BUT 분산처리 화 시키는 기술들이 나온다).
뇌는 Non-linear processing을 하고, 컴퓨터는 선형적인 수학적 프로세싱을 한다.
뇌는 전기자극을 통해서 신호가 전달 된다.
자극들이 들어와서 Soma에서 모인다. 모이는데, 문턱 값을 넘으면 다른 애로 넘어간다.
뉴럴넷의 기본 알고리즘은 E= Sum(Wi*Xi) 인데, 여기서 Wi는 가중치(기울기) 이고 Xi는 각 input이다.
가중치에 따라서 결과 값이 예측이 된다.
- 각각의 변수에 대해 가중치 주는 것 -> 가중치를 어떻게 줄것인가 찾는게 이 모델의 핵심!
아웃풋을 그대로 나오진 않고, Activation function(Step function, tangent H, sigmoid, relu ... etc)을 통과하게 된다. y=f(E)
Activation function(step fnction 일 때) = 입력의 총합이 입계치를 넘으면 +1을 출력하고 그렇지 않으면 -1을 출력한는 활성화 함수
가중치를 임의의 값으로 초기화 한 후 학습 패턴 x를 입력하여 퍼셉트론 출력 f가 목표 출력 y와 같으면 가중치를 변경하지 않고, 다르면 가중치를 변경하는 방식으로 학습힌다.
데이터를 분류하는 기울기를 찾고자 한다.
Backpropagation = 랜덤하게 숫자를 넣어 본다음에 , 결과를 봤더니 틀렸어, 그럼 가중치를 바꾸고 다시 근접 값을 넣어 본다.
델타규칙
학습 규칙을 델타 규칙이라 한다.(쉽게 말하자면 문제와 정답을 가지고 기울기를 찾아가는것.)
Ed =1/2(y-f)^2 는 실제값(y) - 측정값(f)의 차이의 제곱 이다.
1/2에 해당하는 상수는 아무거나 둬도 괜찮다.
학습은 오차를 줄여주는 방향으로 시냅스 가중치를 교정함으로써 이루어진다.
w(i+1) = w(i) + △w(i)
오차 = 전 오차 + 오차의 변화량
△w(i) = -η*(에러의 총합을 w로 미분)
η = 에타, 학습률
w가 조금 변했을때, 얼마나 차이가 변할것인가?
Decision Tree
가장 적은 질문으로 이기는 것이 스무고개 비법! -> 가장 필요 ㅇ벗는 정보들을 많이 버리도록 해야 버려지는 양으로 질문 효율을 알 수 있음?
목적 : 분별하는 기준과 수치들을 알아보기 위함.
Root Node, Brandch(연결 선), Internal Node(중간 노드), Terminal Node(맨 밑 노드)로 나뉨
Root Node : initial node
Information Gain(정보량)으로 분할의 기준을 정한다.
내가 얻는 정보가 많아야만 잘라낸다.
정보량을 계산하려면 엔트로피 or GINI Index ... etc... 가 필요한다.
엔트로피 : 어떤 집합에서의 무질서 정도를 측정한다.
정보들을 질서있게 놓여져 있는 상태를 수치화 해보기 위함.
뒤죽박죽 섞인 segment의 엔트로피는 높고, 순수하게 구성된 segment의 엔트로피는 낮다.
알고리즘은 이렇게 순종성(purity)을 고려해 어떤 속성으로 구분할지 결정하게 되며, 따라서 알고리즘은 각 가능한 속성으로 구분한 집합의 동질성(homogeneity)의 변화를 계싼하기 위해 엔틑로피를 사용하여 Information Gain을 계산한다.
정보 이득이 0 이라면 이 속성으로 구분하여 엔트로피를 줄일 수 없다.
Information Gain(부모, 자식) = entropy(부모) - [p(자식1) x entropy(자식 1) + p(자식2) x entropy(자식2) + ...]
스플릿(분기)가 많아질수록 에러 율이 낮아진다.(training data에서) but test data에서는 어느정도 에러가 낮아지다가 어느순간 높아지게 된다.
그러므로 pruning을 해서 적절하게 가지치기가 중요하다.
R result
Class specified by attribute `outcome'
Read 900 cases (21 attributes) from undefined.data
Decision tree:
checking_balance in {> 200 DM,unknown}: no (412/52) #checking_balance에서 200DM 밑에는 없고,
checking_balance in {< 0 DM,1 - 200 DM}: #<0DM, 1-200DM 밑에는 분기가 있다.
:...months_loan_duration <= 22:
:...credit_history in {critical,delayed,repaid}: no (257/74) # months_loan_duration이 22 이하일때, credit_history가 no이다.257명은 맞고, 74명은 틀렸다.
: credit_history in {fully repaid,fully repaid this bank}:
: :...telephone = none: yes (14/1)
: telephone = yes:
: :...months_loan_duration <= 16: yes (5/1)
: months_loan_duration > 16: no (4)
months_loan_duration > 22:
:...savings_balance = > 1000 DM: no (5/1)
savings_balance = 501 - 1000 DM:
:...installment_plan = none: yes (6/2)
: installment_plan in {bank,stores}: no (2)
savings_balance = unknown:
:...amount <= 1546: yes (5)
: amount > 1546: no (26/4)
savings_balance = 101 - 500 DM:
:...employment_length in {0 - 1 yrs,1 - 4 yrs}: yes (12/2)
: employment_length in {4 - 7 yrs,unemployed}: no (10/1)
: employment_length = > 7 yrs:
: :...installment_rate <= 3: yes (2)
: installment_rate > 3: no (3)
savings_balance = < 100 DM:
:...months_loan_duration > 47: yes (27/2)
months_loan_duration <= 47:
:...foreign_worker = no: no (2)
foreign_worker = yes:
:...other_debtors = guarantor: no (6/1)
other_debtors in {co-applicant,none}:
:...purpose in {car (new),domestic appliances,education,
: others,repairs,retraining}: yes (32/7)
purpose = business:
:...residence_history <= 1: no (3)
: residence_history > 1: yes (11/2)
purpose = car (used):
:...personal_status in {divorced male,
: : single male}: no (13/1)
: personal_status in {female,
: married male}: yes (3)
purpose = furniture:
:...age <= 22: no (2)
: age > 22:
: :...employment_length in {> 7 yrs,0 - 1 yrs,
: : 4 - 7 yrs}: yes (14)
: employment_length in {1 - 4 yrs,
: unemployed}: no (5/1)
purpose = radio/tv:
:...employment_length in {> 7 yrs,
: 4 - 7 yrs}: no (7/1)
employment_length in {0 - 1 yrs,
: unemployed}: yes (8)
employment_length = 1 - 4 yrs:
:...amount <= 2859: yes (2)
amount > 2859: no (2)
Evaluation on training data (900 cases):
Decision Tree
----------------
Size Errors
29 153(17.0%) << #900개 중에서 153개를 못 맞출 모델.
(a) (b) <-classified as #confusion matrix
---- ----
623 17 (a): class no #default가 17명이 날꺼라고 했음. 그리고 623 명은 아니라고 한것.
136 124 (b): class yes #default가 난 것인데, 136명이 안 났다고 했음
Attribute usage:
100.00% checking_balance
54.22% months_loan_duration
31.11% credit_history
23.11% savings_balance
12.22% foreign_worker
12.00% other_debtors
11.33% purpose
7.22% employment_length
3.89% amount
2.56% telephone
2.33% age
1.78% personal_status
1.56% residence_history
0.89% installment_plan
0.56% installment_rate
KNN
추천 알고리즘 : 비슷한 사람을 찾아서 추천.
k : 구별하는 집단안의 아이템 갯수
정밀도가 필요한 곳에서는 쓰기가 어렵다(accuracy는 낮을 수 있다.).
distance 개념으로 설명한다.
Euclidean distance
Jaccard Index : 두 데이터 집합의 교집합의 크기를 합집합의 크기로 나눈 것.
Jaccard Index가 Euclidean distance보다 정교하다.
k가 1인 경우 overfitting이 될 가능성이 높고, k=5 일 때눈 너무 general 해질 수 있다.
ps. K-fold Cross Validation
데이터가 많지 않을때는 K-fold Cross validation을 하는게 좋다.
데이터가 적을때 유용한데, 왜냐하면,
ex. 5-fold 일때는 100개중에 80개를 training set을 만들고, 80개를 5개로 나눈다. 그리고, 그 중에서 4개로 모델을 만들고 남은 한개로 test를 한다. 그렇게 총 5개를 한다
남은 20개로 나중에 최종 validation을 한다.
출처
GBSA 경기도경제과학진흥원 2017 SW - tech 전문교육 3주차
'기술 - Data Science > Data Science' 카테고리의 다른 글
Statistics_Introduction 1. Statistics(통계)란 무엇인가? (0) | 2017.08.27 |
---|---|
Data Science 1. 단순선형회귀 (2) (0) | 2017.08.07 |
PCA, CLSTURING(K-Means), Association Rule (0) | 2017.08.07 |
Data Science 1. 단순선형회귀 (1) (0) | 2017.08.02 |
Regression Model(Linear, Logistic,Naive Bayes) (0) | 2017.07.31 |