External Learning & Competitions
[2024][Basic][P2] Real and Fake Job Postings
중간에 멈춘 BERT 실행을 다시 읽고, 중복 description을 묶은 분할에서 TF-IDF·LinearSVC 기준선을 만들었다.
- Platform
- Kaggle
- 진행 기간
- 2024-08-11–2024-08-27
- Host
- sw.baek_00
- Metric
- Accuracy
- 모델 조건
- 사전학습 BERT를 사용하며 다른 모델은 사용하지 않는 조건

남아 있던 실행 위치
Notebook에는 train 12,516개, test 5,364개를 읽은 기록이 있었지만 학습은 352 step 중 51 step에서 멈춰 있었다. 완성된 BERT 결과처럼 쓰지 않고, 실제로 남은 전처리와 중간 학습 출력까지만 과거 기록으로 봤다.
중복 문장을 먼저 묶었다
같은 description이 train과 validation에 동시에 들어가면 모델이 문장을 외워도 높은 점수를 받을 수 있다. exact duplicate description을 하나의 group으로 묶은 뒤 train, calibration, holdout으로 나눴다.
새 기준선
word·character TF-IDF와 class-weighted LinearSVC를 사용하고 calibration split에서 F1 threshold를 골랐다. holdout accuracy 0.9896, balanced accuracy 0.9307, F1 0.8879, average precision 0.9187이 나왔다. 불균형 데이터라 accuracy 하나보다 fake class의 precision과 recall을 함께 봤다.
API Key 처리
예전 Notebook에는 평문 API Key가 들어 있었다. 원본 파일은 올리지 않았고 공개용 코드는 환경변수에서 값을 읽도록 바꿨다. 기존 키는 소유자 계정에서 폐기하고 다시 발급해야 한다. 위 숫자는 로컬 holdout 결과이며 Kaggle leaderboard 점수가 아니다.
다시 실행하면서 바꾼 점
남아 있던 Notebook 결과와 새 로컬 홀드아웃 결과를 비교했다. description-grouped stratified train/calibration/holdout; 8,009/2,003/2,504 rows; seed 42 조건에서 word+character TF-IDF + class-weighted LinearSVC; threshold selected on calibration F1을 사용했다.
- 당시 Notebook
- train 12,516 rows; test 5,364 rows; training stopped at 51/352 steps (14%)
- 단순 기준선
- accuracy 0.9525; balanced accuracy 0.5000; F1 0.0000; recall 0.0000
- 수정한 모델
- accuracy 0.9896; balanced accuracy 0.9307; F1 0.8879; precision 0.9115; recall 0.8655; AP 0.9187
동일 description은 한 분할에만 배치했습니다. 원본 노트북의 평문 API 키는 개선본에 포함하지 않았지만 소유자가 기존 키를 폐기·재발급해야 합니다. Kaggle 업로드와 leaderboard 평가는 미검증입니다.
예전 Notebook에는 평문 API Key가 들어 있었다. 그 파일은 올리지 않고 공개 예제는 환경변수에서 값을 읽도록 고쳤다. 기존 키는 소유자 계정에서 폐기하고 새로 발급해야 한다.
위 수치는 문서화한 로컬 분할에서 얻었다. 로그인된 Kaggle 제출 이력·점수·순위까지 다시 확인한 값은 아니다.