사기 직업 예측

Dec 05 2022
직업이 진짜인지 가짜인지를 예측하는 분류기 소개 디지털 세상에서 사용자의 급격한 유입으로 인해 수년 동안 가짜 채용 공고가 증가했습니다. COVID 19와 임박한 글로벌 경기 침체와 같은 요인은 고용 시장을 완전히 혼란에 빠뜨리고 대량 정리 해고를 초래했습니다.

직업이 진짜인지 가짜인지 예측하는 분류기

소개

디지털 세계에서 사용자의 급속한 유입으로 인해 수년 동안 가짜 채용 공고가 증가했습니다. COVID 19와 임박한 글로벌 경기 침체와 같은 요인은 고용 시장을 완전히 혼란에 빠뜨리고 대량 정리 해고를 초래했습니다. 2022년 1분기에 20,700건 이상의 비즈니스 및 고용 기회 사기가 보고되었으며, 그 중 약 1/3이 피해자에게 금전적 손실을 입혔습니다. 최근 Google, Facebook, Apple과 같은 기술 대기업의 고용 동결과 대규모 정리 해고는 글로벌 고용 시장이 내리막 길을 가고 있다는 추가 증거입니다.

이러한 실업률 증가는 사기꾼들이 재정 상태와 관련하여 간신히 버티고 있는 사람들을 노리는 발판을 마련했습니다. 이 사기꾼들은 구직자들이 지원하도록 유인하기 위해 구직에 대한 사기 약속을 게시합니다. 대부분의 경우, 이러한 채용 제안에는 때때로 지원자로부터 투자를 요구하는 매우 유리한 경력 기회가 포함됩니다. 투자가 필요하지 않더라도 이러한 사기성 채용 공고를 통해 사기꾼은 은행 계좌 정보, 주민등록번호, 주소 등과 같은 개인 정보를 얻을 수 있습니다. 이 정보는 나중에 신원 도용이나 금융 사기에 사용될 수 있습니다.

우리의 초점은 게시물에 제공된 정보를 기반으로 특정 채용 공고가 진짜인지 가짜인지 적절한 정확도로 예측하는 것입니다.

데이터 세트

이 프로젝트는 Kaggle 에서 제공하는 데이터 세트를 사용합니다 . 이 데이터 세트에는 18,000개의 항목이 포함되어 있으므로 모집단의 하위 부분에 대해서만 데이터가 수집되기 때문에 샘플로 분류될 수 있습니다. 텍스트 작업 설명과 작업에 대한 메타 정보를 모두 포함하는 풍부한 기능 세트가 있기 때문에 이 특정 데이터 세트를 선택했습니다. 다음은 데이터에 있는 모든 열을 보여주는 스니펫입니다.

선택한 데이터 세트에는 17개의 열이 있으며 그 중 처음 16개는 기능 열이고 마지막 열은 출력 열입니다. 기능 열은 정수, 이진 및 텍스트 데이터 유형이 혼합된 반면 출력 열은 부울입니다. '사기' 열의 값이 0이면 게시된 작업이 실제 작업임을 나타내고 값이 1이면 작업이 가짜임을 나타냅니다.

우리는 데이터 세트가 가짜 직업 설명을 식별할 수 있는 분류 모델을 생성할 수 있는 모든 주요 기능을 포함하고 있기 때문에 매우 가치가 있다고 믿습니다.

목표

아래의 탐색적 데이터 분석(EDA)을 기반으로 프로젝트에 대한 다음 두 가지 연구 질문을 선정했습니다.

RQ1: 구직자가 가짜 구인 제안을 발견하는 데 사용할 수 있는 마커는 무엇입니까?

RQ2: 채용 공고가 진짜인지 가짜인지 적절하게 식별할 수 있는 분류자 모델을 교육할 수 있습니까?

탐색적 데이터 분석

막대 그래프를 사용하여 데이터 세트의 각 열에 있는 NaN 값의 수를 시각화하여 분석을 시작합니다.

시각화는 "department" 및 "salary_range" 열에 많은 수의 NaN 값이 있음을 보여줍니다. 결과적으로 이 두 열이 삭제됩니다.

직업 설명의 약 95%가 진짜인 반면 직업의 5%만이 가짜입니다. 계층 비율이 매우 편향되어 있어 부정직이 소수 계층을 형성하는 불균형한 데이터를 다루고 있습니다. 아래에서 실제 및 가짜 작업의 수를 시각화합니다.

이제 데이터의 초기 정리를 완료하고 개별 클래스 수를 시각화했으므로 데이터 세트에 있는 다양한 추세를 식별할 수 있습니다. 첫 번째 단계는 숫자 데이터 간의 관계를 분석하는 것입니다. 아래의 상관관계 히트맵은 숫자 데이터 사이에 강한 양의 상관관계 또는 음의 상관관계가 없음을 나타냅니다.

