Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

텍스트데이터를 다루는 코드의 정확도를 높이는 시도 #3

Open
DINFBO opened this issue Sep 27, 2021 · 8 comments
Open
Assignees

Comments

@DINFBO
Copy link
Contributor

DINFBO commented Sep 27, 2021

목적

  • 텍스트데이터를 다루는 코드의 정확도를 높이는 시도

상세내용

  • 데이터 전처리, 피쳐엔지니어링, 모델 고도화, 파라미터 조정, 앙상블

참고사항

  • 시도했던 데이터 종류, 모델 종류, 세부 파라미터, 앙상블 여부에 대한 정보를 기록해서 잔디에 올려주세요.
@DINFBO DINFBO pinned this issue Sep 27, 2021
@zosungwoo
Copy link
Contributor

현재 우울증/불안장애/자살 3가지의 분류로 한국어 데이터 300개/100개/100개 정도 수집 및 작성하였는데,
한국어 Augmentation은
https://github.com/catSirup/KorEDA/tree/master
KorEDA로 진행해야할 것으로 생각됩니다.
사용하는 Augmentation 기법은 상대적으로 위험이 적은 RD(Random Deletion), RS(Random Swap) 두 개를 사용할 예정인데, 이것 마저도 성능이 그리 좋아보이진 않습니다. 그래도 연구 결과에 의하면 사용하는 것이 모델 성능 향상에 도움을 준다는 얘기가 있어서 이렇게 진행해 데이터를 늘려보려고 합니다.

@DINFBO
Copy link
Contributor Author

DINFBO commented Sep 28, 2021

네 그러면 RD,RS로 나누어서 2개의 그룹을 Augmentation로 생성하고
원그룹 + RD
원그룹 + RS
원그룹 + RD + RS
이렇게 3가지 케이스로 나누어서 성능을 비교해보면 될 것 같습니다.

@zosungwoo
Copy link
Contributor

네 알겠습니다. 그리고

  1. 조현병 분류의 데이터 추가
  2. 다른 분류들 텍스트 데이터 보충 (부족하다 생각됨)
    진행해보고 업로드해보도록 하겠습니다.

@DINFBO
Copy link
Contributor Author

DINFBO commented Sep 29, 2021

  1. 조현병은 정신쪽이기보다는 인지쪽이라 시간관계상 다루기 어려울것같습니다.
  2. 네 보충되는것들은 따로 라벨링을 해서 구분되면 좋을 듯 합니다.

@zosungwoo
Copy link
Contributor

우선 우울증/자살/불안장애 세가지 분류로 데이터 전처리 및 augmentation 진행해본 거 업로드 하였습니다.
EDA_data 폴더 안에 csv 파일이 레이블링까지 진행해놓은 파일입니다. (0: 우울증, 1: 자살, 2: 불안장애)
피드백해주신대로 RS, RD, RD+RS 따로 데이터를 만들어보았습니다
이 원본데이터와 Augmentation된 데이터로 모델 학습하여 성능이 어떤지 확인해보고 알려드리겠습니다.

@zosungwoo
Copy link
Contributor

우선 제가 전처리했던 우울증/자살/불안장애 분류의 RD+RS Augmentation 진행된 데이터로 테스트해본 결과입니다. 3 epochs 으로 짧게 학습시켜봤는데 trainingset:98, testset:97로 너무 정확도 높은 결과가 나와서, Augmentation 자체는 결과에 긍정적으로 작용한 것 같습니다만, 근본적으로 데이터가 많지 않아서 일반화가 잘 된 모델이라고만은 할 수 없을 것 같습니다. 그래도 테스트 해본 결과 새로운 문장에 대한 예측은 나름 잘 되는 것으로 보입니다!

그리고 이건 단순히 자살/불안장애/우울증 세가지 분류의 데이터만으로 학습/추론을 한 것이기 때문에 일반적으로 중립적인 문장이 섞여 있을 경우에는 어떻게 결과가 나올지 시험해봐야할 것 같습니다.

@zosungwoo
Copy link
Contributor

original
5 epochs -> training set 100%, test set 97.5%

RS
5 epochs -> training set 99%, test set 100%

RD
5 epochs -> training set 98.7%, test set 97%

RD+RS
5 epochs -> training set 99%, test set 98%

모두 테스트해본 결과, RS가 결과가 제일 잘 나오는 것 같습니다
제가 새로운 문장 만들어서 테스트해봐도 다른 데이터에서는 잘못나오던게 RS로 augmented된 데이터에선 결과가 잘 나오더라고요
RD는 아무래도 랜덤으로 중요할수도 있는 단어들을 지워버리기 때문에 '나 진짜 죽고 싶어' -> '나 진짜 싶어' 이런 문장도 자살위험으로 분류해서 결과가 조금 아쉬운 것 같습니다
그래서 Random Swap만 사용해 augmented된 데이터를 사용해야할 것 같습니다.

그리고 추가적으로 1. 근본적으로 데이터가 부족한 문제, 2. 우울증 분류의 데이터가 더 많아서 그런지, 테스트문장을 우울증으로 분류하는 결과가 더 많이 나오는 문제, 3. 중립적인 문장도 추가하여 분류
이 세가지도 빠른 시간안에 해결해보도록 해보겠습니다

@yhkee0404
Copy link
Contributor

yhkee0404 commented Oct 15, 2021

증상자의 질환이 구체적으로 우울/자살/불안장애로 나눌 때 유용할 것 같습니다. 그런데 유증상자인지 무증상자인지 자체를 판단할 수 있을 때, 감정 개수가 2개가 아니라 다양한 경우에는 원래 전체적인 정확도가 낮은 것 같다는 생각이 듭니다. 예를 들어 다음 모델에서는 행복이 80%대인데 반해 평균은 50%대입니다. F1 score를 전체적인 스칼라로 구하는 게 아니고 감정별로 각각 구합니다. 그러면 이렇게 감정 반응이 크게 감지되는 행복과 비행복 2개로만 즉 감정 종류를 줄여서 분류하면 훨씬 좋은 결과를 보일 수 있을 것 같습니다: https://github.com/JhnLee/pytorch-bert-korean

@sukso96100 sukso96100 transferred this issue from another repository Dec 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants