EH_dream

딥러닝 학습 : 로이터 뉴스 분류 실습 _ 25.06.18 본문

딥러닝

딥러닝 학습 : 로이터 뉴스 분류 실습 _ 25.06.18

Song EH. 2025. 6. 18. 18:40

머신러닝 모델 비교부터 Voting 앙상블까지 정리

 

이번 학습에서는 로이터 뉴스 데이터를 이용한 다중 분류 문제를 머신러닝 모델들로 해결해봤다. 텐서플로우에서 제공하는 reuters 데이터셋을 활용했고, 이 데이터는 총 46개의 클래스로 구성되어 있다. 뉴스 본문은 이미 단어 인덱스로 변환된 형태로 제공되어 있어, 별도 토큰화 없이 바로 사용할 수 있었고, 상위 10,000개의 단어만 사용하도록 제한했다.

 

각 뉴스 문장은 길이가 다 다르기 때문에 벡터화를 위해 먼저 텍스트로 디코딩한 후 TfidfVectorizer를 적용했다. 이 과정을 거쳐 전체 문서를 희소 행렬 형태의 수치 데이터로 만들었고, 이를 여러 머신러닝 분류기에 넣어 성능을 비교했다.

 

가장 먼저 로지스틱 회귀 모델을 적용했고, multi_class='multinomial', solver='lbfgs', max_iter=1000으로 설정해 안정적으로 학습시켰다. 그다음은 LinearSVC, 즉 서포트 벡터 머신을 사용했는데, 학습 속도는 빠르면서도 기본적인 성능은 준수했다. 랜덤 포레스트 분류기는 예측이 다소 보수적이지만 전반적으로 안정적인 결과를 보여주었고, Gradient Boosting Classifier는 훈련 시간은 조금 더 걸렸지만 더 미세한 결정 경계를 학습할 수 있었다.

 

Naive Bayes 계열에서는 ComplementNB를 사용했다. 이 모델은 특히 TF-IDF와 같은 희소 벡터에 잘 맞기 때문에 좋은 선택이었고, 빠르게 학습되면서도 꽤 괜찮은 성능을 보여주었다.

 

마지막으로 soft voting 방식의 VotingClassifier를 구성해 로지스틱 회귀, ComplementNB, Gradient Boosting을 결합했다. 확률 기반 soft voting으로 다수의 모델 예측을 평균 내 최종 클래스를 예측하는 방식이다. 이 모델은 로컬 환경 기준으로 학습에 약 30분이 소요되었으며, 단일 모델 대비 더 나은 결과를 보인 경우도 있었다.

 

전체적으로 모델별 accuracy와 macro F1-score를 통해 성능을 비교했고, confusion matrix도 시각화하여 오분류된 클래스 분포를 확인했다. 이번 실습은 다양한 머신러닝 모델의 비교, 그리고 Voting과 같은 앙상블 구성의 실제 효과를 확인할 수 있어 매우 실용적인 경험이었다.

 

GIT : https://github.com/songNene/DeepLearning/blob/main/%EB%94%A5%EB%9F%AC%EB%8B%9D_%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC_%EB%8B%A4%EC%A4%91%EB%B6%84%EB%A5%98/%EB%89%B4%EC%8A%A4%20%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%20%EB%8B%A4%EC%A4%91%EB%B6%84%EB%A5%98.ipynb