건설기계 오일 상태 분류 AI 경진대회

Knowledge Distillation 전략 공유

2022.11.15 06:27 2,621 조회

안녕하세요.


일반인이라 수상 자격은 없지만 관심있어서 대회 참가했습니다.

아직 대회 초반이라 비교적 수월하게 상위권에 들어왔네요.


"Knowledge Distillation"이라는 주제가 익숙하지 않아서 혼란스러웠는데요, 제가 내린 결론은 다음과 같습니다.

"전체 X로 확률을 예측하는 Classifier를 만들고, 부분 X로 그 확률을 설명하는 Regressor를 만들면 된다."


베이스라인 코드가 딥러닝쪽이다보니 방향 설정을 그쪽으로 잡으신 분들이 많은 것 같은데,

주어진 데이터는 일반적인 정형데이터고 나중에 2차 심사과정에서의 설명할 내용들을 위해서라도

Tree 기반의 알고리즘들, lightgbm이나 xgboost 등을 활용하는 것이 좋아보입니다.


저 역시 그랬고요.


다만 처음에 빨리 대충만들어서 코드도 남아있지 않은 것이 제일 점수가 높고

이후로 더 많은 것을 고민하고 이것저것 섞은 것은 점수가 그리 높지는 않네요.

0.585 ~0.591 정도에서 오락가락합니다.


그리고 리더보드 스코어 점수만으로 모든 것을 평가하는 것은 아니기 때문에 나머지 점수들도 미리 잘 챙기시구요.

로그인이 필요합니다
0 / 1000
Sum_in
2022.11.15 17:30

조언 감사드립니다!

피꼬막
2022.11.16 00:41

안녕하세요. 모델링을 진행하면서 궁금한 것이 있어 따로 질문을 드려도 괜찮을까요? 

Statistics
2022.11.16 06:32

이 글에서 댓글로 질문하시면 적절한 선에서 답을 드릴 수 있습니다:)

피꼬막
2022.11.16 15:08

음...아직 경험이 부족해 단일 모델을 사용만으로는 더 이상 성능 향상에 어려움이 있습니다. 위에서 말씀해주신 분류 모델링 + 회귀 모델링이 어떤 의미인지 간략하게 알 수 있을까요??

Statistics
2022.11.16 16:58

편의상 train 데이터에 포함된 x를 '전체x', test 데이터에 포함된 x를 '부분x', 전체x는 있지만 부분x에 없는 애들을 '나머지x'라고 하겠습니다. 
나머지x는 train에는 있지만 test에는 없는 애들인거죠.

단일 모델을 사용하셨다는 것은 train 데이터에서 부분x와 y를 활용해 classification 모델을 적합했다는 의미일텐데요, 
나머지x가 꽤 중요한 역할을 하고 있기 때문에 당연한 결과일 수 있습니다. 

그래서 'Knowledge Distillation'이라는 전략이 나왔다고 볼 수 있습니다.  여러가지 방향이 있지만 제가 말씀드린 방법은 아래와 같습니다.

1. train 데이터에서 전체x로 y를 설명하는 classification 모형 적합
2. 1.의 모형에 전체x를 넣어서 예측값(1일 확률) 계산
3. train 데이터에서 부분x로 2.의 예측값을 설명하는 regression 모형 적합
4. test 데이터의 부분x를 3.의 모형에 넣어 최종 예측값 계산 

피꼬막
2022.11.17 16:09

음... 그렇다면 2번 과정에서 예측값 즉, 1일 확률을 계산한다는 의미는 따로 후작업 필요하다는 뜻인가요??? 아니면 0 또는 1을 맞추는 0.5의 확률을 의미하는건가요???

Statistics
2022.11.17 18:30

2.에서 나오는 1일 확률은 각 관측치별로 다르고 0부터 1 사이에서 다양한 값을 갖습니다.

그럼 3.부터는 "왜 Y가 1일까?"가 아니라 "왜 확률이 0.x로 다를까?"를 설명하는 것으로 방향이 달라지구요.

피꼬막
2022.11.18 16:49

오.. 이제야 좀 이해가 된 것 같아요!! 음... 그렇다면 앙상블이나 다수의 분류 모델을 통해 나온 결과값 기반으로 확률에 대한 회귀 모형을 만든다는 것으로 이해하면 될까요??
 

alphakoo
2022.11.22 21:40

Knowledge Distillation 라고 해서 딥러닝으로만 해결하는 줄 알았는데 이렇게 해결하는 방법도 있네요...
시도해봐야겠어요 ^^

감사합니다!!! Statistics님

bowondata
2022.11.16 17:29

안녕하세요 데이콘 처음 참여해보는 학생입니다.
혹시 전처리도 하셨나요?? ㅠㅠ 

Statistics
2022.11.17 05:05

안녕하세요.
활용하는 알고리즘과 전략에 따라 전처리 방향이 달라질텐데요,
일반적으로 tree 기반의 알고리즘들은 categorical 변수들만 지정해도 문제 없이 잘 돌아갑니다.
아직까지는 따로 전처리를 한 것은 없습니다. 어차피 수상은 제외라 간절하지 않기도 하고요ㅎㅎ

bowondata
2022.11.17 12:08

감사합니다!!! :)

무아
2022.11.17 08:37

전략 공유 감사합니다.

paul77ms
2022.12.30 11:05

삭제된 댓글입니다

alphakoo
2022.11.24 20:52

안녕하세요! Statistics 님의 조언을 참고하여 대회에 참여하고 있는 초보입니다.
2가지 궁금한 것이 있어서 댓글을 남깁니다!

1. 이 방식이 knowledge distillation 이 맞나요?
1)전체 X에 대해 classifier 모형 적합을 하고, 2)전체 X에 대해서 predict_proba로 확률을 구한 후 
3)부분 X에 대해 regressor 모형 적합을 하고, 4) 부분 X에 대해서 predict로 값을 구한 후
5) 4)에서 구한 값이 0.5 이상이면 1, 미만이면 0으로 한다.

2. 최적 parameter를 찾는 제 아이디어가 맞나요?
1) classifier()의 최적 파라미터를 찾고, 2) regressor의 최적 파라미터를 찾아서 모델을 만든다.