작성
·
707
0
안녕하세요. 강의자님.
계속해서 업데이트되는 강의로 많이 배우고 있습니다.
다름이 아니라, feature selection을 통해 개인 프로젝트에 적용하는 과정에서 dimension 오류를 겪게 되었습니다.
오류를 살펴보니, permutation_importance는 2차원 데이터셋에만 적용될 수 있는것 같습니다.
제가 주로 다루는 데이터셋이 3차원 time-series 데이터이다 보니, scikit-learn에는 3dim 관련 모델이 적어, keras로 LSTM 모델을 만들고 kerasClassifier Wrapper로 model을 감싸서 이용을 하고 있으며, 이를 통해 scikit-learn의 교차학습이나, feature selection을 진행하고자 하였습니다. 하지만 3차원 데이터 셋의 일반적인 feature selection은 다루기 힘들어 질문드리게 되었습니다.
지금은 우선 모델 자체의 예측 (Classification) 과는 상관없이 feature 들의 correlation matrix를 이용해 상관도가 높은 feature을 제거하는 preprocessing 개념의 feature engineering 만 하고 있습니다.
질문을 요약하면,
1. 지금하고 있는 preprocessing 개념의 feature selection이 큰 의의가 있는지?
2. 3차원 데이터셋의 경우 사용할 수 있는 feature engineering이 있을지 ?
수업의 진도와 많이 벗어난것 같아 질문이 조심스럽지만, 아주 단순한 의견이라도 제시해주시면 감사하겠습니다.
감사합니다.
답변 3
1
PCA도 시도 해볼수 있습니다. 단 전체 피처들을 압축한 PCA로 학습하지 않고, 중요 FEATURE들을 압축한 PCA 결과 Feature들을 다시 원본 피처에 추가하는 기법입니다.
만약 Competition을 하신다면 여러 feature들의 업무로직상 average/min/max 등을 구하는 것이 의미있는 또다른 feature들이 될 수 있도록 여러가지 파생 feature들을 고민해 보시는게 좋을 것 같습니다.
1
안녕하십니까,
permutation_importance 패키지가 사이킷런과 Tight하게 coupling 되어 있어서 3차원 형태의 입력 데이터를 적용하기는 어려울 것 같습니다. 그리고 또하나 Deep learning을 사용하신다면 permutation importance와 유사한 방법을 적용하시면 매우 오랜 시간이 소모 될 수 있습니다. 이게 개별 feature들을 변조하면서 evaluation하기 때문에 LSTM으로 하신다면 꽤 오랜 시간이 걸릴거에 반해서 얻는 효과는 미지수여서 해당 방법은 적용을 안하시는게 어떨까 싶습니다.
1. 물론 입니다. 상관도가 서로 높은 feature들을 정리해주는게 Deep learning에서 좋은 효과를 가질 수 있습니다. 다만 feature selection 보다는 적극적인 feature engineering을 적용하시는게 더 좋을 것 같습니다.
2. 3차원 데이터라기 보다는 어떤 유형의 데이터냐에 따라 다를것 같습니다. 가령 시계열을 다루시니, feature selection 보다는 기존 feature들의 moving average(또는 moving sum/max/min) 를 적용해서 추가 feature를 만들어 보시거나(기간은 업무로직에 따라 3일/5일/주간/월간 이 될 수 있을 것입니다) 또는 중요 feature들에 대해서 지수평활법(
감사합니다.
0
좋은답변 감사합니다.
단순 모델의 accuracy에만 집중해서 permutation importance에 걸리는 시간은 미처 고려하지 못한것 같습니다.
시간적 효용성도 앞으로는 고려하는 자세를 가져야겠습니다.
강의자님의 조언대로 한번 이평선같은 feature을 추가해보거나, stationary 한 feature을 추가하고, 데이터양이 방대한 특성상 preprocessing 개념의 feature enginnering을 더욱 고민하는 방향으로 진행하면 될 것 같습니다.
적극적인 feature engineering이라고 하셨는대 제가 바로 생각나는 것 중에서는 PCA 같은 차원축소 느낌의 feature extraction 정도만 생각이 나는데, 혹 selection 과 extraction이외에 할 수 있는 engineering이 있나요?
아직많이 부족하여 계속 질문을 남겨도 정말 친절히 답하여 주셔서 감사할 따름입니다.