Previsão Fraudulenta de Trabalho
Um classificador que prevê se um trabalho é real ou falso
Introdução
Houve um aumento nas postagens de empregos falsos ao longo dos anos devido ao rápido influxo de usuários no mundo digital. Fatores como o COVID 19 e a iminente recessão global interromperam completamente o mercado de trabalho e resultaram em demissões em massa. Mais de 20.700 golpes de oportunidades de negócios e empregos foram relatados no primeiro trimestre de 2022, com cerca de um terço deles causando perdas financeiras para as vítimas. O recente congelamento de contratações e demissões em larga escala por gigantes da tecnologia como Google, Facebook e Apple são mais uma prova de que o mercado de trabalho global está em declínio.
Esse aumento no desemprego preparou o terreno para os golpistas atacarem as pessoas que mal estão por um fio em relação à sua posição financeira. Esses golpistas publicam promessas fraudulentas de emprego para atrair candidatos a se candidatar. Na maioria das vezes, essas ofertas de emprego contêm oportunidades de carreira extremamente lucrativas que ocasionalmente exigem investimento do candidato. Mesmo que nenhum investimento seja necessário, essas postagens de trabalho fraudulentas permitem que os vigaristas obtenham informações pessoais, como informações de contas bancárias, número do seguro social, endereços, etc. Essas informações podem ser usadas posteriormente para roubo de identidade ou fraude financeira.
Nosso foco é prever, com precisão adequada, se uma determinada postagem de trabalho é real ou falsa com base nas informações fornecidas na postagem.
conjunto de dados
Este projeto usa um conjunto de dados fornecido no Kaggle . Como esse conjunto de dados contém 18.000 entradas, ele pode ser classificado como uma amostra porque os dados são coletados apenas para uma subparte da população. Selecionamos esse conjunto de dados específico porque ele possui um rico conjunto de recursos, incluindo descrições textuais de cargos e metainformações sobre os cargos. Aqui está um trecho mostrando todas as colunas presentes nos dados:
Existem 17 colunas no conjunto de dados que selecionamos, das quais as primeiras 16 são colunas de recursos e a última é a coluna de saída. As colunas de recursos são uma mistura de tipos de dados inteiros, binários e textuais, enquanto a coluna de saída é booleana. Um valor de 0 na coluna 'fraudulento' indica que o trabalho postado era real, enquanto um valor de 1 indica que o trabalho era falso.
Acreditamos que o conjunto de dados é muito valioso, pois contém todos os principais recursos que podem nos permitir criar um modelo de classificação que pode identificar descrições de trabalho falsas.
Metas
Com base na Análise Exploratória de Dados (EDA) abaixo, listamos as duas questões de pesquisa a seguir para o nosso projeto:
RQ1: Quais são alguns marcadores que os candidatos a emprego podem usar para identificar ofertas de emprego falsas?
RQ2: Podemos treinar um modelo classificador que possa identificar adequadamente se um anúncio de emprego é real ou falso?
Análise exploratória de dados
Iniciamos nossa análise visualizando o número de valores NaN presentes em cada coluna de nosso conjunto de dados usando um gráfico de barras.
A visualização mostra que as colunas “department” e “salary_range” possuem um número alto de valores NaN. Como resultado, essas duas colunas são descartadas.
Aproximadamente 95% das descrições de cargos são reais, enquanto apenas 5% dos empregos são falsos. Como as proporções de classe são altamente distorcidas, estamos lidando com dados desequilibrados nos quais empregos fraudulentos formam a classe minoritária. Visualizamos as contagens de empregos reais e falsos abaixo.
Agora que terminamos a limpeza inicial de nossos dados e visualizamos as contagens de classes individuais, podemos prosseguir para identificar as diferentes tendências presentes no conjunto de dados. O primeiro passo é analisar a relação entre os dados numéricos. O mapa de calor de correlação abaixo indica a ausência de qualquer forte correlação positiva ou negativa entre os dados numéricos.
Ao examinar o conjunto de dados, fica evidente que ele contém entradas de todo o mundo. Para julgar com precisão os dados demográficos presentes, traçamos o número de empregos em cada país.
Como é visível na trama, uma esmagadora maioria (mais de 10 mil empregos) dos empregos vem exclusivamente dos Estados Unidos (EUA) e são no idioma inglês. Assim, filtramos as ofertas de emprego dos EUA apenas para evitar problemas de idioma. Essa decisão é tomada tendo em mente nosso plano de usar a incorporação de palavras e outras técnicas de processamento de linguagem natural para treinar um modelo contextual em descrições de cargos e outros recursos textuais para previsão falsa de cargos.
Para facilitar o processamento, dividimos a coluna de localização em país, estado e cidade. A coluna original "localização" é descartada. Além disso, removemos as linhas em que estado e cidade estão vazios ou NaN para evitar problemas no processamento de dados.
Como nosso conjunto de dados contém apenas valores dos EUA agora, podemos ver uma comparação entre o número de empregos fraudulentos e reais em cada estado. O gráfico abaixo mostra que Nova York, Califórnia e Texas têm o maior número de anúncios de empregos reais e, correspondentemente, o maior número de anúncios de empregos falsos também. Como visto, o Texas e a Califórnia têm um número maior de anúncios de empregos falsos do que Nova York.
No entanto, essa análise visual não representa com precisão o número de anúncios de emprego falsos quando comparado a anúncios de emprego reais. Assim, estados e cidades são condicionados a dados fraudulentos e a relação entre empregos falsos e reais é calculada. Por exemplo,

