2012-07-19 5 views
1

We48을 사용하여 J48 (C4.5) 의사 결정 트리를 성공적으로 작성했습니다. 이제는 내 기능이 얼마나 효과적인지 중요한지 평가하고 싶습니다.Weka 내장 의사 결정 트리에서 기능 중요성을 찾는 방법

한 가지 확실한 방법은 모든 기능을 반복하고 한 번에 하나씩 제거하고 매번 분류 테스트를 다시 실행하여 분류 정확도가 가장 많이 떨어지는 기능을 확인하는 것입니다. 그러나 이는 피쳐 간의 상호 의존성을 숨길 수 있습니다.

그러나 C4.5 알고리즘을 이해하는 데 기반한 다른 접근 방식을 생각하고 있습니다. 트리의 각 분할은 최대 정보 획득 결정을 기반으로하기 때문에 트리의 루트에 가까운 피쳐에서의 분할은 트리의 다른 피쳐가 더 낮은 스플릿보다 정보가 더 많다는 것을 의미해야합니다. 따라서 트리 내의 여러 가지 분할에서 발생하는 주어진 피쳐 F에 대해 루트에서 F의 평균 거리를 계산할 수 있습니다. 그런 다음 평균 거리별로 모든 기능의 순위를 매길 수 있으며 가장 낮은 평균이 가장 가치있는 기능입니다. 이것이 올바른 접근 방법일까요?

+0

평균 거리를 루트 노드에서 일하지 않을 수 있습니다해야하기 때문에 이것은 계산 비용이

이는 정보 획득의 양이 트리의 레벨에서 일정하지 않기 때문에 좋은 척도입니다. 특정 지형지 물에 해당하는 모든 지사에 대한 정보 게인을 합산하는 것이 더 좋을 것입니다. 지사에있는 샘플 수로 각 지사에서의 가중치를 가중합니다. – bogatron

+0

Weka는 각 스플릿에서 정보 획득에 대한 데이터를 제공합니까? 출력 텍스트 파일에 표시되지 않습니다. – stackoverflowuser2010

+0

Weka가 정보 이득을 명시 적으로 저장하는지 모르겠지만 각 노드에서 관측치/샘플 수를 알면 직접 계산할 수 있습니다. 기본 트리 시각화가 각 노드에서 샘플 수를 볼 수있는 옵션을 제공하는지는 모르지만 그 정보를 표시하는 플러그인은 http : //weka.wikispaces입니다.com/Explorer + tree + visualization + plugins – bogatron

답변

2

"속성 선택"탭을 사용해보십시오. PCA 분석을 수행하면 CfsSubsetEval + BestFirst ...를 통해 최상의 기능을 결정할 수 있습니다.

다른 알고리즘으로 동일한 알고리즘을 테스트하고 테스트하고 통계적으로 T- 테스트를 사용하여 결과를 확인하여 통계적으로 의미있는 개선인지 확인합니다.

+0

Weka를 벗어나지 않고 T- 테스트를 수행 할 수있는 방법이 있습니까? – Vladtn

+0

@Vladtn : 실험자 창은 통계적 유의성 테스트를 수행하기위한 것입니다. –

4

괴사가 게시물의 비트 ...하지만 여기 간다 ...

내가 그렇게 만 관련을 사용하여 더 나은 트리를 구축 할 수 있습니다 당신은 속성의 중요성을 알고 싶은 이유가 있으리라 믿고있어 속성.

이 경우 메타 분류기 "AttributeSelectedClassifier"를 사용하여 j48을 분류 자로 사용할 수 있습니다.

그런 다음 속성 하위 집합과 검색 방법에 대한 평가기를 선택해야합니다. 예를 들어, 나는 현재 "WrapperSubsetEval"평가자와 "GeneticSearch"검색 알고리즘을 실험하고 있습니다.

래퍼 평가의 경우 분류자를 선택해야합니다 (실제로 분류자를 작성하여 검색에 의해 테스트 된 각 속성 하위 집합에서 얼마나 효과가 있는지 봅니다.) 제 경우에는 j48을 사용하고 있습니다 분류 자와 함께 사용하려는 분류 자).

이러한 설정을 사용하면 j48 알고리즘과 잘 작동하는 속성의 하위 집합 (진화 알고리즘 사용)이 진화되어 진화 된 속성 집합을 사용하여 데이터에서 j48이 실행됩니다. 그것을 구축하고 많은 나무를 테스트하지만, 좋은 결과를 (그리고 훨씬 더 빨리 손으로 일을하려고 다음) :

관련 문제