분류 모델 선정
본 프로젝트에서는 문자 데이터를 다양한 클래스로 분류해야 하는 과제에 직면하였습니다.
문자 데이터의 성격과 프로젝트 요구 사항을 고려하여, AI 기반 모델을 활용한 분류 방식을 채택하기로 결정하였습니다.
이에 따라, 텍스트 분류에 적합한 여러 모델을 검토한 결과, 다음 네 가지 모델을 후보로 선정하였습니다.
- CNN (Convolutional Neural Networks): 주로 이미지 처리에 사용되나, 텍스트에서도 유효합니다. 단어나 문장의 지역적 패턴 인식을 통해 텍스트 분류에 활용됩니다.
- LSTM (Long Short-Term Memory): 시퀀스 데이터 처리에 최적화된 모델로, 텍스트의 순서와 문맥을 이해하여 복잡한 텍스트 구조를 효과적으로 처리합니다.
- 랜덤 포레스트 (Random Forest): 여러 결정 트리를 활용하여 분류하는 앙상블 방법으로, 데이터의 노이즈에 강하고 오버피팅을 줄여줍니다. 다양한 특성을 가진 텍스트 데이터에 적합합니다.
- 나이브 베이즈 (Naive Bayes): 베이지안 확률 이론을 바탕으로 한 모델로, 계산 효율이 높고 작은 데이터셋에서도 뛰어난 성능을 보입니다. 특히 스팸 감지와 감성 분석에 유용합니다.
학습 데이터 준비
문자 데이터는 시간, 발신인, 문자 내용, 라벨링의 4가지 정보로 구성되어 있습니다.
여기서 문자 내용과 라벨링 2가지 정보를 가지고 학습 데이터를 구성하였습니다.
총 309개의 학습 데이터가 준비되었습니다.
처음에는 더 많은 데이터가 있었지만, 클래스 불균형이 심각하여 클래스의 양을 조절하였습니다.
학습 방법 단계
선정된 모델은 학습 방식에 따라 크게 두 그룹으로 나뉩니다
- 딥러닝 방식: LSTM과 CNN,
- 전통적 머신러닝 방식: 랜덤 포레스트와 나이브 베이즈
딥러닝 방식
- 데이터 전처리: 토크나이저를 사용하여 텍스트를 토큰으로 변환하고 시퀀스로 인코딩, 필요한 경우 패딩을 적용
- 모델 구축: 층을 쌓아 딥러닝 아키텍처를 설계
- 학습: 대규모 데이터 세트를 사용하여 모델을 학습시키고, 가중치를 업데이트
- 평가 및 튜닝: 검증 데이터를 사용하여 모델 성능을 평가하고, 필요한 경우 하이퍼파라미터를 조정
머신러닝 방식
- 데이터 전처리: TF-IDF 벡터라이저를 사용하여 텍스트를 고정된 길이의 수치 벡터로 변환
- 모델 구축: 랜덤 포레스트나 나이브 베이즈와 같은 알고리즘을 선택
- 학습: 준비된 데이터 세트를 사용하여 모델을 학습
- 평가 및 튜닝: 모델의 성능을 평가하고, 필요에 따라 하이퍼파라미터를 조정
텍스트 벡터화 방법 차이
딥러닝과 머신러닝 방식의 학습 방법이 다르기에 텍스트 데이터를 벡터화하는 방식에도 차이가 존재하였습니다.
딥러닝 모델의 토크나이저
- RNN(Recurrent Neural Networks) 계열의 LSTM이나 CNN 같은 신경망들은 텍스트 내 단어의 순서와 문맥이 매우 중요 합니다.
- 즉. 단어의 시퀀스를 이해하고, 각 단어가 문장 내에서 어떻게 작용하는지 학습함으로써, 문맥상의 의미를 포착합니다.
- 토크나이저는 텍스트를 개별 토큰으로 분리하고 이를 순차적인 숫자의 시퀀스로 변환하는 역할을 합니다.
- 이 변환 과정에서 각 단어는 고유한 인덱스를 할당받고, 문장의 단어 순서는 이 인덱스의 시퀀스로 표현됩니다.
머신러닝 모델의 벡터라이저(TF-IDF)
- 전통적인 머신러닝 방식은 고정된 크기의 피처 벡터를 요구하며, 주로 통계적인 방법을 활용해 데이터 패턴을 학습합니다.
- 이 방법은 단어의 순서를 고려하지 않으며, 대신 단어의 중요성을 수치화하여 문서를 벡터 공간에 매핑합니다.
- 머신러닝 모델은 이러한 벡터 공간에서의 거리와 분포를 기반으로 분류 작업을 수행합니다.
- TF-IDF(Term Frequency-Inverse Document Frequency) 벡터라이저는 문서 내에서 단어의 상대적 중요성을 평가하여, 각 단어에 대해 고유한 수치를 부여합니다.
- TF는 특정 단어가 문서 내에서 등장하는 빈도를 나타냅니다.
- IDF는 그 단어가 문서 셋 전체에서 얼마나 흔하게 등장하는지의 반비례 값입니다.
차이점
정리하자면,
- 딥러닝 방식이 시퀀스 정보를 활용할 수 있어 문맥을 이해하는 데 유리하고,
- 전통적인 머신러닝 방식은 문서의 주제를 식별하는 데 강점을 가지고 있으며 계산 효율성이 더 높을 수 있습니다.
결과 분석
테스트 데이터에 대한 모델별 성능 비교는 matplotlib을 사용한 시각화로 진행하였습니다.
결과적으로, 딥러닝 기법이 전통적 머신러닝 기법에 비해 낮은 정확도를 보였습니다.
이는 주로 아래와 같은 이유 때문으로 생각됩니다.
- 데이터 양의 제한: 딥러닝 모델은 대규모의 데이터를 필요로 하는데, 주어진 학습 데이터의 양이 약 300개로 적었기 때문에 딥러닝 모델의 학습에 한계가 있을 수 있었습니다.
- 클래스 불균형: 주어진 데이터셋에는 클래스 간 불균형이 존재합니다. 딥러닝 모델은 특히 불균형한 데이터에 대해 과적합될 위험이 있으며, 소수 클래스의 패턴을 충분히 학습하지 못할 수 있습니다.
결론
프로젝트의 문자 데이터 분류 과제에 있어, 다양한 모델을 검토하고 그 성능을 평가하였습니다.
분석 결과, 랜덤 포레스트가 프로젝트의 특정 조건(제한된 데이터 양, 클래스 불균형 등)하에서 뛰어난 성능을 보임을 확인하였습니다.
따라서, 본 프로젝트의 문자 분류 작업을 위해 랜덤 포레스트 모델을 최종 선택하는 방향으로 진행하였습니다.
'CS > NLP' 카테고리의 다른 글
실습2-1. 텍스트 정보 추출 모델 (with. 개체명 인식(NER)) (0) | 2024.03.26 |
---|---|
실습1-2. 텍스트 분류 모델 API 생성 (0) | 2024.03.21 |
이론 4. 문서 분류 모델 (0) | 2023.11.13 |
이론 3-6. 단어/문장을 벡터로 변환(임베딩) (0) | 2023.11.13 |
이론 3-5. BERT와 GPT 비교 (0) | 2023.11.13 |