2.9.4 모델 개선
예제 모델의 성능을 더 개선할 수 있는 방법은 없을까? 위음성을 줄이거나 위양성률을 낮추고 정확도를 높이려면 무엇을 해야 할까?
모델 성능이 잘 나오지 않는 것은 신경망의 복잡도가 부족한 경우보다 예측 성능을 좌우하는 강력한 특징 변수가 없기 때문인 경우가 많다. 피마 인디언 당뇨 데이터셋에는 특징 변수가 여덟 개뿐이므로, 이것만으로는 당뇨 발병을 예측하는 데 부족하다고 볼 수도 있다.
모델에 사용할 특징 변수를 늘리는 방법 중 하나로, 특징 공학(feature engineering) 기법을 활용할 수 있다. 특징 공학은 도메인 지식을 활용해 머신 러닝에 사용할 새로운 특징 변수를 생성하는 과정으로, 데이터 과학에서는 상당히 중요하다. 실제로 여러 캐글 대회 우승자들의 성공 비결 또한 머신 러닝 모델 튜닝이 아닌 특징 공학이었다. 그러나 특징 공학은 ‘양날의 검’처럼 신중하게 다뤄야 한다. 부적합한 특징 변수를 추가하면 머신 러닝 모델에 잡음을 더하고 성능을 악화시킬 수 있다.
이 밖에도 특징 변수를 제외해 모델 성능을 개선할 수도 있다. 이 방식을 특징 선택(feature selection)이라고 부른다. 특징 선택은 데이터셋에 잡음(즉, 예측에 중요하지 않은 변수)이 너무 많아 이를 제거해 성능을 개선할 수 있을 때 유용하다. 변수를 선택할 때는 의사 결정 트리(decision tree)를 주로 사용한다.
의사 결정 트리는 머신 러닝 모델의 일종으로 나무와 같은 데이터 구조를 사용한다. 변수 값의 통계를 바탕으로 특징 변수의 중요도를 나열할 수 있는데, 이 기능을 특징 변수 선택에도 유용하게 활용할 수 있다. 먼저 데이터에 의사 결정 트리를 적용해 학습시키고, 트리가 출력한 결과를 바탕으로 중요하지 않은 특징 변수를 제거한 후 신경망에 사용한다. 하지만 특징 선택도 모델 성능에 악영향을 줄 수 있으므로 주의해야 한다.
이번 프로젝트는 특징 공학이나 특징 선택 과정을 거치지 않았지만, 책의 다른 프로젝트는 더욱 복잡한 문제를 풀어야 하므로 필요하게 될 것이다.