코드가 꽤 길어서 다른 사람 코드는 나만 봤음
비교 대상
- 유리 분류 : https://www.kaggle.com/uciml/glass
– 내 코드 : https://www.kaggle.com/dapin1490/glass
- 성별 예측 : https://www.kaggle.com/hb20007/gender-classification
– 내 코드 : https://www.kaggle.com/dapin1490/glass
유리 분류 모델 개선하기
파악한 문제점 : 은닉층 수와 노드 수, 배치 사이즈를 너무 적게 쓴다. 손이 작다!
개선 가능한 사항 : 속성 삭제 기준 바꾸기, 전체적인 수 증가, 체크포인트 사용.
상세 수정 사항
K겹 교차검증 사용 → 미사용(실행하는 데 시간이 너무 오래 걸린다)
체크포인트 미사용 → 사용
속성 삭제 기준 : 상관 관계 “값”이 작은 것 → 상관 관계 “절댓값”이 작은 것
저것만 해도 모델 정확도가 0.98 정도 나와서 은닉층 노드 등 다른 인자는 바꾸지 않았다.
결과
정확도 약 0.86 → 0.98
배운 것
체크포인트로 언제나 최고의 모델을 간직하세요! 여러 번 실행하기 귀찮다고 K겹 교차검증을 남용하지 맙시다!
성별 예측 모델 개선하기
파악한 문제점 : 손이 작다!
개선 가능한 사항 : 은닉층 수, 노드 수, 배치 사이즈 증가. 체크포인트 사용. 속성의 원 핫 인코딩.
상세 수정 사항
속성 값 원 핫 인코딩(pd.get_dummies) 미사용 → 사용
K겹 교차검증 사용 → 미사용
dense_1 : 노드 수 8 → 60, input_dim = 4 → 16
dense_2 : 노드 수 4 → 35
에포크 수 : 100 → 1000
배치 사이즈 : 10 → 30
조기 종료 대기 : 10 → 100
결과
정확도 약 0.52 → 약 0.60
배운 것
클래스뿐만 아니라 속성에도 원 핫 인코딩을 할 수 있다! 그 효과 또한 클래스에 원 핫 인코딩을 할 때와 같다. 같은 속성에 속하는 값이라도 서로 연관이 전혀 없을 때 사용할 수 있다.
내가 계산하는 것도 아닌데 숫자 좀 크게 크게 쓰자. 아무도 데이터셋의 사이즈가 작다고 은닉층 노드까지 적어져야 한다고 말하지 않았다.
덤
그냥 봐도 속성과 클래스의 상관 관계가 확실한 데이터셋은 잘만 만지는데 내가 관계 없다고 믿으면 뭘 해도 정확도가 안 나오는 것 같다.. 분명 이게 그런 게 아닐텐데? 근데 진짜 저 성별 분류 셋 빼고는 다 잘하거든요. 그리고 내가 유일하게 관계성을 못믿는 게 저 성별 분류 셋이야. 이게 대체 불신이 먼저인지 저조한 성과가 먼저인지 닭이 먼저인지 달걀이 먼저인지.