문제

MATLAB을 사용하여 거대한 (예 : 메모리에 저장할 수없는) 데이터 세트에서 이진 분류 결정 트리를 구축하려고합니다. 본질적으로, 내가하는 일은 다음과 같습니다.

  1. 모든 데이터를 수집하십시오
  2. 시험해보십시오 N 데이터의 결정 기능
  3. 선택하십시오 최고의 의사 결정 기능 데이터 내에서 클래스를 분리합니다
  4. 원래 데이터 세트를 2로 분할하십시오
  5. 분할을 되풀이하십시오

데이터에는 있습니다 케이 속성 및 분류이므로 매트릭스로 저장됩니다. 거대한 행의 수 및 K+1 열. 의사 결정 기능은 부울이며 각 행을 왼쪽 또는 오른쪽 하위 트리에 할당하는 속성에 작용합니다.

지금은 메모리에 보관할 수있는 청크에 파일에 데이터를 저장하고 각 행에 ID를 할당 할 수 있으므로 분할 결정은 모든 파일을 순차적으로 읽고 미래의 스플릿이 ID 번호로 식별됩니다.

더 나은 방식으로 이것을하는 방법을 아는 사람이 있습니까?

편집 : 행의 수는 약 5e8이고 K는 약 500입니다.

도움이 되었습니까?

해결책

분할마다 데이터 세트를 더 작고 작은 서브 세트로 나눕니다. 단일 데이터 파일로 시작하십시오. 스트림으로 열고 한 번에 한 줄을 처리하여 분할 할 속성을 파악하십시오. 첫 번째 의사 결정 기능이 있으면 원래 데이터 파일을 분할 데이터의 한 분기를 보유하는 2 개의 작은 데이터 파일로 분할하십시오. 재발. 메모리로로드 할 수있을 때까지 데이터 파일이 점점 작아져야합니다. 그렇게하면 행을 태그하고 거대한 데이터 파일로 계속 점프 할 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top