스팸 메일 데이터에 대한 이해
- 1) 스팸 메일 데이터 다운로드
2) 다운로드 받은 파일을 데이터프레임으로 로드하고 총 샘플의 수 확인
3) 상위 5개의 샘플만 출력
Unnamed라는 이름의 3개의 열은 텍스트 분류를 할 때 불필요한 열,
v1열은 해당 메일이 스팸인지 아닌지를 나타내는 레이블이며 ham은 정상 메일을 의미하고 spam은 스팸 메일을 의미함,
v2열은 메일 본운을 담고 있음
4) Unnamed: 2, Unnamed: 3, Unnamed: 4열을 삭제하고 v1열에 있는 ham과 spam 레이블을 각각 숫자 1과 1로 변경
5) 데이터프레임의 정보를 확인
v1열은 정수형, v2열은 문자열 데이터를 갖고 있음을 알 수 있음
6) Null 값을 가진 샘플 여부를 확인
7) 데이터에 중복이 있는지 확인
8) 중복 샘플을 제거하고 전체 샘플 수를 확인
9) 레이블 값의 분포를 시각화
10) 레이블 값의 수치 확인
11) 레이블 값의 수치를 비율 %로 환산
12) v2열과 v1열을 X 데이터와 y 데이터라는 X_data, y_data로 저장함
13) 훈련 데이터와 테스트 데이터를 고르게 8:2 비율로 분리
14) 레이블이 고르게 분포되었는지 확인
15) 케라스 토크나이저를 통해 훈련 데이터에 대해서 토큰화와 정수 인코딩 과정을 수행
16) 각 단어에 대한 등장 빈도수를 이용해 빈도수가 1회로 낮은 단어들이 훈련 데이터에서 얼마만큼의 비중을 차지하는지 확인
17) 패딩을 위해 단어 집합의 크기 + 1를 vocab_size에 저장
18) 전체 데이터에서 가장 길이가 긴 메일과 전체 메일 데이터의 길이 분포를 확인
19) 가장 긴 메일의 길이에 해당하는 189를 사용해 정수 인코딩된 훈련 데이터의 길이를 전부 189로 패딩하여 바꿈
RNN으로 스팸 메일 분류하기
- 1) 하이퍼파라미터인 임베딩 벡터의 차원은 32, 은닉 상태의 크기는 32로 지정하고 다 대 일 구조의 RNN을 사용
2) 마지막 시점에서 두 개의 선택지 중 하나를 예측하는 이진 분류 문제를 수행하는 모델이므로
출력층에 로지스틱 회귀, 활성화 함수로 시그모이드 함수, 손실 함수로 크로스 엔트로피 함수를 사용하여 4번의 에포크 수행
3) 하이퍼파라미터인 배치 크기는 64이며, validation_split=0.2를 사용하여 훈련 데이터의 20%를 검증 데이터로 분리함
이후 검증 데이터를 사용해 기계가 훈련 데이터에 과적합되고 있지는 않은지 확인하는데 사용함
4) 테스트 데이터에 대해서 정확도를 확인
5) 에포크에 따른 훈련 데이터와 검증 데이터를 비교하기 위해 그래프로 시각화
데이터의 양이 적어 과적합이 빠르게 시작되므로,
검증 데이터에 대한 오차가 증가하기 시작하는 시점의 바로 직전인 에포트 3~4 정도가 적당함을 알 수 있으며
에포크 5를 넘어가기 시작하면 검증 데이터의 오차가 증가하게 됨
코드
GitHub - GaGa-Kim/ML_Study: 머신러닝 스터디 ⚙
머신러닝 스터디 ⚙. Contribute to GaGa-Kim/ML_Study development by creating an account on GitHub.
github.com
'ML > 딥 러닝을 이용한 자연어 처리' 카테고리의 다른 글
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - GRU로 IMDB 리뷰 감성 분류하기 (0) | 2022.12.22 |
---|---|
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - LSTM으로 로이터 뉴스 분류하기 (0) | 2022.12.22 |
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - 케라스를 이용한 텍스트 분류 (0) | 2022.12.21 |
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - 텍스트 분류 (0) | 2022.12.21 |
[딥 러닝을 이용한 자연어 처리 입문] 09. 워드 임베딩 - 독투벡터 (0) | 2022.12.20 |
스팸 메일 데이터에 대한 이해
- 1) 스팸 메일 데이터 다운로드
2) 다운로드 받은 파일을 데이터프레임으로 로드하고 총 샘플의 수 확인
3) 상위 5개의 샘플만 출력
Unnamed라는 이름의 3개의 열은 텍스트 분류를 할 때 불필요한 열,
v1열은 해당 메일이 스팸인지 아닌지를 나타내는 레이블이며 ham은 정상 메일을 의미하고 spam은 스팸 메일을 의미함,
v2열은 메일 본운을 담고 있음
4) Unnamed: 2, Unnamed: 3, Unnamed: 4열을 삭제하고 v1열에 있는 ham과 spam 레이블을 각각 숫자 1과 1로 변경
5) 데이터프레임의 정보를 확인
v1열은 정수형, v2열은 문자열 데이터를 갖고 있음을 알 수 있음
6) Null 값을 가진 샘플 여부를 확인
7) 데이터에 중복이 있는지 확인
8) 중복 샘플을 제거하고 전체 샘플 수를 확인
9) 레이블 값의 분포를 시각화
10) 레이블 값의 수치 확인
11) 레이블 값의 수치를 비율 %로 환산
12) v2열과 v1열을 X 데이터와 y 데이터라는 X_data, y_data로 저장함
13) 훈련 데이터와 테스트 데이터를 고르게 8:2 비율로 분리
14) 레이블이 고르게 분포되었는지 확인
15) 케라스 토크나이저를 통해 훈련 데이터에 대해서 토큰화와 정수 인코딩 과정을 수행
16) 각 단어에 대한 등장 빈도수를 이용해 빈도수가 1회로 낮은 단어들이 훈련 데이터에서 얼마만큼의 비중을 차지하는지 확인
17) 패딩을 위해 단어 집합의 크기 + 1를 vocab_size에 저장
18) 전체 데이터에서 가장 길이가 긴 메일과 전체 메일 데이터의 길이 분포를 확인
19) 가장 긴 메일의 길이에 해당하는 189를 사용해 정수 인코딩된 훈련 데이터의 길이를 전부 189로 패딩하여 바꿈
RNN으로 스팸 메일 분류하기
- 1) 하이퍼파라미터인 임베딩 벡터의 차원은 32, 은닉 상태의 크기는 32로 지정하고 다 대 일 구조의 RNN을 사용
2) 마지막 시점에서 두 개의 선택지 중 하나를 예측하는 이진 분류 문제를 수행하는 모델이므로
출력층에 로지스틱 회귀, 활성화 함수로 시그모이드 함수, 손실 함수로 크로스 엔트로피 함수를 사용하여 4번의 에포크 수행
3) 하이퍼파라미터인 배치 크기는 64이며, validation_split=0.2를 사용하여 훈련 데이터의 20%를 검증 데이터로 분리함
이후 검증 데이터를 사용해 기계가 훈련 데이터에 과적합되고 있지는 않은지 확인하는데 사용함
4) 테스트 데이터에 대해서 정확도를 확인
5) 에포크에 따른 훈련 데이터와 검증 데이터를 비교하기 위해 그래프로 시각화
데이터의 양이 적어 과적합이 빠르게 시작되므로,
검증 데이터에 대한 오차가 증가하기 시작하는 시점의 바로 직전인 에포트 3~4 정도가 적당함을 알 수 있으며
에포크 5를 넘어가기 시작하면 검증 데이터의 오차가 증가하게 됨
코드
GitHub - GaGa-Kim/ML_Study: 머신러닝 스터디 ⚙
머신러닝 스터디 ⚙. Contribute to GaGa-Kim/ML_Study development by creating an account on GitHub.
github.com
'ML > 딥 러닝을 이용한 자연어 처리' 카테고리의 다른 글
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - GRU로 IMDB 리뷰 감성 분류하기 (0) | 2022.12.22 |
---|---|
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - LSTM으로 로이터 뉴스 분류하기 (0) | 2022.12.22 |
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - 케라스를 이용한 텍스트 분류 (0) | 2022.12.21 |
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - 텍스트 분류 (0) | 2022.12.21 |
[딥 러닝을 이용한 자연어 처리 입문] 09. 워드 임베딩 - 독투벡터 (0) | 2022.12.20 |