30

기계 학습 작업을위한 기능에 대한 조언이나 의견이 있습니까? 좋은 입력 기능은 신경망에서도 중요합니다. 선택된 피쳐는 필요한 수의 숨겨진 뉴런과 필요한 학습 예제 수에 영향을 미칩니다.기계 학습을위한 기능을 엔지니어링하는 방법

다음은 문제의 예이지만 일반적으로 피쳐 엔지니어링에 관심이 있습니다.

동기 부여의 예 : 퍼즐 (예를 들어, 15-puzzle 또는 Sokoban)을 볼 때 은 무엇 좋은 입력 할 것인가? 두 주 중 어느 것이 목표에 더 가깝습니까?

답변

46

좋은 기능 엔지니어링에는 두 가지 구성 요소가 있습니다. 첫 번째는 해결하려는 작업의 속성을 이해하고 사용중인 분류 자의 강점과 한계점과 상호 작용할 수있는 방법을 이해하는 것입니다. 두 번째는 실험적 작업으로 기대를 테스트하고 실제로 작동하는 것과 작동하지 않는 것을 확인합니다. 문제의 당신의 위에서 아래 이해 실험 동기를 부여하고 당신이 그 실험 배울 아래에서 위로 정보는 문제의 더 나은 이해를 얻을 수 있습니다 :

반복적으로 수행 할 수 있습니다. 문제에 대해 더 깊이 이해하면 더 많은 실험을 할 수 있습니다. 귀하의 분류

피팅 기능의 당신이 logistic-regression 같은 간단한 선형 분류 또는 선형 커널과 SVM을 사용하고 있다고 가정 해 봅시다. 분류 자의 입력으로 측정하고 제공 할 수있는 다양한 속성 사이에 흥미로운 상호 작용이있을 것이라고 생각되면 수동으로 해당 상호 작용을 캡처하는 기능을 만들고 제공해야합니다. 그러나 SVM을 다항식 또는 가우스 커널과 함께 사용하는 경우 입력 변수 간의 상호 작용은 모델 구조에 이미 포착됩니다.

마찬가지로 SVM은 일부 입력 변수가 다른 입력 변수보다 훨씬 큰 값 범위를 사용하면 제대로 수행되지 않을 수 있습니다 (예 : 대부분의 기능은 0 또는 1의 값을 취하지만 하나의 기능은 -1000과 1000 사이의 값을 가짐) . 따라서 SVM에 대한 피쳐 엔지니어링을 수행 할 때 분류기에 제공하기 전에 피쳐 값을 표준화 해 볼 수 있습니다. 그러나 decision trees 또는 random forests을 사용하는 경우 이러한 분류 기준은 다양한 기능을 사용하는 값 ​​간의 크기 차이에 강하기 때문에 이러한 정규화는 필요하지 않습니다.

노트 특히 당신이 복잡한 상태 공간 문제를 해결에서 찾고 있다면

해결 퍼즐에, 당신은 Q-learning 같은 reinforcement learning 방법을 사용할 수 있습니다. 이것은 시스템에 의한 일련의 중간 단계에 의해 목표에 도달하는 학습 과제를 구조화하는 데 도움이됩니다.

+0

책에서 언급 된 속성 간의 상호 작용을 인식합니까? 입력에서 누락 된 항목을 인식하는 방법은 무엇입니까? –

+0

상호 작용은 대부분의 통계 교과서에 언급되어야합니다. 그러나 Wikipedia에 대한 개요는 다음과 같습니다. http://en.wikipedia.org/wiki/Interaction_%28statistics%29. – dmcer

+6

입력 내용에 누락 된 항목에 대해서는 '충분한 기능이 있는지 어떻게 알 수 있습니까?'라고 가정합니다.분류 기준에 맞춰 정규화 방법을 바꾸었지만 교육 데이터의 성능이 여전히 좋지 않은 경우 더 많은 기능에 대해 브레인 스토밍을 시도해야합니다. 그러나 교육 세트 성능이 좋지만 테스트 세트 성능이 좋지 않은 경우, 교육 세트에 지나치게 적합하므로 일부 기능을 제거하거나 정규화를 원할 것입니다. – dmcer