데이터 세트를 훑어보면 전 세계의 항목이 포함되어 있음이 분명합니다. 현재 인구 통계를 정확하게 판단하기 위해 각 국가의 일자리 수를 표시합니다.

플롯에서 볼 수 있듯이 일자리의 압도적 다수(10,000개 이상)는 전적으로 미국(US)에서 오고 영어로 되어 있습니다. 따라서 우리는 언어 문제를 피하기 위해 미국의 채용 공고만 필터링합니다. 이 결정은 워드 임베딩 및 기타 자연어 처리 기술을 사용하여 가짜 직업 예측을 위한 직업 설명 및 기타 텍스트 기능에 대한 상황별 모델을 훈련시키려는 계획을 염두에 두고 내려진 것입니다.

처리를 쉽게 하기 위해 위치 열을 국가, 주 및 도시로 분할했습니다. 원래 열 "위치"가 삭제됩니다. 또한 데이터 처리 문제를 방지하기 위해 state 및 city가 비어 있거나 NaN인 행을 제거했습니다.

현재 데이터 세트에는 미국의 값만 포함되어 있으므로 각 주의 사기 및 실제 작업 수를 비교할 수 있습니다. 아래 그래프는 뉴욕, 캘리포니아, 텍사스가 실제 채용 공고가 가장 많고 그에 따라 가짜 채용 공고도 가장 많다는 것을 보여줍니다. 보시다시피 텍사스와 캘리포니아는 뉴욕보다 가짜 채용 공고가 더 많습니다.

그러나 이러한 시각적 분석은 실제 채용 공고와 비교할 때 가짜 채용 공고의 수를 정확하게 나타내지 않습니다. 따라서 주와 도시는 사기성 데이터를 기반으로 하며 가짜 일자리와 실제 일자리 간의 비율을 계산합니다. 예를 들어,

비율이 > 1인 도시, 즉 실제 작업보다 가짜 작업이 더 많은 도시만 혼란을 피하기 위해 막대 차트에 표시됩니다.

열에서 다른 클래스에 대한 가짜 직업 분포를 조사합니다: 고용 유형, 필수 경력, 필수 교육, has_company_logo 및 기능; 그들의 데이터는 아래와 같이 플롯되었습니다.

이 그래프를 요약하면 가짜 일자리는 일반적으로 정규직, 초급, 엔지니어링 및 관리직이며 일반적으로 고등학교 졸업장과 동등한 필수 교육을 받습니다. 로고가 없는 회사는 그렇지 않은 경우보다 가짜 채용 공고를 게시할 가능성이 더 높습니다.

마지막으로, 텍스트 열에 대한 포괄적인 분석을 위해 사기 및 사기가 아닌 작업 간의 문자 수 차이를 관찰하기 위해 히스토그램이 플롯되는 하나의 열에 모두 결합됩니다. 보시다시피, 사기 직업은 사기가 아닌 직업에 비해 단어가 상당히 적습니다.

분류

기능 세트

처리하기 쉽도록 모든 텍스트 열을 단일 열로 수집합니다. 개별 텍스트 열이 삭제됩니다. 대조된 텍스트의 총 문자 수를 다른 열로 추가합니다.

훈련 테스트 분할

그런 다음 데이터를 교육 및 검증 세트로 나눕니다. 우리는 70% 훈련 — 30% 테스트 분할을 수행합니다. 기차 데이터에는 6,923개의 작업이 있으며 그 중 442개(6.4%)는 가짜입니다. 테스트 데이터에는 2,968개의 작업이 있으며 그 중 187개(6.3%)는 가짜입니다.

평가 지표

다음 네 가지 메트릭을 사용하여 분류 모델을 평가합니다.

  1. 정확성

3. 리콜

4. F1 점수

훈련

먼저 데이터의 숫자 기능을 사용하여 직업이 진짜인지 가짜인지 예측하려고 시도합니다.

다음 분류기 모델을 훈련하고 평가합니다.

1. 로지스틱 회귀

2. SVM(Support Vector Machine) 분류기, 즉 SVC

3. 랜덤 포레스트 분류기

이 세 가지 접근 방식의 결과는 아래 표에 요약되어 있습니다.

수치적 특징만을 이용한 분류 결과

Random Forest Classifier는 상당히 정확한 분류를 할 수 있지만 숫자 기능만 사용하여 훈련된 세 가지 분류기 모델 모두 정밀도, 재현율 및 F1 점수가 매우 낮습니다.

