기능 엔지니어링이 작동하는 이유는 무엇입니까?


20

최근 ML 문제에 대한 더 나은 솔루션을 찾는 방법 중 하나는 기능을 만드는 것입니다. 예를 들어 두 기능을 합산하면됩니다.

예를 들어, 우리는 어떤 종류의 영웅의 "공격"과 "방어"의 두 가지 기능을 가지고 있습니다. 그런 다음 "공격"과 "방어"의 합인 "total"이라는 추가 기능을 만듭니다. 이제 이상하게 보이는 것은 터프한 "공격"과 "방어"조차도 "총"과 거의 완벽하게 상관되어 있으며 여전히 유용한 정보를 얻는다는 것입니다.

그 뒤에 수학은 무엇입니까? 아니면 내가 추론하고 있습니까?

또한 kNN과 같은 분류 자에게 "전체"가 항상 "공격"또는 "방어"보다 큰 문제가되지 않습니까? 따라서 표준화 후에도 다른 범위의 값을 포함하는 기능이 있습니까?


두 기능을 합산하는 것은 일반적으로 "기능 엔지니어링"을 나타내는 것은 아닙니다.
xji

답변:


21

질문 제목과 내용이 일치하지 않는 것 같습니다. 선형 모델을 사용하는 경우 공격과 방어 외에도 총 기능을 추가하면 상황이 악화됩니다.

먼저 기능 엔지니어링이 일반적으로 작동하는 이유에 답하겠습니다.

그림은 천 단어의 가치가 있습니다. 이 그림은 기능 엔지니어링에 대한 통찰력과 그것이 작동하는 이유를 알려줍니다 (picture source ).

여기에 이미지 설명을 입력하십시오

  • 데카르트 좌표의 데이터는 더 복잡하며 두 가지 유형을 분류하기위한 규칙을 작성하고 모델을 작성하는 것은 상대적으로 어렵습니다.

  • 극좌표의 데이터는 훨씬 쉽습니다. 에 간단한 규칙을 작성하여 두 가지 유형을 분류 할 수 있습니다.아르 자형

이것은 데이터의 표현이 중요하다는 것을 말해줍니다. 특정 공간에서는 다른 공간보다 특정 작업을 수행하는 것이 훨씬 쉽습니다.

여기서 나는 당신의 예에서 언급 한 질문에 대답합니다 (총 공격 및 방어에 대한)

실제로이 공격 및 방어 예에서 언급 한 기능 엔지니어링 은 선형 모델과 같은 많은 모델에서 제대로 작동 하지 않으며 일부 문제가 발생할 수 있습니다. 다중 공선 성을 참조하십시오 . 반면에 이러한 기능 엔지니어링은 의사 결정 트리 / 임의의 포리스트와 같은 다른 모델에서 작동 할 수 있습니다. 자세한 내용은 @Imran의 답변을 참조하십시오.

답은 사용하는 모델에 따라 일부 기능 엔지니어링이 일부 모델에는 도움이되지만 다른 모델에는 도움이되지 않는다는 것입니다.


합은 추가와 공선 일 필요는 없습니다. 예를 들어 내 대답을 참조하십시오.
Kodiologist

15

우리가 사용하는 모델 유형은 기존 기능의 특정 조합을 배우는 데 매우 효율적이지 않을 수 있습니다.

ad0+<01+0

의사 결정 트리는 개별 피처 축을 따라서 만 분할 할 수 있으므로 모델은 선에 맞게 계단을 만들려고 시도합니다.

여기에 이미지 설명을 입력하십시오

보시다시피 이것은 새로운 데이터로 완벽하게 일반화되지는 않습니다. 우리는 의사 결정 경계 아래에 있고 그 반대의 경우에도 실제 결정 선 위에 원을 가질 수 있습니다.

그러나 a+d기능으로 추가 하면 의사 결정 트리에서 문제가 간단 해집니다. 개인 ad기능을 무시하고 단일 a+d<0의사 결정 그루터기로 문제를 해결할 수 있습니다 .

여기에 이미지 설명을 입력하십시오

+

