• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

feature를 계속 만들어 붙여도 상관 없는건가요?

21.12.29 15:36 작성 조회수 466

0

안녕하세요! 수업 잘 듣고 있습니다.

파이썬 머신러닝 완벽 가이드에서는 차원의 저주라고 해서 피쳐가 늘어날수록 성능이 떨어지는 것으로 배웠습니다.

서로 관련이 있는 피쳐들을 가지고 엔지니어링하면서 피쳐를 또 늘리면, 피쳐간 상관관계가 높아져서 성능에 안 좋은 것으로 아닌가요? (다중공선성...의 문제라 할까요)

전에는 오히려 서로 관련성이 있는 피쳐들을 drop하고, 중요하다고 여겨지는 피쳐만 selection 해야 하는 것으로 이해했는데 이번에는 계속 늘리는 방식으로 수업이 진행되니 어떤게 맞는 것인지 좀 헷갈립니다.

결론적으로... 피쳐를 계속해서 늘려도 괜찮은건가요?

답변 1

답변을 작성해보세요.

1

안녕하십니까, 

일반적인 선형 기반의 알고리즘(예를 들어 선형회귀)은 말씀하신대로 다중 공선성의 영향을 받을 가능성이 있습니다.  머신러닝 초창기만 해도 feature 개수가 많아지면 성능이 떨어지는 특성이 있는 것으로 알려 졌습니다. 하지만 feature 개수가 몇개가 되야 떨어지는건지에 대한 답은 없습니다.

제 경험적으로는 트리 기반 알고리즘에서 비슷한 속성을 계속 가공해서 2~3백개 이상의 속성을 만들어도 성능이 떨어지지 않는 경우가 더 많았습니다. 여기서 가공을 한다는 것이 단순히 곱/합/차 를 통한 가공을 의미하지는 않습니다. 보다 업무적인 특성에 맞게, 찾으려는 해답에 가까운 피처들로 정제하고, 새롭게 생성하는 피처 엔지니어링을 의미합니다. 

파이썬 머신러닝 강의에서도 너무 많은 차원이 존재하면 알고리즘 성능이 저하될 수 있다고 말씀드렸습니다. 유념해셔야 할것은 피처들을 추가적으로 가공하면서 성능을 향상시키는 피처 엔지니어링이 피처 수가 늘어나면서 성능이 떨어지는  부분보다 전반적으로는 더 높습니다.  

그렇다고 무조건 기존 피처들을 단순하게 재가공해서 피처들을 만들어 내는 것은 의미가 없습니다, 피처값을 상수로 곱하기를 한다던가, 비즈니스 연관성이 적은 피처 a와 피처 b를 단순히 더한다던가 해서 무수히 많은 feature 를 만들어내면 오히려 피처가 많아서 성능이 조금씩 저하되는 현상이 생길 수 있습니다.

피처 엔지니어링은 머신러닝의 성능을 높이기 위해서 매우 중요합니다. 타겟값을 보다 잘 유도할 수 있도록 다양한 피처들을 새롭게 만들고 이를 기반으로 모델을 학습해야 합니다.  또한 중요한 것은 이렇게 만들어진 피처들을 기반으로 다시 한번 새롭게 피처를 셀렉션 할 수 있으면 더 좋은 모델이 될 수 있습니다. 

즉 300여개의 피처들을 만들었다면 이들 중에 불필요한 피처들을 제거하는 피처 셀렉션을 잘 조합한다면 더 좋은 모델이 될 수 있습니다. 

감사합니다.  

 

감사합니다. 제가 잘못 알고 있던 부분이 잘 정리되었습니다.