숫자 데이터로만 훈련된 랜덤 포레스트 분류기에 대한 혼동 행렬: 모델은 상당히 높은 정확도를 달성할 수 있지만 약 37%의 정확도로 가짜 작업만 예측합니다. 모델의 높은 정확도는 94.4%의 거의 완벽한 정확도로 실제 작업을 정확하게 예측한다는 사실 때문입니다. 데이터에 있는 작업의 95%가 실제 작업이므로 전체적으로 높은 정확도를 달성합니다.

수치적 특징에 대해 훈련된 모델 중 어느 것도 가짜 직업을 정확하게 분류할 수 없기 때문에 더 나은 예측을 위해 자연어 처리 기술을 통해 텍스트 특징을 사용해야 합니다.

자연어 처리

다음 단계를 통해 파이프라인을 구현합니다.

  1. CountVectorizer : 스톱워드의 텍스트 전처리, 토큰화 및 필터링이 모두 에 포함되어 있습니다 CountVectorizer. 이 기능은 피처 사전을 구축하고 문서를 피처 벡터로 변환합니다.
  2. TfidfTransformer : 긴 문서는 짧은 문서보다 평균적으로 더 많은 단어 수를 갖습니다. 이 문제를 극복하기 위해 Tfidf 변환기는 문서에서 각 단어의 발생 횟수를 문서의 총 단어 수로 나누어 용어 빈도(tf)를 얻습니다. 또한 많은 수의 샘플에서 발생하는 단어의 가중치를 축소합니다. 이러한 단어는 분류에 덜 유용하기 때문입니다.
  3. 분류자 : 구인 게시물의 범주(사기 여부)를 예측하는 분류 작업을 수행하는 분류자 모델입니다.
  1. SGD 분류기
    텍스트 분류 작업을 위한 최고의 분류기 모델 중 하나로 간주되는 선형 SVM을 제공하는 힌지 손실을 사용합니다. 또한 데이터에 클래스 불균형이 크기 때문에 class_weight=”balanced”를 사용합니다. 이 기능을 사용하면 불균형 등급에 자동으로 더 높은 가중치가 할당됩니다.
  2. 랜덤 포레스트 분류기
    하이퍼파라미터 최대 깊이 및 추정기 수에 대한 최적의 값을 얻기 위해 랜덤 포레스트에서 교차 검증을 수행합니다. 손실 함수로 평균 제곱 오차(MSE)를 사용합니다. 다음은 최대 깊이 및 추정기 수에 대한 값 범위에 대한 평균 제곱 오차 함수의 3D 도표입니다. 최적의 매개변수는 추정기 수 = 50 및 최대 깊이 = 16인 것으로 밝혀졌습니다. 그런 다음 이러한 값에 대해 랜덤 포레스트 분류기 모델을 평가합니다. 또한 데이터 집합의 클래스 불균형을 극복하기 위해 sklearn에서 제공하는 class_weight 매개 변수를 사용하여 자동 클래스 가중치도 사용합니다.
자연어 처리를 이용한 텍스트 데이터 기반 분류 결과

비교해 보면 SGD가 우리 데이터에서 랜덤 포레스트 분류기보다 훨씬 더 잘 수행한다는 것이 분명합니다. 파이프라인에서 SGD 분류기를 사용하여 적절한 정밀도와 재현율로 작업이 진짜인지 가짜인지 예측할 수 있습니다.

결과

아래 표에는 최상의 모델에 대한 이러한 메트릭이 요약되어 있습니다.

다음은 모델에 의해 만들어진 분류에 대한 혼동 행렬입니다. 가짜 일자리 187개 중 진짜 2781개 중 14개만 오분류했다.

유효성 검사 세트에는 총 2781개의 실제 작업 과 187개의 가짜 작업이 있습니다.

우리 모델은 실제 직업 2781개 중 2767개를 진짜로 분류했고(정확도 = 99.50%) 187개 가짜 직업 중 160개를 가짜로 분류했습니다(정확도 = 85.56%).

미래의 일

우리 모델은 거의 완벽한 정확도로 실제 직업을 정확하게 예측하지만 가짜 직업의 예측 정확도는 개선될 수 있습니다. 이는 데이터 세트에서 가짜 작업의 비율이 실제로 작기 때문입니다(~6%). 후속 작업은 가짜 작업이 더 많은 새로운 균형 잡힌 데이터 세트 수집에 집중할 수 있습니다. SMOTE(Synthetic Minority Over-sampling TEchnique) 와 같은 기술을 사용하여 클래스 불균형 문제를 해결할 수 있습니다. 또 다른 잠재적인 개선 사항은 데이터 내의 텍스트 및 숫자 기능을 모두 활용하여 예측을 위해 앙상블 방법을 사용하는 것입니다.

참조

  1. https://www.kaggle.com/datasets/shivamb/real-or-fake-fake-jobposting-prediction
  2. https://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html
  3. https:///@corymaklin/synthetic-minority-over-sampling-technique-smote-7d419696b88c