기계 학습 파이프 라인에서 기능 선택 및 하이퍼 파라미터 최적화를 어떻게 주문해야합니까?


14

내 목표는 센서 신호를 분류하는 것입니다. 지금까지 내 솔루션의 개념은 다음과 같습니다. i) 원시 신호에서 엔지니어링 기능 ii) ReliefF 및 클러스터링 방식으로 관련 기능 선택 iii) NN, 랜덤 포레스트 및 SVM 적용

그러나 나는 딜레마에 갇혀있다. ii) 및 iii)에는 ReliefF의 k-Nearest Neigbours 또는 센서 신호가 평가되는 창 길이 또는 NN의 각 레이어에 숨겨진 단위 수와 같은 하이퍼 파라미터가 있습니다.

여기에 3 가지 문제점이 있습니다. 1) 튜닝 기능 선택 매개 변수가 분류기 성능에 영향을 미칩니다. 2) 분류기의 하이퍼 파라미터를 최적화하면 기능 선택에 영향을 미칩니다. 3) 가능한 각 구성 조합을 평가하는 것은 어렵습니다.

그래서 내 질문은 다음과 같습니다. a) 단순화 가정을 할 수 있습니까, st 튜닝 기능 선택 파라미터를 튜닝 분류기 파라미터와 분리 할 수 ​​있습니까? b) 다른 가능한 해결책이 있습니까?


reliefF에 대한 heuritsic은 클래스 간 분산을 최대화하고 클래스 간 분산을 최소화하여 우수한 분류기를 나타 내기 때문에 디커플링 기능 선택 튜닝 및 분류기 튜닝이 유효하다고 생각합니다. 따라서 reliefF에 대한 최적의 매개 변수를 조정하면 좋은 분류자가 더 '가능성이 높습니다'. 그러나이 아이디어를 뒷받침하는 수학적 공식을 갖는 것이 매우 좋습니다.
Grunwalski