요약하면, 사용중인 모델 유형에 따라 특정 추가 기능이 도움 이 될 수 있으며 기능을 엔지니어링 할 때 데이터와 모델을 모두 신중하게 고려해야합니다.


1
이것이 바로 요점입니다. 기능 선택과 모델 선택을 함께 고려해야합니다. 사용되는 모델 유형을 고려하지 않고 피처 선택에 대해 시도하고 추론하는 것은 일반적인 함정입니다.
Imran

1
예를 들어, 당신은 다음 선형 회귀와 같은 일을 시도하는 경우 ad충분하고 추가 a+d기능으로하는 것은 차이가 없다.
Imran

더 명확하게하기 위해 답변을 업데이트했습니다.
Imran

1
또한 대각선을 따라 분할하려면 한 번의 분할이 필요합니다. 당신이 그린 계단은 7 분할을 "사용합니다".
Accumulation

3

totaltotalattackdefenseattackdefensetotalattacktotaldefense17

또한 kNN과 같은 분류 자에게 "전체"가 항상 "공격"또는 "방어"보다 큰 문제가되지 않습니까? 따라서 표준화 후에도 다른 범위의 값을 포함하는 기능이 있습니까?

예측 변수를 표준화하려면 예측 변수가 모두 생성 된 후에 수행해야합니다.


1
이것이 사실입니까? 확실히, 간단한 선형 모델에서는 그렇지 않습니다. 매트릭스 [attack, defense, total]는 물론 순위 2입니다. 불이익을받은 선형 모델과 같은 것으로 생각하면 차이가 생길 수 있지만, 완전히 이해하기보다는 직관을 기반으로합니다. 그래서 만약 당신이 설명 할 수 attackdefense강한 상관 관계되지 않는다 total(때 일어나는 attack하고 defense, 왜 강한 음의 상관 관계 있습니다) total도움이 될 수 있습니까?
Cliff AB

1
@CliffAB 가늠자, 나는 여기 조금 glib했다. 생성 된 지형지 물이 다른 예측 변수와 밀접하게 연관되어 total있지 attack않거나 or 와 밀접하게 상관 될 필요가 없을 때 유용 할 수 defense있지만 선형으로 인해 동일한 모형에서 두 예측 변수와 합계를 사용하지는 않습니다. 의존성, 세 가지 두 가지 사이의 강한 상관 관계를 의미합니다 .
Kodiologist

1

일반적인 대답을 제공하기 위해 대부분의 경우 기능 엔지니어링은 데이터에서 의미있는 기능을 추출하는 것이므로 모델에 더 많은 정보를 제공하면 분명히 더 잘 작동해야합니다. 데이터가 'name.surname@domain.country-code'형식의 이메일 주소로 구성되어 있다고 가정하십시오. 모델에서 그대로 사용하면 각 사람마다 고유 한 전자 메일이 표시되므로 많은 정보를 알 수 없습니다. 하나의 전자 메일이 다른 사람과 다른 사람의 것일 수 있음을 알려줍니다. 기능 공학을 사용하면 그러한 주소에서 가능한 성별 (이름), 가족 배경 및 민족성 (성), 국적 (도메인) 등에 대한 정보를 추출 할 수 있습니다. 정보가 많지 않습니까?


1

"기능" 합계로 무엇 을 달성하려고 합니까? 영웅 만 비교하는 경우 공격방어 가 더 유용 할 수 있습니다. 빌드 유형 (방어 지향 방식과 방어 지향 방식)이 유용 할 경우 공격 / 방어 가 더 유용 할 것입니다. 또는 MyAttack - YourDefense 가 더 유용 할 수도 있습니다.

그것은 실제로 목표에 달려 있으며 문제에 대한 추가 지식을 주입하여 더 나은 답변을 얻을 수 있습니다. 사람들이 로그제곱비율 과 기능을 만들 수있는 모든 종류의 방법을 던지는 것을 들었을 지 모르지만 결론은 "유용한"작업이 현재 작업에 달려 있고 결정한 도메인으로 데이터를 변환하는 것입니다. 더 간단합니다.

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