Index

Data

가짜 채용 공고 탐지

2025.09 - 2025.12전공 · 인공지능

가짜 채용 공고 탐지 프로젝트에서는 불균형 텍스트 데이터를 이용해 위험 공고를 걸러내는 모델을 만들었습니다. 저는 이 작업을 단순 분류 문제가 아니라, 사람의 검토를 어디에 먼저 배치할지 정하는 위험 점수 문제로 보기로 했습니다.

데이터가 만든 제약

사용한 EMSCAD 데이터는 17,880개의 채용 공고 중 가짜 공고가 약 4.8%에 불과했습니다. 이런 데이터에서는 정확도가 높아 보여도 실제로는 대부분을 정상으로 맞힌 것뿐일 수 있습니다. 그래서 팀은 회사 단위 분할을 고려하고, 클래스 가중치를 조정해 가짜 공고를 놓치는 비용을 더 크게 반영했습니다.

문제는 "모델이 얼마나 많이 맞췄나"보다 "위험한 공고를 얼마나 놓치지 않나"에 가까웠습니다. 특히 채용 공고는 회사명, 설명 문구, 고용 형태, 요구 조건처럼 텍스트와 구조화 변수가 함께 있는 데이터입니다. 모델이 단어 패턴만 외우지 않도록 저는 검증 분할과 지표를 조심해야 했습니다.

모델을 비교한 방식

텍스트 기반 모델로 BiLSTM+Attention, TextCNN, DistilBERT 계열 접근을 검토했습니다. 최종 비교에서는 BiLSTM 계열이 AUC-ROC 0.907, AUC-PR 0.201 수준으로 가장 설득력 있는 결과를 보였습니다. 다만 F1은 0.108 수준이었고, 임계값을 낮추면 재현율은 올라가지만 오탐도 함께 늘었습니다.

예를 들어 threshold 0.218에서는 재현율 82.3%, FPR 13.1% 정도의 운영 지점이 나왔습니다. 이 숫자는 모델이 완벽하다는 뜻이 아닙니다. 오히려 불균형 데이터에서는 precision이 낮게 나올 수 있고, 위험 공고를 놓치지 않기 위해 검토 대상이 늘어나는 trade-off가 생긴다는 것을 보여 줍니다.

제가 중요하게 본 해석

이 결과를 보고 자동 차단 시스템이라고 말하면 위험합니다. 가짜 공고는 비율이 낮고, 데이터 편향도 크며, 모델이 놓치는 케이스의 비용이 높습니다. 그래서 저는 이 모델을 최종 판정자가 아니라 human review queue를 만드는 도구로 해석했습니다. 점수가 높은 공고를 먼저 검토하게 만들고, 사람이 결정을 내리는 구조가 더 맞다고 봤습니다.

이 해석은 지표 선택에도 영향을 줍니다. AUC-ROC만 보면 좋아 보일 수 있지만, 실제 운영에서는 AUC-PR, threshold별 recall과 false positive rate, 검토 가능 물량이 더 중요합니다. 그래서 저는 모델 성능을 하나의 숫자로 말하지 않고, 어떤 운영 결정을 돕는지에 맞춰 읽으려 했습니다.

배운 점

이 프로젝트에서 제가 가장 크게 배운 것은 지표를 목적에 맞춰 읽어야 한다는 점입니다. AUC가 좋아도 실제 운영에서는 precision이 너무 낮으면 검토 비용이 커집니다. 반대로 precision만 높이면 위험 공고를 놓칠 수 있습니다. 불균형 데이터에서 모델을 만든다는 것은 좋은 점수 하나를 찾는 일이 아니라, 어떤 실수를 더 감당할 수 있는지 정하는 일에 가깝습니다.