KR20160001375A - 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법 - Google Patents

의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법 Download PDF

Info

Publication number
KR20160001375A
KR20160001375A KR1020140079787A KR20140079787A KR20160001375A KR 20160001375 A KR20160001375 A KR 20160001375A KR 1020140079787 A KR1020140079787 A KR 1020140079787A KR 20140079787 A KR20140079787 A KR 20140079787A KR 20160001375 A KR20160001375 A KR 20160001375A
Authority
KR
South Korea
Prior art keywords
data
learning
value
class
gain
Prior art date
Application number
KR1020140079787A
Other languages
English (en)
Other versions
KR101623113B1 (ko
Inventor
김호원
이동건
이연철
Original Assignee
부산대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 부산대학교 산학협력단 filed Critical 부산대학교 산학협력단
Priority to KR1020140079787A priority Critical patent/KR101623113B1/ko
Publication of KR20160001375A publication Critical patent/KR20160001375A/ko
Application granted granted Critical
Publication of KR101623113B1 publication Critical patent/KR101623113B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2216/00Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
    • G06F2216/03Data mining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Computing Systems (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Algebra (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 의사 결정 트리의 학습 및 분류를 위한 연산을 전용 하드웨어를 통해서 내부 연산을 병렬 처리화 하여 빠른 시간 내에 학습 및 분류 작업을 수행할 수 있도록 한 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법에 관한 것으로, 이산형 자료의 처리를 담당하는 모듈들을 갖는 이산형 자료 처리부;연속형 자료의 처리를 담당하는 모듈들을 갖는 연속형 자료 처리부;학습할 데이터의 클래스 정보를 처리하는 클래스 정보 처리부;학습할 데이터의 가중치를 저장하는 가중치 저장부 및 학습 데이터 전체의 가중치(Weight) 합을 구하는 가중치 처리부;FPU(Floating Point Unit)의 사용권을 제어하는 FPU 아비터 및 부동 소수점 연산을 수행하는 FPU;상기 클래스 정보 처리부의 내부 클래스 메모리와 가중치 저장부의 접근을 제어하기 위한 메모리 아비터;학습의 결과가 트리의 형태로 저장되는 학습 결과 저장부 및 학습이 완료된 데이터를 대상으로 분류를 수행하는 데이터 분류부;를 포함하는 것이다.

Description

의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법{Apparatus and method for learning and classification of decision tree}
본 발명은 데이터 마이닝 기술에 관한 것으로, 구체적으로 의사 결정 트리의 학습 및 분류를 위한 연산을 전용 하드웨어를 통해서 내부 연산을 병렬 처리화 하여 빠른 시간 내에 학습 및 분류 작업을 수행할 수 있도록 한 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법에 관한 것이다.
의사 결정 트리는 데이터 마이닝 기술 중 한 가지 방법으로써, 예측과 분류에 사용되는 기술이다.
의사 결정 트리는 트리 구조로 분류 규칙을 표현하기 때문에 모형을 이해하기가 쉽고, 보편적으로 분류 능력이 뛰어나 많은 예측 및 분류 응용에서 활용되고 있다.
일반적으로 의사 결정 트리에는 CART(Classification and regression tree)와 CHAID(Chi-squared automatic interaction detection), ID3, C4.5, C5.0 등의 알고리즘이 있다.
Ross Quinlan이 만든 C4.5 알고리즘은 RuleQuest사의 홈페이지에 C코드로 작성되어 공개되어 있다. C4.5 알고리즘은 Intel 기반의 CPU에서 소프트웨어로 실행될 수 있다.
하지만, 학습 과정에서 학습의 대상이 되는 속성별로 카운팅 연산을 반복하여 수행해야 하며, Information 및 Information Gain 연산에 있어 부동 소수점 연산을 많이 수행해야 하는 점에 있어 학습 시간이 오래 걸린다는 단점을 가진다.
따라서, 이와 같은 연산을 병렬로 구현할 수 있는 하드웨어 기술이 요구되고 있고, 특히, C4.5를 병렬 하드웨어로 구현할 수 있는 기술이 요구되고 있다.
그러나 종래 기술의 의사 결정 트리 하드웨어 회로에 대한 연구나 발명의 경우 부동 소수점 연산을 다루지 못하거나, 연속형 자료를 다루지 못하거나, 혹은 분류 과정만이 가능한 회로를 구축하는 등, 연산의 능력에 있어 한계가 있다.
한국공개특허 10-2012-0086107호 한국공개특허 10-2003-0071938호
본 발명은 이와 같은 종래 기술의 데이터 마이닝을 위한 의사 결정 트리에서의 연산 및 학습 시간 문제를 해결하기 위한 것으로, 의사 결정 트리의 학습 및 분류를 위한 연산을 전용 하드웨어를 통해서 내부 연산을 병렬 처리화 하여 빠른 시간 내에 학습 및 분류 작업을 수행할 수 있도록 한 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법을 제공하는데 그 목적이 있다.
본 발명은 C4.5 알고리즘의 학습 및 분류 과정을 병렬로 수행할 수 있는 하드웨어 구조를 구현하여 범용 CPU를 이용한 소프트웨어 방식의 C4.5 학습 및 분류 과정을 훨씬 더 빠른 시간에 해낼 수 있도록 한 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법을 제공하는데 그 목적이 있다.
본 발명은 계수(Counting) 연산의 병렬화, 부동 소수점 연산의 병렬 및 고속화, 연속형 속성에 대한 Gain 및 Info 연산의 최적화를 위한 구성을 포함하고, 의사 결정 트리의 학습 및 분류 작업을 고속화할 수 있도록 한 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법을 제공하는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
이와 같은 목적을 달성하기 위한 본 발명에 따른 의사 결정 트리의 학습과 분류를 위한 장치는 이산형 자료의 처리를 담당하는 모듈들을 갖는 이산형 자료 처리부;연속형 자료의 처리를 담당하는 모듈들을 갖는 연속형 자료 처리부;학습할 데이터의 클래스 정보를 처리하는 클래스 정보 처리부;학습할 데이터의 가중치를 저장하는 가중치 저장부 및 학습 데이터 전체의 가중치(Weight) 합을 구하는 가중치 처리부;FPU(Floating Point Unit)의 사용권을 제어하는 FPU 아비터 및 부동 소수점 연산을 수행하는 FPU;상기 클래스 정보 처리부의 내부 클래스 메모리와 가중치 저장부의 접근을 제어하기 위한 메모리 아비터;학습의 결과가 트리의 형태로 저장되는 학습 결과 저장부 및 학습이 완료된 데이터를 대상으로 분류를 수행하는 데이터 분류부;를 포함하는 것을 특징으로 한다.
여기서, 상기 이산형 자료 처리부는, 필요에 따라 확장/축소 가능한 여러 개의 이산형 자료 처리 모듈을 갖는 것을 특징으로 한다.
그리고 상기 이산형 자료 처리부가 갖는 이산형 자료 처리 모듈은, 학습에 필요한 해당 속성의 데이터를 저장하기 위한 메모리와,각 데이터에 따른 가중치 누적합과 데이터 및 클래스에 따른 가중치 누적합 및 알려진 값에 대해서만 클래스에 따른 가중치 누적합을 계산하기 위한 카운터 모듈과,정보량의 이득(Gain) 및 특정 속성을 선택함으로써 얻을 수 있는 정보량(Information) 계산을 수행하는 제어 모듈과,제어 모듈에 종속되어 BaseInfo(데이터 셋에서 클랙스 값 빈도별로 classcount*log(classcount) 를 sum 하여, 이값을 knownitems*log(knownitems)로 부터 뺀 후 knownitems로 나눈 값) 연산을 수행하는 제 1 서브 제어 모듈과,제어 모듈에 종속되어 TotalInfo((Σ_k=0^n N) *log(Σk=0^n N) -  Σ_k=0^n N*log(N))연산을 수행하는 제 2 서브 제어 모듈을 포함하는 것을 특징으로 한다.
그리고 연속형 자료 처리부는 필요에 따라 확장/축소 가능한 여러 개의 연속형 자료 처리 모듈을 갖는 것을 특징으로 한다.
그리고 연속형 자료 처리부가 갖는 연속형 자료 처리 모듈은, 학습에 필요한 해당 속성의 데이터를 저장하기 위한 메모리와,연속형 데이터와의 인덱스를 추적하기 위한 포인터를 저장하기 위한 메모리와,특정 기준보다 작은 값 및 큰 값의 가중치 누적합과 기준에 따른 분류 및 클래스에 따른 가중치 누적합을 계산하기 위한 카운터 모듈과,정보량의 이득(Gain) 및 특정 속성을 선택함으로써 얻을 수 있는 정보량(Information) 계산을 수행하는 제어 모듈을 포함하는 것을 특징으로 한다.
그리고 클래스 정보 처리부는, 각 데이터의 클래스 값을 저장하기 위한 메모리와,각 클래스 값에 따른 가중치 누적합을 계산하기 위한 카운터를 포함하는 것을 특징으로 한다.
그리고 데이터 분류부는, 분류 작업을 수행할 때 로컬 변수를 처리하기 위한 스택과,트리 메모리의 노드를 순회하면서 분류를 하고자 하는 데이터에 따라 각 클래스 별로 가중치를 누적시키는 CLASS SUM 모듈을 포함하는 것을 특징으로 한다.
그리고 재귀적 호출(Recursive Call)에 의해 실행되는 의사 결정 트리의 학습 과정에서 현재 단계에서 사용하던 각종 변수들이 재귀 호출에서 다시 돌아왔을 때도 참조할 수 있도록 변수들을 스택과 같은 형태로 저장하는 변수 저장부를 더 포함하는 것을 특징으로 한다.
그리고 학습 결과 저장부에서의 트리 메모리의 주소 인덱스는 트리 노드의 번호이며, 트리를 순회할 수 있도록 자식 노드 및 부모 노드에 대한 참조 주소, 각 노드에서의 분류에 사용되는 속성, 가지 개수, 분류 기준, 노드의 타입, 현재 노드에서의 아이템 개수에 대한 정보를 노드마다 유지하는 것을 특징으로 한다.
다른 목적을 달성하기 위한 본 발명에 따른 의사 결정 트리의 학습과 분류를 위한 방법은 의사 결정 트리의 학습과 분류를 위한 장치에서의 학습 과정 제어를 위하여, 학습 범위에 있는 이산형 자료 및 연속형 자료에 대한 계수를 수행하는 단계;가장 빈도가 많은 클래스의 아이템 수가 전체 아이템 수와 같거나 일정 수보다 아이템 수가 적은지를 판단하는 단계;이산형 자료 및 연속형 자료에 대한 정보량의 이득(Gain) 및 특정 속성을 선택함으로써 얻을 수 있는 정보량(Info) 계산을 위해 이산형 자료 처리부 및 연속형 자료 처리부를 구동하는 단계;각 속성별로 Gain, Info를 이용해 분류 기준을 선택하는 단계;분류 기준에 따라 트리 노드를 생성하고 학습 데이터를 그룹화하고, 각 그룹별로 가지 노드를 생성하고, 각 그룹별로 재귀 호출하는 단계;모든 가지 노드 별로 재귀 호출 완료 후 현재 노드를 반환하는 단계;를 포함하는 것을 특징으로 한다.
그리고 계수를 수행하는 단계에서, 이산형 자료 처리부와 연속형 자료 처리부 내부의 메모리, 클래스 메모리, 가중치 저장부의 학습 데이터를 이용하여, 동일한 열(Row)의 데이터를 이용해 해당 데이터와 클래스에 해당하는 카운터에 가중치를 누적하여 더하는 것을 특징으로 한다.
그리고 이산형 자료의 정보량의 이득(Gain) 및 특정 속성을 선택함으로써 얻을 수 있는 정보량(Info) 계산을 위하여, 상위 모드에서 분류 기준으로 선택되었던 속성인지를 판단하는 단계;KnownItems(특성 속성의 값이 기재되어 있지 않은 데이터를 제외한 데이터) 수를 계산하고, KnownItems이 없을 경우 동작을 중지할지를 결정하는 단계;ThisInfo(특정 속성에서 속성값별로 TotalInfo를 계산하여 누적한 값) 계산을 수행하고, 제 1 서브 모듈로 하여금 BaseInfo(데이터 셋에서 클랙스 값 빈도별로 classcount*log(classcount) 를 sum 하여, 이값을 knownitems*log(knownitems)로 부터 뺀 후 knownitems로 나눈 값)를 병렬로 연산하도록 제어하는 단계;제 2 서브 모듈로 하여금 TotalInfo((Σ_k=0^n N) *log(Σk=0^n N) -  Σ_k=0^n N*log(N)) 계산을 병렬로 연산하도록 제어하는 단계;ThisInfo와 BaseInfo연산이 끝나면 정보량의 이득(Gain)을 계산하는 단계;를 포함하는 것을 특징으로 한다.
그리고 연속형 자료의 정보량의 이득(Gain) 및 특정 속성을 선택함으로써 얻을 수 있는 정보량(Info) 계산을 위하여, 학습 데이터를 오름차순으로 정렬하고, KnownItems(특성 속성의 값이 기재되어 있지 않은 데이터를 제외한 데이터) , UnknownRate(전체 데이터 중 특성 속성의 값이 기재되어 있지 않은 데이터의 비율), BaseInfo((데이터 셋에서 클랙스 값 빈도별로 classcount*log(classcount) 를 sum 하여, 이값을 knownitems*log(knownitems)로 부터 뺀 후 knownitems로 나눈 값)를 계산하는 단계;정보량의 이득(Gain) 연산을 스킵해도 되는 MinSplit(연속형 속성에서 split 지점으로 삼을 수 있는 최소값) 지점을 계산하기 위한 연산을 수행하는 단계;BestSplitGain(연속형 속성에서 각 지점을 split 지점으로 하였을 때의 Gain에서 가장 높은 값)을 계산하고, 저장된 가중치 합을 이용해서 BestInfoGain(Info Gain중에서 가장 높은 값)의 연산을 수행하는 단계;저장된 데이터 값을 이용해 Bar(분류 수행시의 Split의 기준값)를 계산하는 단계;를 포함하는 것을 특징으로 한다.
그리고 각 학습 데이터를 오름차순으로 정렬한 이후, 작은 데이터에서 큰 데이터로 옮겨가면서 SplitGain(연속형 속성에서 각 지점을 split 지점으로 하였을 때의 gain)을 연산하는 과정을 포함하고, 각 SplitGain을 계산하고, 그 값과 BestSplitGain(연속형 속성에서 각 지점을 split 지점으로 하였을 때의 Gain에서 가장 높은 값)과 비교하여 더 클 경우에 최근에 연산된 값으로 갱신하고,그때의 기준값보다 작은 값의 가중치 누적합과 큰 값의 가중치 누적값을 갱신하고,그때의 값과, 다음 인덱스의 값을 저장하고, BestSplitGain을 선정한 이후에 SplitInfo(연속형 속성에서 각 지점을 split 지점으로 하였을 때의 information) 및 Bar(분류 수행시의 Split의 기준값)의 연산을 수행하는 것을 특징으로 한다.
그리고 의사 결정 트리의 학습과 분류를 위한 장치에서의 분류 과정 제어를 위하여, 최상위 노드, 노트 탐색이 끝난 상태인지에 따라 분류 종료 조건을 판단하여, BestClass(분류의 결과 class) 리턴 여부를 결정하는 단계;잎 노드를 참조할 경우, 가중치(Weight)를 통해 ClassSum(BestClass 계산시 비교를 위해 Weight를 축적한 값)을 갱신하고, 노드 포인터를 변경하고 스택 포인터를 감소시키는 단계;잎 노드를 참조하지 않을 경우, 현재 참조 값이 Unknown(특정 속성의 값이 기재되어 있지 않은 데이터)인지에 따라, 아이템을 통해 가중치(Weight)를 갱신할지를 결정하여 스택에 가중치를 저장하고, 스택 포인터를 증가시키는 단계;분류 기준에 따라 다음 노드를 판단하여 노드의 포인터를 변경하고, 다시 상기 최상위 노드이며 노드 탐색이 끝난 상태인지를 판단하는 단계;를 포함하는 것을 특징으로 한다.
이와 같은 본 발명에 따른 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법은 다음과 같은 효과를 갖는다.
첫째, 의사 결정 트리의 학습 및 분류를 위한 연산을 전용 하드웨어를 통해서 내부 연산을 병렬 처리화 하여 빠른 시간 내에 학습 및 분류 작업을 수행할 수 있다.
둘째, 계수 연산의 병렬화를 통해서 계수 연산에 필요한 사이클을 줄일 수 있다.
셋째, 부동 소수점 연산의 병렬화를 통해서 연산 효율을 높일 수 있다.
넷째, 연속형 속성 Gain 및 Info 연산의 최적화를 통해 연산의 효율성을 높일 수 있다.
도 1은 본 발명에 따른 전체 의사 결정 트리 모듈에 대한 구성도
도 2는 이산형 속성 모듈 및 모듈들의 집합에 대한 구성도
도 3은 연속형 속성 모듈 및 모듈들의 집합에 대한 구성도
도 4는 클래스 모듈의 구성도
도 5는 분류 모듈의 구성도
도 6은 본 발명에 따른 의사 결정 트리의 학습 과정을 나타낸 플로우 차트
도 7은 이산형 속성의 Gain 및 Info 계산에 관한 플로우차트
도 8은 연속형 속성의 Gain 및 Info 계산에 관한 플로우차트
도 9는 본 발명에 따른 의사 결정 트리의 분류 과정을 나타낸 플로우 차트
이하, 본 발명에 따른 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법의 바람직한 실시 예에 관하여 상세히 설명하면 다음과 같다.
본 발명에 따른 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법의 특징 및 이점들은 이하에서의 각 실시 예에 대한 상세한 설명을 통해 명백해질 것이다.
도 1은 본 발명에 따른 전체 의사 결정 트리 모듈에 대한 구성도이다.
그리고 도 2는 이산형 속성 모듈 및 모듈들의 집합에 대한 구성도이고, 도 3은 연속형 속성 모듈 및 모듈들의 집합에 대한 구성도이다.
본 발명은 C4.5 알고리즘의 학습 및 분류 과정을 병렬로 수행할 수 있는 하드웨어 구조를 구현하여 범용 CPU를 이용한 소프트웨어 방식의 C4.5 학습 및 분류 과정을 훨씬 더 빠른 시간에 해낼 수 있도록 한 것이다.
본 발명에 따른 일 실시 예는 소프트웨어 버전의 C4.5와 동일한 기능을 하는 전용 하드웨어 구현을 위한 것으로, C4.5 알고리즘은 RuleQuest사 홈페이지 내에서 알고리즘 개발자인 Ross Quinlan이 공개하고 있는 C4.5R8 소스코드를 참조할 수 있다.
이와 같은 본 발명은 크게 3가지 부분에서 병렬 연산을 통해 의사 결정 트리의 학습 및 분류 작업을 고속화할 수 있다.
첫 번째 방법은 계수(Counting) 연산의 병렬화이다.
C4.5 알고리즘에서 많은 부분을 차지하는 것이 바로 계수 연산이다.
C4.5 알고리즘에서는 각 노드에서 분류 기준으로 어떤 속성을 선택할 것인지를 선택하기 위해, 특정 속성을 선택함으로써 얻을 수 있는 정보량 및 정보량의 이득을 Information 과 Gain의 형태로 연산을 하고, 가장 좋은 속성을 선택해 해당 속성으로 가지를 만든다.
여기서, Information은 특정 속성을 선택함으로써 얻을 수 있는 정보량으로 특정 속성에 대한 TotalInfo((Σ_k=0^n N) *log(Σk=0^n N) -  Σ_k=0^n N*log(N)) 를 아이템 수로 나눈 값이다.
그리고 Gain은 정보량의 이득으로, BaseInfo와 ThisInfo의 차를 총 아이템 수로 나누어 KnownData의 비율로 곱한 값이다.
BaseInfo는 데이터 셋에서 클랙스 값 빈도별로 classcount*log(classcount) 를 sum 하여, 이 값을 knownitems*log(knownitems)로 부터 뺀 후 knownitems로 나눈 값이다.
그리고 ThisInfo는 특정 속성에서 속성값별로 TotalInfo를 계산하여 누적한 값이다.
KnownData는 특성 속성의 값이 기재되어 있는 데이터를 의미한다.
이때 Info 및 Gain 연산을 위해서는 여러 번의 계수 연산이 필요하다. 계수 연산은 다음과 같은 항목들에 대해서 수행된다.
먼저 각 이산형(명목형) 속성에 대하여, 각 속성들에 대해 속성 값별로의 빈도를 체크하는 계수 연산이 필요하며(ValFreq[속성]), 각 속성값과 각 클래스 값에 따라 빈도를 체크하는 계수 연산이 필요하다(Freq[속성][클래스]).
또한, 이산형 자료는 기본 Info 자료의 연산을 위해서 알려진 값에 대해서만 Class별로 계수를 하게 된다(ClassCount[클래스]).
연속형 자료에 대해서는 특정 임계치(threshold)를 기준으로 작은 값과 큰 값에 대하여 계수를 하게 되는데, 연속형의 경우 이산형 자료와 달리 어느 지점이 가장 높은 정보량을 주는지를 체크하기 위해 가능한 모든 임계점을 대상으로 계수를 하고, 이를 통해 매 임계점 마다의 Gain 및 Info를 계산한 후에 가장 높은 정보량을 가지는 값을 해당 속성의 대표 Gain 및 Info 값으로 사용한다.
또한 전체 자료에 대해서 Class 출력에 따른 빈도를 계수하게 되며, 최종적으로 전체 자료에 대한 빈도를 계수하게 된다.
이 과정은 학습 과정에서 트리의 Depth(층) 횟수 만큼 반복되기 때문에, 학습 과정에 있어 계수 과정이 많은 부분을 차지하고 있다고 할 수 있다.
기존의 범용 CPU에서의 구현에서는 한 가지 종류의 계수를 위해 학습데이터의 개수 만큼 스캔해야 하고 이러한 과정이, 각 속성별로, 각 빈도수 계산에 대해 순차적으로 반복될 수밖에 없기 때문에, 이러한 부분에서 상당한 부하가 요구된다.
하지만, 본 발명에서는 이러한 계수 과정을 하드웨어의 장점을 살려서 병렬적으로 수행한다.
즉, 학습 데이터의 개수의 몇 배씩 필요하던 스캔 과정을 단 한 번의 스캔으로 모든 계수 연산을 완료한다.
두 번째 방법은 부동 소수점 연산의 병렬 및 고속화이다.
의사 결정 트리 연산에서 대부분의 연산은 부동 소수점 연산을 수반한다.
계수 연산 역시 표면적으로는 정수의 계수처럼 보일지 모르나, 실제 연산에서는 각 학습데이터에 대해 0~1 사이의 소수로 표현되는 가중치를 계수하기 때문에 모든 계수 연산은 부동 소수점 연산이며, Gain 및 Info 연산 역시 부동 소수점 연산이다.
따라서 부동 소수점 연산의 효율 역시 의사 결정 트리 연산의 성능을 좌우하는 매우 중요한 요소이다.
부동 소수점 연산의 횟수는 속성의 수가 늘어날수록 많아지게 되는데, 이를 해결하기 위해 본 발명에서는 하드웨어의 장점을 충분히 살려 FPU(Float Point Unit) 연산을 병렬로 수행하도록 한다.
또한 FPU로 인한 칩의 면적 Cost와 연산 효율성의 조절을 위해 FPU 사용을 제어하는 FPU Arbiter 개념을 도입하여, 병렬화로 인한 코스트(Cost)를 최적화할 수 있도록 한다.
세 번째 방법은 연속형 속성에 대한 Gain 및 Info 연산의 최적화이다.
기존의 C4.5 R8 구현에서는 연속형 속성에 대하여 Gain 및 Info 값을 계산할 때, 모든 임계점에 대하여 Gain 과 Info를 계산한 후 Best(가장 큰 값)에 해당하는 값을 찾아내는 과정을 수행하였지만, 본 발명에서는 기존 알고리즘의 변형을 통해 불필요한 연산을 제거하고, 각 임계점에 따른 Gain과 Info 값을 저장하기 위한 공간에 대한 비용을 절약할 수 있도록 한다.
이와 같은 방법을 통해 본 발명에서는 의사 결정 트리의 학습 및 분류 연산을 하드웨어에 적합하도록 최적화하고, 하드웨어 구현시의 비용에 대한 최적화 및 성능의 고속화를 이끌어 낼 수 있도록 한다.
첫째, 계수 연산의 병렬화를 통해서 계수 연산에 필요한 사이클을 획기적으로 줄일 수 있다.
이산형 속성의 개수를 n, 연속형 속성의 개수를 m개라고 하였을 때, 의사 결정 트리의 루트 노드에서 전체 학습 데이터만큼 스캔해야하는 계수 연산의 횟수는 전체 아이템의 수와 클래스별 빈도를 계수하는 연산을 포함하여 (n+m)+2로 나타낼 수 있으며, 의사 결정 트리가 모든 속성의 개수만큼 전개되는 최악의 경우
Figure pat00001
이다.
평균적으로 절반의 속성만이 트리 전개에 사용되었다고 가정하여도 계수의 횟수는,
Figure pat00002
이 된다.
이는 부수적으로 필요한 ValFreq(각 속성값 및 클래스에 따른 빈도 계산) 연산 및 ClassCount(각 속성별로 Unknown 값을 제외한 Class 별 빈도 계산) 계수를 제외한 연산의 횟수이다.
ValFreq 및 ClassCount 연산은 전체 학습 데이터를 처음부터 끝까지 스캔하지는 않지만, 속성의 개수만큼 반복되어야 하는 연산이므로 결코 쉬운 연산이 아니다.
여기서, ValFreq 연산은 각 속성값 및 클래스에 따른 빈도 계산이고, ClassCount 연산은 각 속성별로 Unknown 값을 제외한 Class 별 빈도 계산이다.
본 발명에서는 의사 결정 트리 하드웨어 회로의 경우 위에서 언급한 모든 계수 연산을 단 1회에 연산 가능하도록 한 것이다.
둘째, 부동 소수점 연산의 병렬화를 통해서 연산 효율을 극대화할 수 있다.
본 발명에서는 연산의 병렬화를 위해 각 속성별로 Gain 및 Info 연산을 병렬적으로 수행한다.
연산 속도를 극대화하기 위해서는 각 속성별로 FPU를 한 개 이상 할당하게 되면, 속도를 극대화할 수 있지만, 일반적으로 FPU를 하드웨어로 구현하기 위해서는 많은 면적 Cost를 요구하게 된다.
또한 일반적으로 FPU 연산은 한 클럭내에 수행되지 않으며, 파이프라인 형태로 구현되는 경우가 많기 때문에, 앞뒤 연산의 의존성이 있는 경우에는 파이프라인 해저드로 인해 파이프라인을 충분히 활용할 수 없는 단점이 있다.
이러한 점을 해결하고자 본 발명에서는 각 속성들의 Gain 및 Info 연산에 필요한 부동 소수점 연산에 있어 Arbiter 개념을 도입하여, 필요 없는 FPU의 배치로 인한 면적 Cost를 최소화하고, 의존성 없는 연산을 동일한 FPU의 파이프라인을 통해 연속적으로 수행하도록 FPU의 상황을 모니터링하여 적절한 자원을 할당할 수 있는 구조를 갖는다.
이를 통해 FPU로 인한 면적 Cost를 줄이면서도 연산 성능을 극대화할 수 있다.
Figure pat00003
Figure pat00004
표 1 및 표 2는 연속형 속성 Gain 및 Info 연산의 최적화를 통해 연산의 효율성을 극대화하는 알고리즘을 나타낸 것이다.
셋째, 연속형 속성 Gain 및 Info 연산의 최적화를 통해 연산의 효율성을 극대화할 수 있다.
표 1의 알고리즘은 기존의 C4.5에서의 연속형 속성의 Gain 및 Info 연산 알고리즘을 필요한 부분만 간소화한 것이다.
해당 알고리즘에서는 학습데이터의 시작부터 끝 사이에서 모든 지점에 대해 SplitGain과 SplitInfo를 계산하여 배열에 저장한 후에, 배열에 있는 모든 SplitGain중 가장 큰 값을 Gain으로 정하고, 해당 인덱스의 Info 값과 함께 반환하게 된다.
여기서, SplitGain은 연속형 속성에서 각 지점을 split 지점으로 하였을 때의 gain이고, SplitInfo는 연속형 속성에서 각 지점을 split 지점으로 하였을 때의 information이다.
이 과정에서 SplitInfo 연산이 매우 연산량이 많고 무겁다는 점을 감안할 때, 실제 비교에 사용되지 않는 SplitInfo 연산을 매번 수행하는 것은 분명히 불필요한 연산이다.
또한 각 SplitGain과 SplitInfo를 전체 학습 데이터의 개수와 같은 크기의 배열에 저장하기 위해서는 그만큼의 저장 공간이 필요한데, 이 역시 SplitGain 연산 과정에서 가장 큰 값을 비교하게 되면, 이 공간을 줄일 수 있다.
표 2의 알고리즘은 본 발명에서 개선한 알고리즘을 나타내고 있는데, 이 알고리즘에서는 SplitGain을 계산한 직후에 BestVal과 SplitGain을 계산하여 현재의 값이 BestVal보다 클 경우 해당 값으로 BestVal을 갱신하고, 그때의 인덱스 및 이후에 해당 지점에서의 SplitInfo를 연산하기 위해서 BestValFreq 값 등을 갱신한다.
여기서, BestVal은 현재  SplitGain중 가장 큰 값이고, BestValFreq 값은 BestVal이 갱신 될 때, 추후에 BestSplitInfo 계산을 위해 임시 저장하는 현재의 ValFreq값이다.
SplitInfo 연산은 BestVal이 결정된 이후에 단 한 번만 수행된다.
이하의 설명에서 본 발명에 따른 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법을 설명하기 위해서, GOLF라는 예제 데이터를 이용한다.
GOLF라는 데이터는 Outlook(날씨), Windy(풍황), Temperature(온도), Humidity(습도) 정보와 Play(골프를 친다), Don’t Play(골프를 치지 않는다)라는 두 가지 판단을 내리기 위한 자료로써, 이전에 4가지 속성에 대해서 어떤 결정을 내렸는지에 대한 정보를 가진다.
Outlook은 Sunny(맑음), Rainy(비), Overcast(흐림)이라는 세 가지 정보를 가지며, Windy는 True(바람 붐) 혹은 False(바람 불지 않음)이라는 두 가지 정보를 가진다.
Temperature는 온도를 나타내는 연속적인 값이며, Humidity는 습도를 나타내는 연속적인 값이다.
본 발명을 설명하기 위해 GOLF라는 예제를 사용하였지만, 본 발명은 어떠한 학습을 처리하기 위해서도 사용될 수 있음은 당연하다.
도 1은 본 발명에 따른 의사 결정 트리의 학습과 분류를 위한 장치의 전체 구성을 나타낸 것이다.
본 발명에 따른 의사 결정 트리의 학습과 분류를 위한 장치는 이산형(명목형) 자료의 처리를 담당하는 모듈들을 갖는 이산형 자료 처리부(100)와, 연속형 자료의 처리를 담당하는 모듈들을 갖는 연속형 자료 처리부(200)와, 학습할 데이터의 클래스 정보를 처리하는 클래스 정보 처리부(300)와, 학습할 데이터의 WEIGHT를 저장하는 가중치 저장부(400)와, 학습 데이터 전체의 가중치(Weight) 합을 구하는 가중치 처리부(500)와, FPU(Floating Point Unit)의 사용권을 제어하는 FPU 아비터(Arbiter)(600)와, 부동 소수점 연산을 수행하는 FPU(Floating Point Unit)(700)와, 클래스 정보 처리부(300)의 내부 클래스 메모리와 저장부(400)를 여러 연속형 자료 처리부(200)에서 접근할 수 있도록 제어하기 위한 메모리 아비터(800)와, 재귀 호출에 있어 로컬에서 사용되는 변수를 저장하는 변수 저장부(900)와, 학습의 결과가 트리의 형태로 저장되는 학습 결과 저장부(1000)와, 학습이 완료된 데이터를 대상으로 분류를 수행하는 데이터 분류부(1100)와, 전체 로직을 제어하는 제어 유닛(Control Unit)(1200)을 포함한다.
이산형 자료 처리부(100)는 이산형 속성을 담당하기 위한 모듈의 집합으로써 내부에는 여러 개의 이산형 속성 모듈을 갖고 있다.(예제에서는 OUTLOOK과 WINDY를 가진다.)
도 2 는 이산형 자료 처리부(100)의 상세 구성을 나타낸 것으로, 개개의 이산형 속성 모듈(110)을 갖는데, 이산형 속성의 개수에 따라 이산형 자료 처리부(100) 내부에는 여러 개의 이산형 속성 모듈(110) 집합을 가질 수 있다.
이산형 속성 모듈(110)은 메모리(120)와 카운터(130), 제어 모듈(140), 제 1서브 제어 모듈(150), 제 2 서브 제어 모듈(160)을 갖는다.
메모리(120)는 학습에 필요한 데이터 중 해당 속성의 데이터를 저장하기 위한 공간이다.
카운터(130)는 메모리(120)에 있는 데이터의 빈도를 측정하기 위한 카운터(ValFreq)와 데이터 빈도 및 해당 데이터의 클래스에 따른 빈도(Freq)를 측정하기 위한 카운터, 그리고 속성값 중 알려지지 않은(unknown) 값을 제외하고 클래스에 따른 빈도를 측정하기 위한 카운터(ClassCount)로 이루어져 있다.
제어 모듈(140)은 해당 속성에 대하여 Information Gain과 Information 양을 계산하기 위한 모듈이다.
도 1의 제어 유닛(1200)과는 주-종의 관계를 가지며 종에 해당하며, 다시 서브 제어 모듈(150)과 주-종의 관계를 가지며, 제 1 서브 제어 모듈(150)과 제 2 서브 제어 모듈(160)에 대해서는 주에 해당한다.
그리고 제 1 서브 제어 모듈(150)과 제 2 서브 제어 모듈(160)은 제어 모듈(140)의 계산 중 계산에 사용되는 값들 간의 종속성이 없어 병렬로 수행 가능한 BaseInfo 연산과 TotalInfo 연산을 수행한다.
그리고 연속형 자료 처리부(200)는 연속형 속성을 담당하기 위한 모듈의 집합으로 내부에는 여러 개의 연속형 속성 모듈을 갖고 있다.(예제에서는 TEMP와 HUM을 가진다.)
도 3은 연속형 자료 처리부(200)의 상세 구성을 나타낸 것으로, 개개의 연속형 속성 모듈(210)을 갖는데, 연속형 속성의 개수에 따라 연속형 자료 처리부(200) 내부에는 여러 개의 연속형 속성 모듈 집합(210)을 가질 수 있다.
연속형 속성 모듈 집합(210)은 메모리(220)와 포인터(230), 카운터(240), 제어 모듈(250)을 가지고 있다.
메모리(220)는 학습에 필요한 데이터 중 해당 속성의 데이터를 저장하기 위한 공간이다.
포인터(230)는 연속형 자료 값들을 크기순으로 정렬하는 과정에서 이산형 속성 모듈 내부의 메모리(120)와 메모리 주소의 인덱스가 서로 달라지는 것을 보정하기 위해서 필요한 모듈이다.
카운터(240)는 메모리(220)에 있는 데이터에 대해 특정 임계치(threshold)보다 작은 값과 큰 값의 빈도를 측정하기 위한 카운터와, 임계치에 따른 빈도 및 해당 데이터의 클래스에 따른 빈도를 측정하기 위한 카운터로 이루어져 있다.
제어 모듈(250)은 해당 속성에 대하여 Information Gain과 Total Information 양을 계산하기 위한 모듈이다. 도 1의 제어 유닛(1200)과는 주-종의 관계를 가지며, 종에 해당한다.
도 4는 클래스 정보 처리부(300)의 상세 구성을 나타낸 것으로, 학습 데이터의 CLASS 정보를 저장하는 글래스 메모리(310)와 각 CLASS 값에 따른 빈도를 계산하기 위한 카운터(320)를 포함한다.
가중치 저장부(400)는 각 학습 데이터별로 가중치를 관리하기 위한 저장공간으로, 초기에는 1로 초기화되어 있으며, 학습을 진행하면서, 알 수 있는 값인지 없는지에 따라 각 데이터별로 가중치를 조절한다.
그리고 가중치 처리부(500)는 사용 범위에 있는 학습 데이터의 가중치(WEIGHT)의 합을 구하기 위해서 사용하는 카운터이다.
그리고 FPU 아비터(Arbiter)(600)는 FPU(700)를 사용하고자 하는 개별 모듈들에 대해서 요청 신호를 받아서 정해진 원칙에 따라 FPU를 사용할 수 있도록 FPU에 대한 사용권을 할당해 주는 역할을 한다.
FPU가 파이프라인 구조일 경우, 파이프라인 내부의 상황을 고려하여 FPU 자원을 할당한다. 또한 FPU가 여러 개일 경우 사용하지 않고 있는 FPU 혹은 연산 결과에 대해 의존성이 있는지를 체크하여 적절한 FPU에 할당을 하는 역할을 포함하고 있다.
그리고 FPU(700)는 부동 소수점 연산을 수행하는 FPU를 가지고 있는 부분이다. 속성의 개수가 많아지거나, 부동 소수점 연산을 빠르게 수행하기를 원하는 경우에는 FPU의 수를 늘릴 수 있으며, FPU 사용권에 대한 할당은 FPU 아비터(600)가 수행한다.
그리고 메모리 아비터(800)는 여러 모듈에서 값을 참조하게 되는 클래스 메모리(310)와 가중치 저장부(400)를 접근할 때 충돌이 발생하지 않도록, 값을 참조하고자 하는 모듈의 요청을 처리하여, 값을 요청한 모듈이 클래스(CLASS)와 가중치(WEIGHT) 값을 참조하도록 조절하는 역할을 한다.
변수 저장부(900)는 의사 결정 트리의 학습 과정이 재귀적 호출(Recursive Call)에 의해 실행되기 때문에, 현재 단계에서 사용하던 각종 변수들이 재귀 호출에서 다시 돌아왔을 때도 참조할 수 있도록 변수들을 스택과 같은 형태로 저장할 수 있는 메모리이다.
학습 결과 저장부(1000)는 학습의 결과가 트리 형태로 저장되는 메모리이다.
트리 메모리의 주소 인덱스는 트리 노드의 번호이며, 트리를 순회할 수 있도록 자식 노드 및 부모 노드에 대한 참조 주소, 각 노드에서의 분류에 사용되는 속성, 가지 개수, 분류 기준, 노드의 타입, 현재 노드에서의 아이템 개수 등에 대한 정보를 노드마다 유지하도록 되어 있다.
도 5는 데이터 분류부(1100)를 나타낸 것으로, STACK(1110)은 학습 과정에서 학습 결과 저장부(1000)에 있는 노드의 정보를 이용하여 분류 작업을 수행할 때, 각 트리 노드에서의 연산 처리를 위해 필요한 로컬 변수를 처리하기 위한 모듈이다. CLASS_SUM 모듈(1120)은 트리 메모리(1000)의 노드를 순회하면서, 분류 작업을 수행하기 위해서 분류를 원하는 데이터에 따라 각 CLASS별로 가중치를 누적시켜 분류 작업을 수행하는 모듈이다.
분류 과정에서도 부동 소수점 연산이 필요하며, 이는 학습 과정에서 사용하는 FPU(700)을 공유하여 사용한다.
그리고 제어 유닛(1200)은 전체적인 로직의 제어를 담당하는 유닛이다. 제어 유닛(1200)은 전체 회로를 제어하여 학습 및 분류 기능을 수행한다.
이와 같은 본 발명에 따른 의사 결정 트리의 학습과 분류를 위한 장치의 학습 과정, 연산, 분류 과정을 구체적으로 설명하면 다음과 같다.
도 6은 학습 과정의 순서 흐름을 나타낸 것으로 이는 제어 유닛(1200)의 제어 흐름을 나타낸다.
학습 과정은 각 트리의 층(Depth)을 내려갈 때마다 동일한 흐름에 대해서 재귀 호출을 하는 형태로 이루어진다.
학습 과정이 시작되면(S601), 우선 가장 먼저 학습 범위에 있는 학습 데이터에 대한 계수(Count) 작업이 시작된다.(S602)
이 과정에서는 이산형 자료 처리부(100)들 내부에 있는 카운터(130)들과 연속형 자료 처리부(200)들 내부에 있는 카운터(240), 클래스 정보 처리부(300) 내부에 있는 클래스 카운터(320), 가중치 처리부(500)을 이용해 계수 작업을 하게 된다.
계수 작업을 할 때는 이산형 자료 처리부(100)와 연속형 자료 처리부(200) 내부의 메모리(120, 220), 클래스 메모리(310), 가중치 저장부(400)의 학습 데이터를 이용하여, 동일한 열(Row)의 데이터를 이용해 해당 데이터와 클래스에 해당하는 카운터에 가중치를 누적하여 더하게 된다.
S603 단계에서는 해당 층(Depth)에서 Gain 계산 및 Info 계산을 할 필요가 있는지 없는지를 따져보기 위해, 학습 범위 내의 데이터가 모두 동일한 클래스인지를 확인하거나, 데이터의 수가 너무 적지 않은지를 비교하게 된다.
만약 해당 조건에 든다면, 해당 노드를 리턴하게 된다.(S604)
이후에는 각 이산형 및 연속형 속성별로 Gain과 Info 계산을 수행하게 된다.(S605)(S606)
이 계산은 각각의 속성별 모듈별로 모두 병렬로 수행하게 된다.
이때, FPU(700)을 잘 스케줄링해서 함께 사용하기 때문에, 효율적으로 연산을 수행할 수 있다.
Gain과 Info 연산이 끝나고 나면, 각 속성별로 Gain, Info를 이용해 가장 분류에 사용하기 좋은 속성을 골라내게 된다.(S607)
이후에 분류에 사용하는 속성 및 분류 기준에 따라 트리 노드 메모리에 값을 설정하고(S608), 분류 기준에 따라 학습 데이터를 다시 그룹핑 하여(S609), 각 그룹별로 가지를 만들고(S610) 이 함수를 재귀 호출하게 된다(S611), 모든 가지에 대해서 재귀 호출이 끝나고 나면 현재 노드를 반환하고(S612), 종료한다.(S613)
도 7은 도 6의 전체 흐름 중 각 이산형 자료의 Gain 및 Info 연산(S605)을 구체적으로 나타낸 것이다.
이는 이산형 자료 처리부(100) 내부의 제어 모듈(140)의 제어 흐름을 나타내는 것이다.
제어 유닛(1200)이 이산형 자료 처리부(100) 내부의 제어 모듈(140)에 시작 명령을 내리면, 시작된다.(S701)
만약 이 속성이 상위 모드에서 분류 기준으로 선택되었던 속성인지를 판단하여(S702), 그러할 경우 동작이 중지된다(S703). 그렇지 않을 경우, 카운터에서 제공되는 Unknown 데이터의 가중치 합으로부터 KnownItem의 카운트를 계산하며(S704), KnownItem이 하나도 없을 경우(S705) Gain을 연산할 의미가 없으므로 Gain과 Info를 최소값으로 설정하고 동작이 중지된다.(S706)
여기서, Unknown 데이터는 특성 속성의 값이 기재되어 있지 않은 데이터이고, KnownItem은 Unknown 데이터를 제외한 데이터이다.
그렇지 않을 경우 제어 모듈(140)은 ThisInfo 계산을 수행하며(S707), 이와 서로 간에 종속성이 없는 BaseInfo 계산(S708)과 TotalInfo(S709)계산은 서브 제어 모듈(150)과 제 2 서브 제어 모듈(160)에 각각 할당되어, 병렬로 수행하게 된다.
여기서, ThisInfo는 특정 속성에서 속성값별로 TotalInfo를 계산하여 누적한 값이고, BaseInfo는 데이터 셋에서 클랙스 값 빈도별로 classcount*log(classcount) 를 sum 하여, 이값을 knownitems*log(knownitems)로 부터 뺀 후 knownitems로 나눈 값이다.
그리고 TotalInfo는 (Σ_k=0^n N) *log(Σk=0^n N) -  Σ_k=0^n N*log(N)이다.
ThisInfo와 BaseInfo 연산이 끝나면 Gain이 계산되며(S710), 제 2 서브 제어 모듈의 TotalInfo 연산까지 끝나면, 동작이 종료된다.(S711)
도 8은 도 6의 전체 흐름 중 각 연속형 자료의 Gain 및 Info 연산(S606)을 구체적으로 나타낸 것이다.
이는 연속형 자료 처리부(200) 내부의 제어 모듈(240)의 제어 흐름을 나타낸 것이다.
제어 유닛(1200)이 연속형 자료 처리부(200) 내부의 제어 모듈(240)에 시작 명령을 내리면 시작된다.(S801)
연속형 자료 처리부의 경우 가장 먼저 학습 데이터를 오름차순으로 정렬하게 된다.(S802)
이는 연속형 자료의 경우 어떤 지점을 기준으로 해서 큰 자료와 작은 자료로 나누어 각 지점으로 분류했을 때의 Gain을 모두 산출하여 가장 좋은 지점에서 나누어야 하기 때문이다.
정렬이 끝나고 나면, 이산형 속성과 마찬가지로, Unknown Value의 계수 정보로부터 KnownItems를 산출하고, UnknownRate를 계산하며, SplitGain에서 사용할 BaseInfo의 계산을 미리 수행한다.(S803)
여기서, Unknown Value의 계수 정보는 Unknown Value의 빈도이고, UnknownRate는 전체 데이터 중 Unknown 데이터의 비율이다.
그리고 SplitGain은 연속형 속성에서 각 지점을 split 지점으로 하였을 때의 gain이다.
이후 사실상 데이터 중 매우 작은 수와 매우 큰 수의 경우 사실상 BestGain(Gain 중 가장 높은 값)을 만들어 내기가 어렵기 때문에, Gain 연산을 스킵해도 되는 MinSplit 지점(연속형 속성에서 split 지점으로 삼을 수 있는 최소값)을 계산하기 위한 연산을 수행한다.(S804).
이후 앞서 살펴보았던 알고리즘에 따라 BestSplitGain(SplitGain 중에서 가장 높은 값)을 계산한다.(S805).
이 과정에서는 MinSplit보다 작은 데이터와 가장 큰 자료보다 MinSplit만큼 뺀것보다 작은 중간 범위에 해당하는 모든 학습 데이터에 대해 해당 자료를 Split으로 삼았을 때의 Gain을 계산하게 되며, BestSplitGain(SplitGain 중에서 가장 높은 값)을 저장하여, 해당 Gain보다 클 경우에 BestSplitGain을 갱신하고, 이때 차후에 BestSplitInfo(SplitInfo중에서 가장 높은 값) 계산을 위해서 기준보다 작은 데이터의 총 가중치(weight)의 합과 큰 데이터의 총 가중치 합을 저장해둔다.
또한 Bar(분류 수행시의 Split의 기준값)의 계산을 위해서 현재의 데이터 값과 다음 인덱스의 데이터 값도 저장해 둔다.
BestSplitGain의 계산이 끝나게 되면, 저장된 가중치 합을 이용해서 BestInfoGain의 연산을 한다(S806).
이후 저장된 데이터 값을 이용해 Bar를 계산하고(S807), 종료한다.(S808)
도 9는 학습이 진행된 이 후 특정 분류데이터를 이용한 분류과정으로, 제어 유닛(1200)이 분류과정을 수행하는 순서를 나타낸 것이다.
학습을 시작하고 호출을 시작하게 되면(S901), 가장 먼저 분류 종료 조건을 판단한다.(S902)
분류를 위해서는 학습에서 생성한 노드들을 루트부터 잎 노드까지 탐색해야하며 다시 루트 노드로 포인터 값이 되돌아오면 종료된다.
분류 종료 조건의 판단에서 최상위 노드로 다시 도달하였다면 지금까지 연산하여 얻은 BestClass를 리턴하며 최상위 노드가 아니라면 조건을 판단한다.(S903)
잎노드와 중간 노드에서 분류를 위한 연산 과정의 차이를 보이기 때문에 현재 노드가 잎노드인지를 판단하며 이에 따라 잎노드에서 ClassSum(BestClass 계산시 비교를 위해 Weight를 축적한 값)을 갱신하는 조건이나(S904), 가중치를 변경하는 조건으로 분기한다.(S906)
만약 (S903)에서 잎노드를 참조하고 있다고 판단하여 (S904)로 이동하면 현재 노드의 가중치 정보를 ClassSum에 더하여 이를 갱신하며 ClassSum의 경우 최종적으로 분류를 결정하기 위한 비교 대상으로 사용되게 된다.
연산을 완료하면 포인터를 변경하고 스택 값을 감소하여(S905) 이전 부모노드로 노드를 변경하고 계속적으로 분류과정을 진행하게 된다.
만약 (S903)에서 잎노드를 참조하고 있지 않다면 다음 노드 주소를 변경하기 전 가중치를 스택에 저장하여야 하며 이를 위해 가장 먼저 데이터의 Unknown(특성 속성의 값이 기재되어 있지 않은 데이터) 유무를 판단한다.(S906)
이는 Unknown 데이터의 경우 Items 개수를 확인하여 Weight를 재설정해야 하기 때문이며 Unknown 데이터라고 판단되면 가중치를 변경하며(S907), 스택에 변경된 값을 저장한다.(S908)
Unknown 값이 아니라면 이전까지 계산된 가중치 값을 그대로 스택에 저장하게 된다.
가중치를 갱신하고 이를 스택에 저장하게 되면 현재 노드의 가지를 판단하고 포인터를 다음 판단을 위한 노드로 변경한다.(S909)
다시 (S902)부터 현재까지의 흐름도를 반복수행하며 상위노드에 도달하면 BestClass(분류의 결과 class)를 리턴하고(S911) 분류과정을 종료한다.(S910)
이와 같은 본 발명에 따른 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법은 의사 결정 트리의 학습 및 분류를 위한 연산을 전용 하드웨어를 통해서 내부 연산을 병렬 처리화 하여 빠른 시간 내에 학습 및 분류 작업을 수행할 수 있도록 한 것이다.
이상에서의 설명에서와 같이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명이 구현되어 있음을 이해할 수 있을 것이다.
그러므로 명시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 하고, 본 발명의 범위는 전술한 설명이 아니라 특허청구 범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100. 이산형 자료 처리부 200. 연속형 자료 처리부
300. 클래스 정보 처리부 400. 가중치 저장부
500. 가중치 처리부 600. 아비터
700. FPU 800. 메모리 아비터
900. 변수 저장부 1000. 학습 결과 저장부
1100. 데이터 분류부 1200. 제어 유닛

Claims (15)

  1. 이산형 자료의 처리를 담당하는 모듈들을 갖는 이산형 자료 처리부;
    연속형 자료의 처리를 담당하는 모듈들을 갖는 연속형 자료 처리부;
    학습할 데이터의 클래스 정보를 처리하는 클래스 정보 처리부;
    학습할 데이터의 가중치를 저장하는 가중치 저장부 및 학습 데이터 전체의 가중치(Weight) 합을 구하는 가중치 처리부;
    FPU(Floating Point Unit)의 사용권을 제어하는 FPU 아비터 및 부동 소수점 연산을 수행하는 FPU;
    상기 클래스 정보 처리부의 내부 클래스 메모리와 가중치 저장부의 접근을 제어하기 위한 메모리 아비터;
    학습의 결과가 트리의 형태로 저장되는 학습 결과 저장부 및 학습이 완료된 데이터를 대상으로 분류를 수행하는 데이터 분류부;를 포함하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 장치.
  2. 제 1 항에 있어서, 상기 이산형 자료 처리부는,
    필요에 따라 확장/축소 가능한 여러 개의 이산형 자료 처리 모듈을 갖는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 장치.
  3. 제 2 항에 있어서, 상기 이산형 자료 처리부가 갖는 이산형 자료 처리 모듈은,
    학습에 필요한 해당 속성의 데이터를 저장하기 위한 메모리와,
    각 데이터에 따른 가중치 누적합과 데이터 및 클래스에 따른 가중치 누적합 및 알려진 값에 대해서만 클래스에 따른 가중치 누적합을 계산하기 위한 카운터 모듈과,
    정보량의 이득(Gain) 및 특정 속성을 선택함으로써 얻을 수 있는 정보량(Information) 계산을 수행하는 제어 모듈과,
    제어 모듈에 종속되어 BaseInfo(데이터 셋에서 클랙스 값 빈도별로 classcount*log(classcount) 를 sum 하여, 이값을 knownitems*log(knownitems)로 부터 뺀 후 knownitems로 나눈 값) 연산을 수행하는 제 1 서브 제어 모듈과,
    제어 모듈에 종속되어 TotalInfo((Σ_k=0^n N) *log(Σk=0^n N) -  Σ_k=0^n N*log(N))연산을 수행하는 제 2 서브 제어 모듈을 포함하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 장치.
  4. 제 1 항에 있어서, 연속형 자료 처리부는 필요에 따라 확장/축소 가능한 여러 개의 연속형 자료 처리 모듈을 갖는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 장치.
  5. 제 4 항에 있어서, 연속형 자료 처리부가 갖는 연속형 자료 처리 모듈은,
    학습에 필요한 해당 속성의 데이터를 저장하기 위한 메모리와,
    연속형 데이터와의 인덱스를 추적하기 위한 포인터를 저장하기 위한 메모리와,
    특정 기준보다 작은 값 및 큰 값의 가중치 누적합과 기준에 따른 분류 및 클래스에 따른 가중치 누적합을 계산하기 위한 카운터 모듈과,
    정보량의 이득(Gain) 및 특정 속성을 선택함으로써 얻을 수 있는 정보량(Information) 계산을 수행하는 제어 모듈을 포함하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 장치.
  6. 제 1 항에 있어서, 클래스 정보 처리부는,
    각 데이터의 클래스 값을 저장하기 위한 메모리와,
    각 클래스 값에 따른 가중치 누적합을 계산하기 위한 카운터를 포함하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 장치.
  7. 제 1 항에 있어서, 데이터 분류부는,
    분류 작업을 수행할 때 로컬 변수를 처리하기 위한 스택과,
    트리 메모리의 노드를 순회하면서 분류를 하고자 하는 데이터에 따라 각 클래스 별로 가중치를 누적시키는 CLASS SUM 모듈을 포함하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 장치.
  8. 제 1 항에 있어서, 재귀적 호출(Recursive Call)에 의해 실행되는 의사 결정 트리의 학습 과정에서 현재 단계에서 사용하던 각종 변수들이 재귀 호출에서 다시 돌아왔을 때도 참조할 수 있도록 변수들을 스택과 같은 형태로 저장하는 변수 저장부를 더 포함하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 장치.
  9. 제 1 항에 있어서, 학습 결과 저장부에서의 트리 메모리의 주소 인덱스는 트리 노드의 번호이며,
    트리를 순회할 수 있도록 자식 노드 및 부모 노드에 대한 참조 주소, 각 노드에서의 분류에 사용되는 속성, 가지 개수, 분류 기준, 노드의 타입, 현재 노드에서의 아이템 개수에 대한 정보를 노드마다 유지하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 장치.
  10. 의사 결정 트리의 학습과 분류를 위한 장치에서의 학습 과정 제어를 위하여,
    학습 범위에 있는 이산형 자료 및 연속형 자료에 대한 계수를 수행하는 단계;
    가장 빈도가 많은 클래스의 아이템 수가 전체 아이템 수와 같거나 일정 수보다 아이템 수가 적은지를 판단하는 단계;
    이산형 자료 및 연속형 자료에 대한 정보량의 이득(Gain) 및 특정 속성을 선택함으로써 얻을 수 있는 정보량(Info) 계산을 위해 이산형 자료 처리부 및 연속형 자료 처리부를 구동하는 단계;
    각 속성별로 Gain, Info를 이용해 분류 기준을 선택하는 단계;
    분류 기준에 따라 트리 노드를 생성하고 학습 데이터를 그룹화하고, 각 그룹별로 가지 노드를 생성하고, 각 그룹별로 재귀 호출하는 단계;
    모든 가지 노드 별로 재귀 호출 완료 후 현재 노드를 반환하는 단계;를 포함하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 방법.
  11. 제 10 항에 있어서, 계수를 수행하는 단계에서,
    이산형 자료 처리부와 연속형 자료 처리부 내부의 메모리, 클래스 메모리, 가중치 저장부의 학습 데이터를 이용하여, 동일한 열(Row)의 데이터를 이용해 해당 데이터와 클래스에 해당하는 카운터에 가중치를 누적하여 더하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 방법.
  12. 제 10 항에 있어서, 이산형 자료의 정보량의 이득(Gain) 및 특정 속성을 선택함으로써 얻을 수 있는 정보량(Info) 계산을 위하여,
    상위 모드에서 분류 기준으로 선택되었던 속성인지를 판단하는 단계;
    KnownItems(특성 속성의 값이 기재되어 있지 않은 데이터를 제외한 데이터) 수를 계산하고, KnownItems이 없을 경우 동작을 중지할지를 결정하는 단계;
    ThisInfo(특정 속성에서 속성값별로 TotalInfo를 계산하여 누적한 값) 계산을 수행하고, 제 1 서브 모듈로 하여금 BaseInfo(데이터 셋에서 클랙스 값 빈도별로 classcount*log(classcount) 를 sum 하여, 이값을 knownitems*log(knownitems)로 부터 뺀 후 knownitems로 나눈 값)를 병렬로 연산하도록 제어하는 단계;
    제 2 서브 모듈로 하여금 TotalInfo((Σ_k=0^n N) *log(Σk=0^n N) -  Σ_k=0^n N*log(N)) 계산을 병렬로 연산하도록 제어하는 단계;
    ThisInfo와 BaseInfo연산이 끝나면 정보량의 이득(Gain)을 계산하는 단계;를 포함하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 방법.
  13. 제 10 항에 있어서, 연속형 자료의 정보량의 이득(Gain) 및 특정 속성을 선택함으로써 얻을 수 있는 정보량(Info) 계산을 위하여,
    학습 데이터를 오름차순으로 정렬하고, KnownItems(특성 속성의 값이 기재되어 있지 않은 데이터를 제외한 데이터) , UnknownRate(전체 데이터 중 특성 속성의 값이 기재되어 있지 않은 데이터의 비율), BaseInfo((데이터 셋에서 클랙스 값 빈도별로 classcount*log(classcount) 를 sum 하여, 이값을 knownitems*log(knownitems)로 부터 뺀 후 knownitems로 나눈 값)를 계산하는 단계;
    정보량의 이득(Gain) 연산을 스킵해도 되는 MinSplit(연속형 속성에서 split 지점으로 삼을 수 있는 최소값) 지점을 계산하기 위한 연산을 수행하는 단계;
    BestSplitGain(연속형 속성에서 각 지점을 split 지점으로 하였을 때의 Gain에서 가장 높은 값)을 계산하고, 저장된 가중치 합을 이용해서 BestInfoGain(Info Gain중에서 가장 높은 값)의 연산을 수행하는 단계;
    저장된 데이터 값을 이용해 Bar(분류 수행시의 Split의 기준값)를 계산하는 단계;를 포함하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 방법.
  14. 제 13 항에 있어서, 각 학습 데이터를 오름차순으로 정렬한 이후, 작은 데이터에서 큰 데이터로 옮겨가면서 SplitGain(연속형 속성에서 각 지점을 split 지점으로 하였을 때의 gain)을 연산하는 과정을 포함하고,
    각 SplitGain을 계산하고, 그 값과 BestSplitGain(연속형 속성에서 각 지점을 split 지점으로 하였을 때의 Gain에서 가장 높은 값)과 비교하여 더 클 경우에 최근에 연산된 값으로 갱신하고,
    그때의 기준값보다 작은 값의 가중치 누적합과 큰 값의 가중치 누적값을 갱신하고,
    그때의 값과, 다음 인덱스의 값을 저장하고, BestSplitGain을 선정한 이후에 SplitInfo(연속형 속성에서 각 지점을 split 지점으로 하였을 때의 information) 및 Bar(분류 수행시의 Split의 기준값)의 연산을 수행하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 방법.
  15. 제 10 항에 있어서, 의사 결정 트리의 학습과 분류를 위한 장치에서의 분류 과정 제어를 위하여,
    최상위 노드, 노트 탐색이 끝난 상태인지에 따라 분류 종료 조건을 판단하여, BestClass(분류의 결과 class) 리턴 여부를 결정하는 단계;
    잎 노드를 참조할 경우, 가중치(Weight)를 통해 ClassSum(BestClass 계산시 비교를 위해 Weight를 축적한 값)을 갱신하고, 노드 포인터를 변경하고 스택 포인터를 감소시키는 단계;
    잎 노드를 참조하지 않을 경우, 현재 참조 값이 Unknown(특정 속성의 값이 기재되어 있지 않은 데이터)인지에 따라, 아이템을 통해 가중치(Weight)를 갱신할지를 결정하여 스택에 가중치를 저장하고, 스택 포인터를 증가시키는 단계;
    분류 기준에 따라 다음 노드를 판단하여 노드의 포인터를 변경하고, 다시 상기 최상위 노드이며 노드 탐색이 끝난 상태인지를 판단하는 단계;를 포함하는 것을 특징으로 하는 의사 결정 트리의 학습과 분류를 위한 방법.

KR1020140079787A 2014-06-27 2014-06-27 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법 KR101623113B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140079787A KR101623113B1 (ko) 2014-06-27 2014-06-27 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140079787A KR101623113B1 (ko) 2014-06-27 2014-06-27 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20160001375A true KR20160001375A (ko) 2016-01-06
KR101623113B1 KR101623113B1 (ko) 2016-05-20

Family

ID=55165271

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140079787A KR101623113B1 (ko) 2014-06-27 2014-06-27 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR101623113B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112862126A (zh) * 2021-03-04 2021-05-28 扬州浩辰电力设计有限公司 一种基于决策树的智能变电站二次设备消缺的推荐方法
CN113033646A (zh) * 2021-03-18 2021-06-25 深圳市比特安科技有限公司 一种电池协议自动识别方法及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200080401A (ko) 2018-12-18 2020-07-07 재단법인대구경북과학기술원 데이터 분류 규칙 추정 방법, 이를 수행하기 위한 장치 및 기록매체

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030071938A1 (en) 2001-10-16 2003-04-17 Eiji Hamamoto Method of producing polarizing plate, and liquid crystal display comprising the polarizing plate
US20120086107A1 (en) 2010-10-07 2012-04-12 Hitachi Kokusai Electric Inc. Semiconductor device manufacturing method, substrate processing apparatus and semiconductor device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030071938A1 (en) 2001-10-16 2003-04-17 Eiji Hamamoto Method of producing polarizing plate, and liquid crystal display comprising the polarizing plate
US20120086107A1 (en) 2010-10-07 2012-04-12 Hitachi Kokusai Electric Inc. Semiconductor device manufacturing method, substrate processing apparatus and semiconductor device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112862126A (zh) * 2021-03-04 2021-05-28 扬州浩辰电力设计有限公司 一种基于决策树的智能变电站二次设备消缺的推荐方法
CN112862126B (zh) * 2021-03-04 2023-10-13 扬州浩辰电力设计有限公司 一种基于决策树的智能变电站二次设备消缺的推荐方法
CN113033646A (zh) * 2021-03-18 2021-06-25 深圳市比特安科技有限公司 一种电池协议自动识别方法及系统

Also Published As

Publication number Publication date
KR101623113B1 (ko) 2016-05-20

Similar Documents

Publication Publication Date Title
US10776685B2 (en) Image retrieval method based on variable-length deep hash learning
JP6743934B2 (ja) 観測変数間の因果関係を推定するための方法、装置、およびシステム
Yagoubi et al. Dpisax: Massively distributed partitioned isax
CN106682116A (zh) 基于Spark内存计算大数据平台的OPTICS点排序聚类方法
CN100383812C (zh) 信息处理装置和方法
US20160328445A1 (en) Data Query Method and Apparatus
CN109656798B (zh) 基于顶点重排序的超级计算机大数据处理能力测试方法
KR20170134601A (ko) 데이터 처리 방법 및 장치
US20160085857A1 (en) Grouping data using dynamic thresholds
KR101623113B1 (ko) 의사 결정 트리의 학습과 분류를 위한 장치 및 그 방법
Jo et al. A progressive kd tree for approximate k-nearest neighbors
CN112348571A (zh) 基于销售预测系统的组合模型销售预测方法
CN112598128A (zh) 一种模型训练以及联机分析处理方法及装置
Setyono et al. Betawi traditional food image detection using ResNet and DenseNet
CN113761026A (zh) 基于条件互信息的特征选择方法、装置、设备和存储介质
CN117493920A (zh) 一种数据分类方法及装置
JP7167544B2 (ja) 学習装置および学習方法
CN108171785B (zh) 用于光线跟踪的sah-kd树设计方法
CN106445960A (zh) 一种数据聚类方法和装置
CN110298390A (zh) 一种风控模型的特征选择方法及装置
US8994730B2 (en) Optimizing edge crossing computations when creating a drawing of a directed graph having a minimum number of edge crossings
CN112651198A (zh) 非因果电路划分的方法及门级电路并行仿真的方法
Woltmann et al. Learned Selection Strategy for Lightweight Integer Compression Algorithms
CN112308122A (zh) 基于双树的高维向量空间样本快速搜索方法及装置
CN111782658A (zh) 交叉表处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190502

Year of fee payment: 4