• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

후속 질문4 드립니다!

20.09.26 20:06 작성 조회수 155

0

이전 답변으로 feature engineering에 대해 조금 더 감을 잡게 되었습니다! 감사합니다^^

이후부터는 질문은 최대한 3~4개 안으로 쪼개서 올리도록 하겠습니다!

1. 이전의 질문에 대한 저의 답입니다!

아래 eval_metric 콜백에 프린트를 찍어보았습니다.

제가 생각하기에

y_true는 검증 데이터셋의 실제 클래스값,

y_pred는 검증 데이터셋에 대한 예측 클래스값 (단, 원핫인코딩으로 각각의 클래스값에 대한 probability로 값이 들어가있는 것으로 확인됩니다)

이라고 생각했고,

그래서 아래처럼 변환을 했습니다!

2. 이전 답변에 의하면, 하이퍼 파라미터 튜닝이 우선된 후, 피쳐 엔지니어링을 하는 것이 조금 더 낫다는 말씀이신가요? 그 이유가 궁금합니다! (사실 저는 피쳐 엔지니어링을 거치면 이후 최적 하이퍼 파라미터가 또 바뀌기 때문에 피쳐 엔지니어링이 선행돼야된다고 생각했었습니다)

3. lightGBM에서 eval_metric 을 다른걸 사용하면 피팅되는 모델도 확연히 달라지나요?

답변 1

답변을 작성해보세요.

0

1. LightGBM에서 f1_macro score가 metric으로 사용될 때 뭔가 문제가 있는것 같습니다.

아래 이슈 확인 부탁드립니다.

https://github.com/Microsoft/LightGBM/issues/1483

아래와 같이 변경해서 수행해 보시지요.

a. evalution 용 f1 macro함수 생성.

def evaluate_macroF1_lgb(truth, predictions):  
    pred_labels = predictions.reshape(len(np.unique(truth)),-1).argmax(axis=0)
    f1 = f1_score(truth, pred_labels, average='macro')
    return ('macroF1', f1, True) 

b. objective를 multiclass로 적용

clf  = lgb.LGBMClassifier(max_depth=-1, learning_rate=0.1, objective='multiclass' )

2. 이전 답변에 그렇게 말씀드리지 않은것 같습니다만, 왜 그렇게 생각하셨는지 말씀해 주시면 정정해 드리겠습니다.

피처엔지니어링을 대강 하시고 하이퍼 파라미터 튜닝을 하시는게 좋습니다. 그리고 하이퍼 파라미터 튜닝은 피처 엔지니어링을 부분적으로 수행할 때마다 적용하실 필요 없습니다. 대략 적으로 피처 엔지니어링 하시고 어느정도 최적화 하이퍼 파라미터를 적용한 다음에는 피처 엔지니어링에 계속 집중한 다음, 피처 엔지니어링 더이상 할게 없다고 생각되면 다시 하이퍼 파라미터 튜닝하시는 순으로 적용하시면 됩니다.