Apenas cidades com proporção > 1, ou seja, mais empregos falsos do que empregos reais, são exibidas no gráfico de barras para evitar confusão.
Investigar a distribuição de empregos falsos para diferentes classes nas colunas: tipo de emprego, experiência exigida, formação exigida, has_company_logo e função; seus dados foram plotados como mostrado abaixo.
Para resumir esses gráficos, empregos falsos são normalmente cargos de tempo integral, de nível básico, de engenharia e administrativos, geralmente com escolaridade exigida equivalente a um diploma do ensino médio. As empresas sem um logotipo têm uma chance maior de postar empregos falsos do que o contrário.
Por fim, para uma análise abrangente em colunas de texto, todos eles são combinados em uma coluna onde um histograma é plotado para observar a diferença na contagem de caracteres entre trabalhos fraudulentos e não fraudulentos. Como visto, os trabalhos fraudulentos têm consideravelmente menos palavras em comparação com os trabalhos não fraudulentos.
Classificação
Conjunto de características
Reunimos todas as colunas textuais em uma única coluna para facilitar o processamento. As colunas de texto individuais são descartadas. Adicionamos a contagem total de caracteres do texto agrupado como outra coluna.
Divisão de Teste de Trem
Em seguida, dividimos os dados em conjuntos de treinamento e validação. Fazemos um treino de 70% - divisão de teste de 30%. Nossos dados de trens têm 6.923 empregos, dos quais 442 (6,4%) são falsos. Nossos dados de teste têm 2.968 empregos, dos quais 187 (6,3%) são falsos.
Métricas de avaliação

Usamos as quatro métricas a seguir para avaliar um modelo de classificação:
- Precisão


3. Lembre-se

4. Pontuação F1

Treinamento
Primeiro, tentamos prever se um trabalho é real ou falso usando recursos numéricos nos dados.
Treinamos e avaliamos os seguintes modelos de classificadores:
1. Regressão Logística
2. Classificador de máquina de vetores de suporte (SVM), ou seja, SVC
3. Classificador de floresta aleatório
Os resultados para essas três abordagens estão resumidos na tabela abaixo:

Embora o Random Forest Classifier seja capaz de fazer classificações consideravelmente precisas, todos os três modelos de classificadores treinados usando apenas recursos numéricos têm precisão, recuperação e pontuações F1 muito baixas.

Como nenhum dos modelos treinados em recursos numéricos é capaz de classificar com precisão os trabalhos falsos, devemos usar os recursos textuais por meio de técnicas de processamento de linguagem natural para fazer melhores previsões.
Processamento de linguagem natural
Implementamos um pipeline com as seguintes etapas:
- CountVectorizer : pré-processamento de texto, tokenização e filtragem de stopwords estão incluídos no
CountVectorizer
, que cria um dicionário de recursos e transforma documentos em vetores de recursos - TfidfTransformer : Documentos mais longos terão contagens de palavras maiores, em média, do que documentos mais curtos. Para superar esse problema, o transformador Tfidf divide o número de ocorrências de cada palavra em um documento pelo número total de palavras no documento para obter frequências de termo (tf). Além disso, reduz os pesos das palavras que ocorrem em um grande número de amostras. Isso ocorre porque essas palavras serão menos úteis na classificação.
- Classificador : modelo classificador que realiza a tarefa de classificação de prever a categoria (fraudulenta ou não) de um posto de trabalho.
- Classificador SGD
Usamos a perda de dobradiça que fornece um SVM linear que é considerado um dos melhores modelos de classificador para tarefas de classificação de texto. Além disso, usamos class_weight=”balanced”, pois há um grande desequilíbrio de classes em nossos dados. Ao usar esse recurso, o classificado desequilibrado recebe automaticamente um peso maior. - Classificador de Floresta Aleatória
Realizamos validação cruzada em floresta aleatória para obter valores ótimos para profundidade máxima de hiperparâmetros e número de estimadores. Usamos o erro quadrático médio (MSE) como a função de perda. A seguir está um gráfico 3D da função de erro quadrático médio em relação a uma faixa de valores para profundidade máxima e número de estimadores. Os parâmetros ótimos são número de estimadores = 50 e profundidade máxima = 16. Em seguida, avaliamos o modelo classificador de floresta aleatória para esses valores. Além disso, também usamos pesos de classe automáticos usando o parâmetro class_weight fornecido pelo sklearn para superar o desequilíbrio de classe no conjunto de dados.

Comparando, fica evidente que o SGD tem um desempenho muito melhor do que o classificador de floresta aleatória em nossos dados. Usando o classificador SGD no pipeline, podemos prever se um trabalho é real ou falso com precisão e recall adequados.
Resultados
A tabela abaixo resume essas métricas para o nosso melhor modelo:

Segue a matriz de confusão para as classificações feitas pelo modelo. Ele classificou erroneamente apenas 14 dos 2.781 reais 27 dos 187 empregos falsos.
Houve um total de 2.781 trabalhos reais e 187 falsos no conjunto de validação.
Nosso modelo classificou corretamente 2.767 de 2.781 empregos reais como reais (precisão = 99,50%) e 160 de 187 empregos falsos como falsos (precisão = 85,56%).
Trabalho futuro
Nosso modelo prevê empregos reais corretamente com precisão quase perfeita, mas a precisão da previsão de empregos falsos pode ser melhorada. Isso ocorre porque a proporção de empregos falsos no conjunto de dados é muito pequena (~ 6%). O trabalho de acompanhamento pode se concentrar na coleta de um novo conjunto de dados balanceado com mais empregos falsos. Técnicas como Synthetic Minority Over-sampling TEchnique (SMOTE) podem ser usadas para resolver o problema de desequilíbrio de classe. Outra melhoria potencial seria usar um método de conjunto para previsão utilizando recursos textuais e numéricos nos dados.
Referências
- 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