어떤 기능이 더 중요한지 추정하기에 어떤 기계 학습 알고리즘이 좋습니까?


12

변경하지 않는 최소 기능 수와 변경 될 수 있고 결과에 큰 영향을 줄 수있는 몇 가지 추가 기능이있는 데이터가 있습니다. 내 데이터 세트는 다음과 같습니다.

특징은 A, B, C (항상 존재 함) 및 D, E, F, G, H (때로는 존재 함)

A = 10, B = 10, C = 10                  outcome = 10
A = 8,  B = 7,  C = 8                   outcome = 8.5
A = 10, B = 5,  C = 11, D = 15          outcome = 178
A = 10, B = 10, C = 10, E = 10, G = 18  outcome = 19
A = 10, B = 8,  C = 9,  E = 8,  F = 4   outcome = 250
A = 10, B = 11, C = 13, E = 8,  F = 4   outcome = 320
...

결과 값을 예측하고 싶습니다. 결과를 결정하는 데 추가 매개 변수의 조합이 매우 중요합니다. 이 예에서 E와 F의 존재는 큰 결과를 가져 오는 반면 E와 G의 존재는 그렇지 않습니다. 이 현상을 포착하기에 적합한 머신 러닝 알고리즘 또는 기술은 무엇입니까?


"때때로 존재한다"는 말은, 당신은 그들의 가치를 가끔 알고있는 것입니까? 아니면 대부분의 경우 역할을하지 않는 것으로 알려져 있습니까? 아니면 다른 것?
David J. Harris

@ DavidJ.Harris "때때로 존재한다"는 말은 특정 훈련 예제가 그 속성을 소유하지 않는다는 것을 의미합니다. 마치 0과 같다. 내 문제에서 내 모든 기능은 주어진 범위 (예 : 5 ~ 15 또는 100 ~ 1000)의 양수입니다.
Benjamin Crouzier

1
이 링크를 보는 것이 좋을 것입니다 eren.0fees.net/2012/10/22/…
erogol

답변:


14

이것은 기계 학습의 주요 연구 분야 중 하나이며 기능 선택이라고 합니다.

일반적으로, 기능의 최상의 하위 집합이 무엇인지 (통합 할 수있는 일부 예측 모델에 입력 할 경우) 말할 수있는 유일한 방법은 가능한 모든 하위 집합을 시도하는 것입니다. 이것은 일반적으로 불가능하므로 사람들은 다양한 휴리스틱 (heuristics)에 의해 기능 하위 집합의 공간을 샘플링하려고합니다 (일부 일반적인 접근 방법은 기사 참조).


3

내 이해에서 변수 중요성의 척도를 찾고 있습니다. 이것들은 몇 가지 다른 이론적 접근 방식을 기반으로 여러 가지 풍미가 있지만, 모두 당신이 말하는 알고리즘을 최적화하는 데 사용되는 방법에 대한 강력한 링크를 가지고 있습니다. 일반적으로 각 머신 러닝 알고리즘에는 표준 최적화 방법이 있습니다. 신경 네트워크에 대한 역 전파, SVM에 대한 순차 최소 최적화, 카이 제곱 유의성 또는 지니 불순물을 포함하는 결정 트리에 대한 다양한 정보 기준 및 통계적 유의성 테스트. 물론, 각각의 알고리즘에 대해 다른 더 새로운 최적화 방법이 종종 제안된다.

각 알고리즘에 대한 이러한 최적화 방법은 기본적으로 현재 모델의 변수 중요도를 정의합니다. 기본적으로 알고리즘이 수행하고있는 최적화 단계의 결과에 대한 근사 또는 해석 가능한 표현을 찾고 있습니다. 그러나 이것은 여러 가지 이유로 문제가됩니다.

  1. 선택이 확률 론적 프로세스 자체라는 점에서 모델 변수 선택에 대한 주어진 변수의 영향을 결정하기 어려움. 변수는 모델 선택에 어느 정도 영향을 미치므로 변수가 모델의 최종 예측에 중요하지 않은 경우에도 모델 형식 자체를 결정적으로 형성했을 수 있습니다. 모델 자체의 생성은 종종 확률 론적 (파티클 스웜 최적화 또는 배깅 방법 등을 사용하여 최적화 됨)을 고려할 때 주어진 변수가 어떻게 형태를 형성했는지 정확히 이해하기 어렵습니다.

  2. 단일 변수의 중요성을 추출하는 어려움은 다른 변수와의 상호 작용 또는 상호 작용에서만 중요 할 수 있으므로 주어진다.

  3. 일부 변수는 일부 관측에만 중요 할 수 있습니다. 다른 관측에 대한 중요성의 부족은 실제 차이를 평균화함으로써 전반적인 중요성의 측정을 혼란스럽게 할 수 있습니다.

