inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

캐글 Advanced 머신러닝 실전 박치기

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

819

헬로월드

작성한 질문수 20

0

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

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

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

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

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

kaggle 머신러닝 배워볼래요?

답변 1

1

권 철민

안녕하십니까, 

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

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

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

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

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

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

감사합니다.  

 

0

헬로월드

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

sql사용

0

58

2

좋은 강의 감사드립니다.

0

82

2

8분 40초경 LGBClassifier에서 설정해주신 파라미터들 관련 질문

0

261

2

사용 가능한 RAM을 모두 사용한 후 세션이 다운되었습니다

0

621

1

안녕하세요 선생님

0

238

1

권철민교수님 진심으로 감사드립니다.

0

322

1

안녕하세요 선생님

0

358

1

# credit_card_balance 데이터셋 피쳐엔지니어링

0

273

1

초거대 데이터셋을 Submission하려면?

0

194

1

Library 관련 질문

0

357

3

최적화 함수 에러

0

598

4

LightGBM Iteration관련

0

433

2

안녕하세요 교수님 vm 관련해서 질문이 있습니다.

0

208

1

코드를 실행했는데 오류가 발생합니다

0

2000

2

bayes_opt 회귀 모델에 적용하려면..

0

270

1

타겟값의 로그변환에 대해서

0

786

1

아나콘다 환경설정

0

465

1

깃허브 주소 문의드립니다.

0

364

1

손실함수에 대한 질문

0

351

1

card_bal 데이터셋 시각화 관련 질문입니다

0

237

1

LGBM null값 처리에 관해 질문있습니다

0

546

1

컬럼 관련 질문

0

283

1

히스토그램 x 값

0

369

1

n_iter 횟수 넘음 질문

0

500

2