• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

분류 결과 해석에 대한 질문입니다.

20.07.08 16:45 작성 조회수 353

0

현재 분류까지 학습을 했고 회귀에 들어가기전에 이 강의를 통해 배운것을

실데이터를 통해 실 마케팅에 적용해보려고 여러가지 시도를 해보고 있는중인데

아무래도 경험이 없다보니 책만으로는 결과에 대한 해석의 응용이 힘들어서

결과에 대한 간단한 문의를 하나 드리려고 합니다.

결정트리에 대한 결과이고

랜덤포레스트에 대한 결과이고

LightGBM에 대한 결과입니다.

결과 도출을 위해서 다양한 칼럼을 넣어보기도 하고 하이퍼파라미터 튜닝도 해보고 하는데,

밑으로 내려갈 수록(일반적으로 좋다고 알려진 모델) 컨퓨전 매트릭스가 굉장히 한쪽으로 치우치는

결과가 지속적으로 나오고 있습니다.(네거티브로만 예측하는..?)

해당 모델은 P인 고객에게 마케팅을 할 계획이라서

실제로 N인데 P로 예측하는것을 줄여야 하는데(또 다른 내부적 이슈로 주로 줄여야 하는 부분)

크게 변동이 없네요 ㅠ

질문을 정리하자면

1. 이렇게 한쪽으로 치우친 모델이 나올 때 쓰는 보조 모델 같은게 있을까요?

2. 로우 데이터에서 P가 3, N이 7 정도 인데 이정도 비율에도 일반적으로 SMOTE모델을 적용하나요?

N이 좀 많아서 학습 결과가 N으로 몰리는건가 싶기도 해서 입니다.

(실제로 해볼거긴한데 고견을 좀 구하고자..ㅎㅎ)

감사합니다!

답변 4

·

답변을 작성해보세요.

0

gkgktmd님의 프로필

gkgktmd

질문자

2020.07.13

정말 쉽지 않군요 ㅎㅎ

감사합니다 한번 연구해보도록 하겠습니다!

0

테스트 데이터에서 성능이 잘 안나온다는 것은 학습 데이터와 테스트 데이터의 유형이 많이 차이난다는 것입니다.

학습 데이터로 학습된 패턴이 다른 패턴의 테스트 데이터에 적용되어 테스트 데이터의 성능이 떨어지는 것 같습니다.

1. 학습 데이터로 학습후 Random Forest의 feature importance를 추출하여 중요한 역할을 하는 피처들을 추출.

해당 피처들로 학습데이터와 테스트 데이터가 비슷하게 구성되어 있는지 확인.

가령 학습 데이터에 A, B, C 가 순차적으로 중요한 피처라면 A피처의 학습과 테스트 데이터 각각의 분포도, 값 유형, 그리고 RENEW가 1일때와 0일때 각각 나누어서 마찬가지로  A피처의 학습과 테스트 데이터 각각의 분포도, 값 유형등을 조사해 보십시요. 뭔가 다르기 때문에 다른 결과가 나올 것입니다. 그런 식으로 B, C Feature도 조사해 주십시요.

그리고 LightGBM생성시 boost_from_average=False로 생성해 주십시요

LGBMClassifier(..., boost_from_average=False)

감사합니다.

0

gkgktmd님의 프로필

gkgktmd

질문자

2020.07.10

저자님 말씀을 듣고 이틀동안 이리저리 해보았는데 도저히 뭐가 잘못됐는지 알 수가 없네요 ㅠ

저자님 코드 그대로 따라서 해보았고 코드상으로도 문제가 없는거 같은데..

로우 데이터의 형태이고

renew가 타겟데이터입니다.

gap, age, year은 연속형데이터이고 나머지는 범주형 데이터를 숫자로 인코딩 했습니다.

(gap이 혼자 튀긴 하는데 gap은 추가적으로 넣은 데이터이긴 합니다. 그전에도 결과는 그닥..)

위와 같이 타겟데이터와 피쳐데이터를 분리하였고

결정트리와 랜덤포레스트는 저자님 말씀대로 학습데이터로 해본결과 잘 나왔습니다.

다만 lightgbm이

위와같이 학습데이터로 이밸류에이션을 해도 영 좋지 않게 나오더군요.

(evals에 쓴 데이터는 별도의 데이터입니다)

물론 결정트리와 랜덤포레스트도 테스트 데이터를 넣으면 성능이 나오지 않으니 과적합이고 좋은데이터가 아닌가 싶기도 한데 lightgbm은 왜 학습데이터 조차 안좋게 뱉어내는걸까요?

(gap숫자가 워낙 튀고 범주형, 연속형 피쳐데이터가 혼재되어있어서 그런가 싶기도 하고.. 아무리 짱구를 굴려봐도 해답이 나오지 않네요ㅠ)

길게 질문드려 죄송합니다 ㅠ

0

안녕하십니까,

모델 자체가 성능이 많이 안나오는 군요.

P가 약 26000건 정도 있는데, 아예 성능이 안나오는것 같습니다.

뭔가 학습과정에서 잘못된거 아닌가 싶습니다.  P 데이터가 적다고 볼수 없습니다. 모델이 잘못 만들어진것 같습니다.

테스트 데이터로 evaluation하지 마시고 학습 데이터로 evaluation을 해보십시요.

학습데이터로 학습이 되었기 때문에 동일한 학습 데이터로 evaluation하면 성능이 잘 나와야 합니다. 학습 데이터로 evaluation시 성능이 안나오면 학습 코드에서 뭔가 잘못되었습니다.

제가 원격에서는 전체 소스코드를 볼수가 없어서 어떤 원인으로 모델이 잘못 되었는지 말씀드리기가 애매합니다만, 학습 부분부터 전체 코드를 다시 보셔야 할 것 같습니다.

감사합니다.