Prédiction d'emploi frauduleuse
Un classificateur qui prédit si un emploi est réel ou faux
Introduction
Il y a eu une augmentation des fausses offres d'emploi au fil des ans en raison de l'afflux rapide d'utilisateurs dans le monde numérique. Des facteurs tels que le COVID 19 et la récession mondiale imminente ont complètement perturbé le marché du travail et entraîné des licenciements massifs. Plus de 20 700 escroqueries commerciales et d'opportunités d'emploi ont été signalées au cours du premier trimestre de 2022, dont environ un tiers ont causé des pertes financières aux victimes . Les récents gels des embauches et les licenciements à grande échelle par des géants de la technologie comme Google, Facebook et Apple sont une preuve supplémentaire que le marché mondial du travail est en train de se détériorer.
Cette augmentation du chômage a préparé le terrain pour que les escrocs s'attaquent aux personnes qui ne tiennent qu'à un fil en ce qui concerne leur situation financière. Ces escrocs affichent des promesses d'emploi frauduleuses pour inciter les demandeurs d'emploi à postuler. Le plus souvent, ces offres d'emploi contiennent des opportunités de carrière extrêmement lucratives qui demandent parfois un investissement de la part du candidat. Même si aucun investissement n'est nécessaire, ces offres d'emploi frauduleuses permettent aux escrocs d'obtenir des informations personnelles telles que des informations sur le compte bancaire, le numéro de sécurité sociale, les adresses, etc. Ces informations peuvent ensuite être utilisées pour le vol d'identité ou la fraude financière.
Notre objectif est de prédire, avec une précision adéquate, si une offre d'emploi particulière est réelle ou fausse sur la base des informations fournies dans la publication.
Base de données
Ce projet utilise un jeu de données fourni sur Kaggle . Étant donné que cet ensemble de données contient 18 000 entrées, il peut être classé comme un échantillon car les données ne sont collectées que pour une sous-partie de la population. Nous avons sélectionné cet ensemble de données particulier car il possède un riche ensemble de fonctionnalités, notamment des descriptions de poste textuelles et des méta-informations sur les postes. Voici un extrait montrant toutes les colonnes présentes dans les données :
Il y a 17 colonnes dans l'ensemble de données que nous avons sélectionné, dont les 16 premières sont des colonnes de caractéristiques et la dernière est la colonne de sortie. Les colonnes de caractéristiques sont un mélange de types de données entiers, binaires et textuels tandis que la colonne de sortie est un booléen. Une valeur de 0 dans la colonne "frauduleux" indique que l'offre d'emploi publiée était réelle, tandis qu'une valeur de 1 indique que l'offre d'emploi était fausse.
Nous pensons que l'ensemble de données est très précieux car il contient toutes les fonctionnalités clés qui pourraient nous permettre de créer un modèle de classification capable d'identifier les fausses descriptions de poste.
Buts
Sur la base de l'analyse exploratoire des données (EDA) ci-dessous, nous présélectionnons les deux questions de recherche suivantes pour notre projet :
RQ1 : Quels sont les marqueurs que les demandeurs d'emploi peuvent utiliser pour repérer les offres d'emploi bidon ?
RQ2 : Pouvons-nous former un modèle de classificateur capable d'identifier de manière adéquate si une offre d'emploi est réelle ou fausse ?
L'analyse exploratoire des données
Nous commençons notre analyse en visualisant le nombre de valeurs NaN présentes dans chaque colonne de notre ensemble de données à l'aide d'un graphique à barres.
La visualisation montre que les colonnes « department » et « salary_range » ont un nombre élevé de valeurs NaN. Par conséquent, ces deux colonnes sont supprimées.
Environ 95% des descriptions de poste sont réelles alors que seulement 5% des emplois sont faux. Comme les proportions de classe sont très asymétriques, nous avons affaire à des données déséquilibrées dans lesquelles les emplois frauduleux forment la classe minoritaire. Nous visualisons ci-dessous le nombre de vrais et de faux emplois.
Maintenant que nous avons terminé le nettoyage initial de nos données et visualisé le nombre de classes individuelles, nous pouvons procéder à l'identification des différentes tendances présentes dans l'ensemble de données. La première étape consiste à analyser la relation entre les données numériques. La carte thermique de corrélation ci-dessous indique l'absence de toute corrélation positive ou négative forte entre les données numériques.
En parcourant l'ensemble de données, il est évident qu'il contient des entrées du monde entier. Pour juger avec précision les données démographiques présentes, nous traçons le nombre d'emplois dans chaque pays.
Comme le montre l'intrigue, une écrasante majorité (plus de 10 000 emplois) des emplois proviennent uniquement des États-Unis (US) et sont en anglais. Nous filtrons donc les offres d'emploi en provenance des États-Unis uniquement pour éviter les problèmes de langue. Cette décision est prise en gardant à l'esprit notre intention d'utiliser des incorporations de mots et d'autres techniques de traitement du langage naturel pour former un modèle contextuel sur les descriptions de travail et d'autres caractéristiques textuelles pour la fausse prédiction d'emploi.
Pour faciliter le traitement, nous divisons la colonne de localisation en pays, état et ville. La colonne d'origine "emplacement" est supprimée. De plus, nous avons supprimé les lignes où l'état et la ville sont vides ou NaN pour éviter les problèmes de traitement des données.
Étant donné que notre ensemble de données ne contient désormais que des valeurs américaines, nous pouvons voir une comparaison entre le nombre d'emplois frauduleux et réels dans chaque État. Le graphique ci-dessous montre que New York, la Californie et le Texas ont le plus grand nombre d'offres d'emploi réelles et, par conséquent, le plus grand nombre de fausses offres d'emploi. Comme on le voit, le Texas et la Californie ont un nombre plus élevé de fausses offres d'emploi que New York.
Cependant, une telle analyse visuelle ne représente pas avec précision le nombre de fausses offres d'emploi par rapport aux offres d'emploi réelles. Par conséquent, les États et les villes sont conditionnés par des données frauduleuses et le rapport entre les faux et les vrais emplois est calculé. Par exemple,

