2009-07-17 4 views
3

MATLAB을 사용하여 거대한 (즉, 메모리에 저장할 수없는) 데이터 세트에서 이진 분류 결정 트리를 작성하려고합니다. 기본적으로 내가 무엇을하고 있어요 것은 : 거대한 데이터 세트의 결정 트리를 학습하십시오.

  1. 데이터에 N 의사 결정 기능을 시도하는 모든 데이터를 수집
  2. 분할 데이터 내에서 클래스를 분리하기 위해 best decision function을 선택 데이터가 갖는 분할

2

  • 같이 Recurse으로 원래 데이터 세트 k 속성 및 분류이므로 거대한 개의 행과 k + 1 개의 열로 구성된 행렬로 저장됩니다. 결정 함수는 부울이며 각 행을 왼쪽 또는 오른쪽 서브 트리에 할당하는 속성에 작용합니다.

    지금 당장 나는 메모리에 보관되어 각 행에 ID를 할당하는 청크 파일에 데이터를 저장하는 것을 고려하고 있으므로 분할 결정은 모든 파일을 순차적으로 읽음으로써 이루어지며 미래의 분할은 ID 번호.

    더 나은 방법으로이 작업을 수행하는 방법을 아는 사람이 있습니까?

    EDIT은 : ​​행의 m의 수이고, k 5e8 주위에 약 500

  • +0

    그냥 명확히하기 위해 : k는 거대하지 않으며, 행의 수는 얼마입니까? – Reunanen

    +0

    예, 행 수, m >> k – Jacob

    답변

    2

    각 스플릿에있을 경우 더 작은 부분 집합으로 집합을 깨고있다. 단일 데이터 파일로 시작하십시오. 스트림으로 열어서 한 번에 한 행을 처리하여 분할 할 속성을 결정합니다. 첫 번째 결정 기능을 수행하면 원본 데이터 파일을 분할 데이터의 한 지점을 보유하는 2 개의 작은 데이터 파일로 분할합니다. 재발. 데이터 파일은 메모리에로드 할 수있을 때까지 작아 져야합니다. 그렇게하면 행에 태그를 지정하고 거대한 데이터 파일에서 계속 뛰어 넘을 필요가 없습니다.

    +0

    +1 - 감사합니다. 꽤 괜찮은 것 같습니다! – Jacob

    관련 문제