이 변수의 중요성에 대한 즉시 해석 메트릭 얻기도 어렵다 정확하게 는 (특히 포기할의 경우) 하나의 숫자를 생성하지 수 있으므로, 같은 모델에 의해 정의. 대신,이 경우 각 변수에 대한 중요도 분포가 있습니다.

이러한 문제를 극복하는 한 가지 방법은 섭동을 사용하는 것입니다. 변수에 랜덤 노이즈를 추가 한 다음 결과에 어떤 영향을 미치는지 확인하여 최종 모델을 분석하는 방법입니다. 장점은 시뮬레이션을 통해 경험적으로 가장 중요한 변수를 찾을 수 있다는 것입니다. 제거 할 경우 예측을 가장 잘 파괴 할 수있는 변수에 대한 질문에 대답합니다. 단점은 변수를 제거 / 교란하더라도 모델 (재교육 된 경우)이 다른 변수를 사용하여 효과를 재구성 할 가능성이 있다는 것입니다. 즉, "가변 중요도"측정 값은 여전히 ​​참으로 만 도출됩니다. 훈련 된 모델의 중요성을 나타내지 만 가능한 모든 모델에 대한 전반적인 중요성은 아닙니다.


3

@Bitwise가 언급했듯이, 기능 선택 또는 기능 추출은 자체적으로 거대한 연구 분야이며 수많은 방법이 있습니다.

다른 대답은 모두 내 의견으로는 유효하지만 결국에는 대부분을 좋아하고 가장 직관적이며 가장 잘 이해하는 방법을 선택합니다. 여전히 두 가지 가능한 옵션을 추가 할 것입니다.

다중 회귀는 아마도 가장 오래된 기술 일 것입니다. 아이디어는 모형을 예측 변수의 반응을 설명하고 반응에 큰 영향을 미치는 예측 변수 (큰 비례 계수)를 유지하는 데 적합합니다. 여기서 당신은 아마 D, E, F 및 G의 부재 코딩 할 것 D=0, E=0, F=0, G =0그런이나 뭐.

가치를 얻지 못한 다른 기술은 공동 관성 분석 ( 정규 분석 의 변형 )입니다. 내가 아는 한 구현이 없으며 처음부터 시작해야합니다 ( 예 : 거기 ). 결과와 일치하는 기능의 최상의 선형 조합을 찾는 선형 방법입니다. 이 블로그 게시물 은 사용 방법의 예를 보여줍니다.


2

정보 획득 (상호 정보라고도 함)을 사용합니다. 자문위원과 저는 SVM에 의한 분류 기능 분석 을 위해이 백서 Cohen, 2008 에 설명 된 접근 방식을 정기적으로 사용합니다 .


2

랜덤 포레스트 는 당신이하고 싶은 일에 매우 편리 할 수 ​​있습니다. R 의 randomForest 패키지 에는 2 가지 중요도 측정 기능이 있습니다. 또한 부분 의존성 플롯을 생성하여 예측 변수가 반응에 미칠 수있는 한계 효과를 시각적으로 검사 할 수 있습니다.


1

나는 여기에 불쾌하지만 이유가 있습니다. 불균일 한 관측 값을 표시기 변수 present | not_present로 대체하려고 생각 했습니까? 설명 에서이 지표 값은 유효한 기능 인 것처럼 보입니다 .D에서 H까지의 요인이 정보가 없기 때문에 그 존재는 더 큰 결과를 나타냅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.