Seules les villes avec un ratio> 1, c'est-à-dire plus de faux emplois que de vrais emplois, sont affichées sur le graphique à barres pour éviter l'encombrement.
Étudier la répartition des faux emplois pour différentes classes dans les colonnes : type d'emploi, expérience requise, formation requise, has_company_logo et fonction ; leurs données ont été tracées comme indiqué ci-dessous.
Pour résumer ces graphiques, les faux emplois sont généralement des postes à temps plein, de niveau d'entrée, d'ingénierie et d'administration, généralement avec une formation requise équivalente à un diplôme d'études secondaires. Les entreprises sans logo ont plus de chances de publier de faux emplois qu'autrement.
Enfin, pour une analyse globale sur les colonnes de texte, elles sont toutes combinées dans une colonne où un histogramme est tracé pour observer la différence de nombre de caractères entre les travaux frauduleux et non frauduleux. Comme on le voit, les emplois frauduleux ont beaucoup moins de mots que les emplois non frauduleux.
Classification
Jeu de fonctionnalités
Nous rassemblons toutes les colonnes textuelles dans une seule colonne pour faciliter le traitement. Les colonnes de texte individuelles sont supprimées. Nous ajoutons le nombre total de caractères du texte assemblé dans une autre colonne.
Séparation d'essai de train
Nous avons ensuite divisé les données en ensembles d'apprentissage et de validation. Nous faisons un train 70% - 30% de test fractionné. Nos données sur les trains comptent 6 923 emplois dont 442 (6,4 %) sont faux. Nos données de test ont 2 968 emplois dont 187 (6,3 %) sont faux.
Métriques d'évaluation

Nous utilisons les quatre métriques suivantes pour évaluer un modèle de classification :
- Précision


3. Rappel

4. Score F1

Entraînement
Nous essayons d'abord de prédire si un emploi est réel ou faux en utilisant des caractéristiques numériques dans les données.
Nous formons et évaluons les modèles de classificateurs suivants :
1. Régression logistique
2. Classificateur SVM (Support Vector Machine), c'est-à-dire SVC
3. Classificateur de forêt aléatoire
Les résultats de ces trois approches sont résumés dans le tableau ci-dessous :

Bien que le classificateur de forêt aléatoire soit capable d'effectuer des classifications considérablement précises, les trois modèles de classificateur entraînés à l'aide uniquement de caractéristiques numériques ont une précision, un rappel et des scores F1 très faibles.