이 질문의 특정 변형 : 특징 선택은 교차 검증 루틴의 일부 여야합니다 (# : 각 분류 자 ​​하이퍼 파라미터 세트의 경우 : # 각 k- 폴드 CV 실행의 경우 : 1) 특징 선택, 2) 특징 스케일링, 3) 분류 자 ​​적합 4) 테스트 세트 예측?
Nikolas Rieble

1
@NikolasRieble 난 그냥 원래 질문에 대한 답변을 작성하고 또한 답변에 귀하의 질문을 포함
Dennis Soemers

답변:


14

이미 자신이 관찰 한 것처럼 선택한 기능 (기능 선택)이 알고리즘에 적합한 하이퍼 파라미터에 영향을 줄 수 있으며 알고리즘에 대해 선택한 하이퍼 파라미터가 어떤 기능 선택이 최적인지에 영향을 줄 수 있습니다.

따라서 모델에서 성능의 1 %를 짜내는 데 정말로 관심이 있고 필요한 계산량을 감당할 수 있다면 가장 좋은 솔루션은 기능 선택과 하이퍼 파라미터 튜닝을 "동시에"수행하는 것입니다. 그러나 기능 선택 방법에 따라 쉽지 않을 것입니다. 내가 작동하는 방식은 후보로 다른 기능 세트를 사용하고 모든 후보 세트 중 하나의 기능 세트를 추가 하이퍼 파라미터로 처리하는 것과 같습니다.

실제로 그것은 실제로 실현 가능하지 않을 수 있습니다. 일반적으로 가능한 모든 조합을 평가할 여유가 없다면 다음을 권장합니다.

  1. 일부 하이퍼 파라미터에 매우 나쁜 값을 할당하지 않도록 하이퍼 파라미터를 느슨하게 최적화하십시오. 하이퍼 파라미터에 대한 직관적 인 이해가 있거나 손쉬운 방법으로 잘 알려진 여러 기능을 사용하여 매우 간단한 하이퍼 파라미터 최적화 절차를 수행하는 경우 종종 수작업으로 수행 할 수 있습니다.

  2. 100 % 최적화되지 않았지만 최소한 끔찍한 하이퍼 파라미터가있는 기능 선택. 머신 러닝 알고리즘이 어느 정도 구성되어 있다면 마이크로 최적화 하이퍼 파라미터보다 우수한 기능이 성능에 훨씬 중요합니다. 극단적 인 예 : 기능이 없으면 아무것도 예측할 수 없습니다. 클래스 레이블이 포함 된 부정 행위 기능이 있으면 모든 것을 완벽하게 분류 할 수 있습니다.

  3. 위 단계에서 선택한 기능으로 하이퍼 파라미터를 최적화하십시오. 이것은 하이퍼 파라미터를 약간 최적화 할 가치가있는 좋은 기능이어야합니다.


Nikolas가 의견에 게시 한 추가 질문을 해결하기 위해이 모든 것들 (기능 선택, 하이퍼 매개 변수 최적화)이 k- 폴드 교차 검증과 상호 작용하는 방식에 관해 : 나는 그것이 의존한다고 말하고 싶습니다.

폴드 중 하나의 데이터를 전혀 사용하지 않고 동일한 폴드에서 퍼포먼스를 평가할 때마다 편향된 퍼포먼스 추정값을 얻습니다 (퍼포먼스를 과대 평가하게됩니다). 따라서 기능 선택 단계에 대해 모든 접기에서 데이터를 사용한 다음 각 접기에서 성능을 평가하면 각각에 대해 편향된 성능 추정치가 표시됩니다 (좋지 않음). 마찬가지로, 데이터 중심 하이퍼 파라미터 최적화가 있고 특정 접기 (또는 모든 접기)의 데이터를 사용한 다음 동일한 접기에 대해 평가하면 편향된 성능 추정치가 다시 나타납니다. 가능한 해결책은 다음과 같습니다.

  1. 모든 접기 내에서 전체 파이프 라인을 개별적으로 반복합니다 (예 : 각 접기 내에서 기능 선택 + 하이퍼 파라미터 최적화 및 교육 모델 수행). 이렇게하면 k- 폴드 교차 검증 이이 완전한 파이프 라인의 성능에 대한 편견없는 추정치를 제공합니다 .

  2. 초기 데이터 세트를 ''전처리 데이터 세트 ''및 ''트레인 / 테스트 데이터 세트 ''로 분할하십시오. ''전처리 데이터 세트 ''에서 기능 선택 + 하이퍼 파라미터 최적화를 수행 할 수 있습니다. 그런 다음 선택한 기능과 하이퍼 파라미터를 수정하고``train / test dataset ''에서 k- 폴드 교차 검증을 수행합니다. 이를 수행하면 k- 폴드 교차 검증 이 고정 된 피쳐 세트 및 하이퍼 파라미터 값이 주어진 경우 ML 알고리즘의 성능에 대한 편견없는 추정값을 제공 합니다 .

두 솔루션이 어떻게 약간 다른 성능 평가를하는지 확인하십시오. 더 흥미로운 것은 사용 사례에 따라 실제 머신 러닝 솔루션을 어떻게 배포 할 것인지에 달려 있습니다. 예를 들어, 기능 선택의 완전한 파이프 라인 + 하이퍼 파라미터 최적화 + 매일 / 주 / 월 / 년 / 어떻게 든 자동으로 실행되는 교육을 원하는 회사라면 해당 완성의 성능에도 관심이있을 것입니다 파이프 라인과 첫 번째 솔루션이 필요합니다.

반면에, 인생에서 한 번만 기능 선택 + 하이퍼 파라미터 최적화를 수행 할 수 있고 나중에 알고리즘을 약간 정기적으로 재교육 (기능 세트 및 하이퍼 파라미터 값이 고정 된 상태)하면 성능이 향상됩니다. 그 단계의 유일한 것은 당신이 관심있는 것입니다, 그리고 당신은 두 번째 해결책으로 가야합니다


당신은 또한 참조를 제공 할 수 있습니까?
Nikolas Rieble

1
이 게시물에는 잘 알려진 책의 일부 사진이 있습니다 : nodalpoint.com/not-perform-feature-selection . 그들은``가능한 해결책 1 ''에 동의하는 것 같습니다. 나 자신 이외의 다른 경우에 대한 언급이 반드시 필요하지는 않습니까? 나는 거기에 내 추론 / 동기 부여를 제공했는데, 내 의견으로는 체크 아웃 : 참조
Dennis Soemers

1
ESL의 해당 장은 모든 예측 모델러에 대해 100 % 필수 판독 값이어야합니다.
Matthew Drury

soln 1과 관련하여 여러 cv 반복에서 피처 선택 (fs) 및 하이퍼 파라미터 최적화 (ho)를 실행 한 후 최종 피처 세트 및 모델 하이퍼 파라미터를 어떻게 얻습니까? 또한 cv의 iter에서 이것을 수행 할 때 fs를 먼저 실행 한 다음 해당 기능을 사용합니까?
sma

1
케이1

4

하이퍼 파라미터 튜닝과 기능 선택을 동일하게 만드는 접근법에 대해서는 아무도 언급하지 않았으므로 이에 대해 이야기하겠습니다. 이 경우 처음에 원하는 모든 기능을 엔지니어링하고 모두 포함해야합니다.

통계 커뮤니티의 연구에 따르면 기능 선택을 조정 기준으로 삼으려고했습니다. 기본적으로 최상의 예측을하는 데 도움이되는 몇 가지 기능 만 선택하도록 장려하는 방식으로 모델에 불이익을줍니다. 그러나 벌금이 얼마나 커야하는지 결정하기 위해 튜닝 매개 변수를 추가합니다.

다시 말해, 모델이 기능을 선택하도록하고 기능의 수를 제어 할 수 있습니다. 더 이상 어떤 피처를 결정할 필요가없고 나머지 피처와 모델 수를 결정하기 때문에 실제로 계산이 줄어 듭니다.

따라서 매개 변수에 대해 교차 유효성 검사를 수행하면 기능 선택에 대한 교차 유효성 검사도 효과적으로 수행됩니다.

이 기능 선택을 어떤 방식 으로든 통합하는 많은 ML 모델이 이미 있습니다.

  • 일반 SVM과 유사하지만 기능 선택이 가능한 이중 정규화 된 지원 벡터 머신
  • 선형 회귀를 다루는 탄성 그물
  • 신경망에서의 드롭 아웃 정규화 (이것에 대한 참조가 없음)
  • 임의 포리스트는 일반적으로 기능의 임의의 하위 집합을 수행하므로 사용자를위한 기능 선택 처리

요컨대, 사람들은 복잡성을 줄이고 교차 유효성 검사를 수행하기 위해 매개 변수 조정과 기능 선택을 동시에 통합하려고 시도했습니다.


0

나는 당신이 거기에 대해 약간 생각하고 있다고 생각합니다. 기능 엔지니어링의 일부인 기능 선택은 일반적으로 유용하지만 일부 중복 기능은 기계 학습 시스템의 초기 단계에서 크게 해롭지 않습니다. 따라서 모범 사례는 모든 의미있는 기능을 먼저 생성 한 다음이를 사용하여 알고리즘을 선택하고 모델을 조정하는 것입니다. 모델을 조정 한 후 기능 세트를 자르거나 새 기능을 사용하기로 결정할 수 있습니다.

기계 학습 절차는 실제로 반복 프로세스입니다.이 과정에서 피쳐 엔지니어링을 수행 한 다음 일부 알고리즘을 시도한 다음 모델을 조정하고 결과에 만족할 때까지 되돌아갑니다.


당신은 그것이 작동 할 때까지 노력하고 있다는 것을 의미합니다. : D
Grunwalski

ML 절차를 무작위로 시도하지 않습니다. 실제로 ML은 실제로 약간의 해킹입니다.
THN
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.