반응형

ㅁ Decision Tree

 o 맨위는 root node, 맨 마지막 노드는 leaf, Terminal node, 중간은 internal node
 o Decision Tree는 너무 유명하므로 설명은 넘어가겠다. 

 

 o Decision Tree Algorithm
  - 현재 Data Set의 target value가 모두 같으면 Algorithm Stop
  - 만약 하나라도 target value가 섞여 있으면 Data는 segmentation하고 트리는 노드 분기
 o Data가 segmentation 되는 기준은 무엇일까?
  - Segmentation된 결과는 지금보다 좋은 방향으로 가야하는데, 좋은 방향은 무엇이고, 방향이 결정된다면 그렇게 하기 위한 방법은 무엇일까? 
  - 우리의 큰그림은 분류하는 알고리즘을 짜는 것이고, Information Gain의 큰 값을 도출하는 것이 좋은 방향이다.

ㅁ Decision Tree의 IG 계산

 o IG계산을 하는 것을 정리하려고 했는데, 너무 ... 똑같은 자료가 있어가지고 이걸로 대체해야겠다.. 출처는 여기있다.
  - 엔트로피와 IG 계산하는 방법은 있었으니, 값만 바꿔서 아래의 링크에서 계산해보면 아주 수월할 것이다. 여기서 약간의 특이사항만 발췌하여 써야겠다. 
https://www.saedsayad.com/decision_tree.htm

 

Decision Tree

Decision tree builds classification or regression models in the form of a tree structure. It breaks down a dataset into smaller and smaller subsets while at the same time an associated decision tree is incrementally developed. The final result is a tree wi

www.saedsayad.com

 

Entropy(부모)를 계산한다.

 

outlook에 대한 Information Gain을 계산한다.
0.693이 나온다.

 

outlook뿐만 아니라 temp, Humidity의 Gain을 계산해보니, outlook에 대한 IG가 가장크다.
그렇다면 outlook이 Target Value에 가장 큰 영향력을 끼치는 것으로 볼 수가 있다.

 

가장 영향력이 큰 Attribute에 대해 노드 분기를 나누기로 해본다. 하여 Rainy OverCast Sunny로 구분하고 TargetValue를 확인해보니. Overcast의 TargetValue는 같기때문에 Dicision Tree의 알고리즘에 따라 알고리즘이 Stop이 된다.
* data set의 target value가 모두 같은 값이면 알고리즘 stop
** 하나라도 targetvalue가 다르면 data는 segmentation & 트리는 노드 분기

 

아웃룩을 고정하고 그다음 3개의 애트리뷰트에 대한 IG를 구하면 다음 IG가 높은 Humidity를 통해 또 나누고 노말, 하이로 분류하고 보니까 타겟벨류가 같으니 STOP하면 된다. 이렇게 계속 분기를 진행하면된다. 

 

이렇게 나누면 {IF로 간단하게 알고리즘 설명을 할 수가 있다. 

 

ㅁ 생각해볼 점

 o 신경망 알고리즘은 어떻게 구동되는지 왜 이렇게 나오는지 알수가 없는 블랙박스 형태이다.
 o Decision 알고리즘은 말로 설명하기 편하고 괜찮은 알고리즘이다.
 o IF문으로 간단하게 설명할 수 있으니까 말이다.
 o 그리고 컴퓨터들은 Decision Tree를 어떻게 읽을것일까? 텍스트로 읽는 것이 이미지로 읽는 것보다 더 빠르고 간편하다.  
 o 이 알고리즘은 87년도에 나온 알고리즘이고 어디에도 1등하진 못하지만 항상 논문에도 나오는 주제이다.
 o 어떤 툴박스를 열어도 기본적으로 사용 할 수 있다.

ㅁ 체크포인트(한계점)

 o Decision 알고리즘 뿐만 아니라 많은 알고리즘이 해당되는 문제이기지만 오버핏팅(과대적합)문제가 발생할 수있음
  - 데이터 분석에서 100% 맞는 모델은 틀린 모델이다.
  - 초보분석가가 많이 실수 하는 이유가 결과가 항상 100%맞아야 한다는 점이다.
  - 100% 맞게 되면 다른 데이터가 들어왔을때 데이터가 틀릴확률이 높다. Generalization, 일반화가 필요하다. 
  - 반대말로 언더핏팅이 있는데, 모델을 대충 만들어서 별로 맞지가 않다. 둘 다 성능이 안좋은건 당연하다.
  => 오버핏팅을 해결할 수 있는 알고리즘은 나온게 없고 10 fold cross validation으로 최대한 해소한다. 전체 트레이닝 셋을 10번 쪼개서 테스트 셋을 트레이닝세트 내에서 계속 변경하면서 트레이닝하고 테스트 한다. 보통 10번을 많이 쪼갠다고 한다. 그리고 전문가는 그래프로 이야기한다. 선행 연구는 대부분 y축에 퍼포먼스, x축에 인스턴스 갯수로 그래프를 표시한다. 

 

 o 예측의 분류모델만 만드는 게 아니라 계층별 우선순위도 도출해야한다. DEcision Tree 기준으로 오늘 골프 못칠 확률을 물어보면 1이나 0으로만 나오고 이것은 100%이기때문에 틀린 것으로 볼 수 있다. 
  - Decision Tree를 끝까지 돈 것을 포레스트라고 한다. 숲에 빠지면 길을 잃어버린다.
  - Decision Tree에서 오버핏팅을 피하는 방법으로 Prune(프룬,프루닝)을 쓴다.(가지치기라고 생각하면 됨)
  => 프루닝의 가장 보편적인 방법은 마지막 Terminal node를 없애버리고 하나위의 노드에서 끝낸다. 그러면 거긴 0, 100%가 아니고 약간 편향되어 있지만, 섞여있긴하다. 거기서 한번 더 성능 테스트를 하고 내가 목표로 한 수치(예 95%)보다 더 높게 나오면 한번더 프루닝을 실시한다. 그리고 성능 테스트를 해서 90%가 나오면 그 모델을 사용하고 확률도 대답해줄 수 있다.
 o Super attribute : 특정의 어트리뷰트 값이 타겟 벨류에 너무 큰 영향을 끼치는 경우다. 이렇게 되면 대부분은 데이터 전처리를 다시 고민해야 할 필요가 있따(Data Cleaning, 데이터정제)

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기