Étant donné qu'aucun des modèles entraînés sur les caractéristiques numériques n'est capable de classer avec précision les faux emplois, nous devons utiliser les caractéristiques textuelles via des techniques de traitement du langage naturel pour faire de meilleures prédictions.
Traitement du langage naturel
Nous implémentons un pipeline avec les étapes suivantes :
- CountVectorizer : le prétraitement du texte, la segmentation et le filtrage des mots vides sont tous inclus dans
CountVectorizer
, qui crée un dictionnaire d'entités et transforme les documents en vecteurs d'entités - TfidfTransformer : les documents plus longs auront en moyenne un plus grand nombre de mots que les documents plus courts. Pour surmonter ce problème, le transformateur Tfidf divise le nombre d'occurrences de chaque mot dans un document par le nombre total de mots dans le document pour obtenir les fréquences des termes (tf). De plus, il réduit les poids des mots qui apparaissent dans un grand nombre d'échantillons. C'est parce que ces mots seront moins utiles dans la classification.
- Classificateur : modèle de classificateur qui effectue la tâche de classification consistant à prédire la catégorie (frauduleuse ou non) d'une offre d'emploi.
- Classificateur SGD
Nous utilisons la perte de charnière qui donne un SVM linéaire qui est considéré comme l'un des meilleurs modèles de classificateur pour les tâches de classification de texte. De plus, nous utilisons class_weight=”balanced”, car il y a un grand déséquilibre de classe dans nos données. Lors de l'utilisation de cette fonctionnalité, la classe déséquilibrée se voit automatiquement attribuer un poids plus élevé. - Classificateur de forêt aléatoire
Nous effectuons une validation croisée sur une forêt aléatoire pour obtenir des valeurs optimales pour la profondeur maximale des hyperparamètres et le nombre d'estimateurs. Nous utilisons l'erreur quadratique moyenne (MSE) comme fonction de perte. Voici un tracé 3D de la fonction d'erreur quadratique moyenne par rapport à une plage de valeurs pour la profondeur maximale et le nombre d'estimateurs. Les paramètres optimaux sont le nombre d'estimateurs = 50 et la profondeur maximale = 16. Nous évaluons ensuite le modèle de classificateur de forêt aléatoire pour ces valeurs. De plus, nous utilisons également des pondérations de classe automatiques en utilisant le paramètre class_weight fourni par sklearn pour surmonter le déséquilibre de classe dans l'ensemble de données.

En comparaison, il est évident que le SGD fonctionne bien mieux que le classificateur de forêt aléatoire sur nos données. En utilisant le classificateur SGD dans le pipeline, nous sommes en mesure de prédire si un travail est réel ou faux avec une précision et un rappel adéquats.
Résultats
Le tableau ci-dessous résume ces métriques pour notre meilleur modèle :

Voici la matrice de confusion pour les classifications faites par le modèle. Il n'a mal classé que 14 des 2781 vrais 27 des 187 faux emplois.
Il y avait un total de 2781 vrais et 187 faux emplois dans l'ensemble de validation.
Notre modèle a correctement classé 2767 des 2781 emplois réels comme étant réels (précision = 99,50 %) et 160 des 187 faux emplois comme faux (précision = 85,56 %).
Travail futur
Notre modèle prédit correctement les vrais emplois avec une précision presque parfaite, mais la précision de la prédiction des faux emplois pourrait être améliorée. En effet, la proportion de faux emplois dans l'ensemble de données est vraiment faible (~ 6%). Les travaux de suivi pourraient se concentrer sur la collecte d'un nouvel ensemble de données équilibré avec plus de faux emplois. Des techniques telles que la technique de suréchantillonnage synthétique des minorités (SMOTE) pourraient être utilisées pour résoudre le problème du déséquilibre des classes. Une autre amélioration potentielle consisterait à utiliser une méthode d'ensemble pour la prédiction utilisant à la fois des caractéristiques textuelles et numériques dans les données.
Références
- https://www.kaggle.com/datasets/shivamb/real-or-fake-fake-jobposting-prediction
- https://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html
- https:///@corymaklin/synthetic-minority-over-sampling-technique-smote-7d419696b88c