딥 러닝을 이용한 기능 선택?


9

심층 모델을 사용하여 각 입력 기능의 중요성을 계산하고 싶습니다.

- 그러나 나는 깊은 학습을 사용하여 기능 선택에 대한 하나의 종이 발견 깊은 기능 선택을 . 각 피처에 연결된 노드 레이어를 첫 번째 숨겨진 레이어 바로 앞에 삽입합니다.

DBN (Deep Faith Network)도 이러한 종류의 작업에 사용될 수 있다고 들었습니다. 그러나 DBN은 PCA와 같은 기능의 추상화 (클러스터) 만 제공하므로 치수를 효과적으로 줄일 수는 있지만 각 기능의 중요성 (무게)을 계산할 수 있는지 궁금합니다.

DBN으로 기능의 중요성을 계산할 수 있습니까? 딥 러닝을 사용하여 기능을 선택하는 다른 알려진 방법이 있습니까?

답변:


10

거의 모든 예측 모델에 대해 취할 수있는 한 가지 접근 방식은 먼저 모델을 학습하고 정확도를 찾은 다음 하나의 입력에 대해 노이즈를 추가하고 정확도를 다시 확인하는 것입니다. 각 입력에 대해 이것을 반복하고 잡음이 예측을 어떻게 악화시키는 지 관찰하십시오. 입력이 중요하면 노이즈로 인한 추가 불확실성이 해 롭습니다.

노이즈의 분산이 해당 입력의 분산에 비례하도록 설정하십시오.

물론 노이즈는 임의적이며 임의의 효과로 인해 하나의 입력이 중요하지 않은 것처럼 보이기를 원하지 않습니다. 교육 예제가 거의없는 경우 매번 새로운 노이즈가 추가 된 각 교육 예제의 정확도 변화를 반복적으로 계산해보십시오.

의견에 대한 답변 :

이 분석은 변수를 완전히 제거하여 수행 할 수도 있지만 노이즈 추가와 비교하여 몇 가지 단점이 있습니다.

  • 입력 중 하나가 일정하다고 가정하면, 바이어스 용어처럼 작동하여 예측에서 역할을 수행하지만 정보를 추가하지 않습니다. 이 입력을 완전히 제거하면 퍼셉트론이 잘못된 바이어스를 받고 있기 때문에 예측 정확도가 떨어집니다. 이렇게하면 정보를 추가하지 않아도 입력이 예측에 중요한 것처럼 보입니다. 노이즈를 추가해도이 문제는 발생하지 않습니다. 모든 입력을 평균이 0이되도록 표준화 한 경우이 첫 번째 문제는 문제가되지 않습니다.

  • 두 입력이 상관되어 있으면 한 입력에 대한 정보가 다른 입력에 대한 정보를 제공합니다. 상관 된 입력 중 하나만 사용하는 경우 모델을 잘 학습 할 수 있으므로 분석에서 하나의 입력이 도움이되지 않는다는 것을 알 수 있습니다. 입력 중 하나를 방금 제거한 경우 첫 번째 점과 같이 예측 정확도가 크게 낮아져 중요하다는 것을 나타냅니다. 그러나 노이즈를 추가해도이 문제는 발생하지 않습니다.


2
휴, 나는 그 기능을 제거함으로써 그렇게하는 것에 익숙하다. 기능을 노이즈로 대체하면 어떤 이점이 있습니까?
DaL

@Dan 나는 기능이 완전히 노이즈로 대체되어야한다는 것을 의미하지는 않았다. 단지 약간의 노이즈가 추가되어야한다는 것이다. 피처를 제거하면 중요하지 않은 피처가 평균이 0이거나 다른 변수와 상관되어있는 경우 중요해 보일 수 있습니다. 설명하기 위해 답변을 편집했습니다.
Hugh

의견 감사합니다. 그러나 실제로 많은 기능 세트 (입력)가 있으며 많은 기능 세트가 서로 관련되어 있습니다. 이 경우 계산 시간이 n에 가까울 수 있습니다! 조합을 고려해야합니다. 복잡한 기능 조합을 고려할 수있는 딥 러닝 기반 모델을 적용하고 싶습니다.
z991

다 변수 선형 회귀 분석에서 @ z991은 완벽하게 상관되지 않은 변수에서도 동일한 문제가 발생할 수 있습니다. 종종 각 변수를 한 번에 하나씩 소개하거나 모든 변수를 사용하여 한 번에 하나씩 제거합니다. 최상의 조합을 간단히 계산할 수있는 방법이 없습니다. 선형 회귀 분석으로 해결되지 않으면 NN에 대한 해결책을 찾지 못할 것입니다. 동일한 접근 방식을 취하고 한 번에 하나씩 변수를 제거하고 n을 피할 수 있습니다! 계산.
Hugh

1
@Huge 의견에 감사드립니다. 동의합니다. 그러나 내가 정말로 알고 싶었던 것은 딥 러닝 또는 신경망으로 각 기능의 중요성을 계산하는 방법이었습니다. 그들은 몇 가지 특징 추출 (숨겨진 층)을 사용하기 때문에 특징의 중요성을 분석하기가 어려웠습니다. 각 기능의 전체 무게를 계산할 수 있지만 상당히 복잡하고 시간이 많이 걸리는 것 같습니다. 연결된 종이는 단일 선형 레이어를 사용했으며 이것이 좋은 생각이라고 생각합니다. 네트워크에서 기능의 중요성을 분석하는 다른 더 나은 방법을 알고 싶었습니다.
z991

2

이 백서를 확인하십시오 : https://arxiv.org/pdf/1712.08645.pdf

드롭 아웃을 사용하여 기능의 순위를 지정합니다.

...이 작업에서는 입력 피처 레이어에서 드롭 아웃 개념을 사용하고 해당 피처 별 드롭 아웃 속도를 최적화합니다. 각 피처는 확률 적으로 제거되므로, 본 방법은 피처 배깅과 비슷한 효과를 만들어 내고 (Ho, 1995) LASSO와 같은 다른 비 포기 방법보다 상관 된 피처의 순위를 더 잘 관리합니다. 우리는 우리의 방법을 RF (Random Forest), LASSO, ElasticNet, 한계 순위 및 딥 피처 선택 및 다양한 휴리스틱 (heuristics)과 같은 DNN에서 중요성을 도출하기위한 몇 가지 기술과 비교합니다.


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