Previsão de sucesso em campanhas de crowdfunding usando aprendizagem de máquina

Crowdfunding, ou financiamento coletivo, é uma maneira de conseguir recursos para alavancar um projeto. Para tanto, um indivíduo ou uma startup apresenta sua ideia em plataformas online com o intuito de conseguir uma quantia específica de dinheiro para colocar seu projeto em curso. Tais projetos são financiados, em geral, por um grande grupo de pessoas que acreditam no projeto e que pode se beneficiar, por exemplo, com cotas do empreendimento.

Algumas campanhas de crowdfunding são exitosas; enquanto outras não conseguem angariar a quantidade de recurso suficientes para iniciar o projeto e, assim, naufragam. Separar, o quanto antes, campanhas de sucesso das que irão fracassar implica em redução de custos e de frustrações de parte a parte.

No artigo a seguir, investigamos diversas abordagens de aprendizagem de máquina para a predição de sucesso em campanhas de crowdfunding.

George D.C. Cavalcanti, Wesley Mendes-Da-Silva, Israel J. dos Santos Felipe, Leonardo A. Santos. Recent advances in applications of machine learning in reward crowdfunding success forecastingNeural Computing & Applications2024. 

Foram avaliados 15 algoritmos de aprendizagem de máquina, entre eles, algoritmos tradicionais (MLP, SVM, …), algoritmos de combinação estática (RandomForest, AdaBoost, XGBoost, …) e algoritmos de combinação dinâmica de classificadores (Meta-DES, KNORAE, …), usando três métricas: acurácia, área sob curva ROC e F-score, e um total de 4.193 campanhas. Destaque para o Meta-DES que obteve o melhor resultado global. Este método usa meta-aprendizagem para selecionar dinamicamente os melhores classificadores por campanha de crowdfunding em avaliação. Em outras palavras, o Meta-DES usa classificadores diferentes para avaliar campanhas diferentes e esta escolha é realizada on-the-fly, ou seja, em produção.

Boa parte da discussão do artigo é voltada para explicar (eXplainable AI) os motivos que levaram a máquina de aprendizagem a indicar que uma determinada campanha seria de sucesso ou não. Para tanto, computamos os Shapley values visando enxergar o conteúdo da black-box das máquinas.

De maneira global, as variáveis mais importantes para a predição foram: o número de pledges, o valor total esperado na campanha, entre outras, conforme mostrado no gráfico acima.

Dentre as variáveis usadas para representar uma campanha, duas delas têm o objetivo de capturar o sentimento do mercado no dia do lançamento da campanha de crowdfunding, são elas: social media net sentiment (SMNS) e mainstream media net sentiment (MMNS). Esse sentimento foi extraído do Twitter e do jornal “O Estado de São Paulo” usando técnicas de processamento de linguagem natural. Embora tenhamos usado apenas duas fontes de informações online, vale destacar que essas variáveis foram relevantes para as decisões das máquinas.

Destaco que este trabalho foi realizado com 4.193 campanhas do mundo real. Um esforço multidisciplinar como este requer a adição de diferentes competências complementares. Agradeço aos co-autores: Wesley (Professor de Finanças/FGV-SP), Israel (Professor de Finanças/UFRN) e Leonardo (Senior Machine Learning Engineer/Nubank).

O código-fonte e mais detalhes sobre a análise experimental estão disponíveis no GitHub: https://github.com/las33/Crowdfunding.

Etapas de um sistema de múltiplos classificadores

Um sistema de múltiplos classificadores (multiple classifier system — MCS) é composto por um pipeline de três etapas: geração, seleção e integração — conforme mostrado na figura a seguir.

mcs
Etapas de um sistema de múltiplos classificadores. [adaptada de Cruz et al. 2018]
Pode-se observar essas três etapas de um MCS como uma caixa-preta que recebe como entrada um conjunto de treinamento (Γ), um conjunto validação e uma instância de teste (xq), e que fornece como saída, a classe (no caso de classificação) ou o valor predito (no caso de regressão ou previsão de séries temporais) da instância de teste. Da mesma forma que máquinas de aprendizagem monolíticas (árvore e decisão, redes neurais, entre outras), um MCS busca uma função capaz de predizer com eficácia o rótulo das instâncias que lhe são apresentadas durante a generalização. A seguir, são descritas as três etapas de um MCS.


Geração

Na primeira etapa, geração, as máquinas de aprendizagem são treinadas e armazenadas em um pool que pode ser homogêneo ou heterogêneo. Por homogêneo, entende-se que todos os modelos do pool são treinados usando o mesmo algoritmo de aprendizagem, e.g., árvore de decisão. Por outro lado, em um pool heterogêneo, os modelos são treinados com diferentes algoritmos, tais como: árvore de decisão, perceptron e redes neurais.

Usar algoritmos diferentes é uma forma de aumentar a diversidade do pool; sendo essa uma vantagem de um pool heterogêneo. Porém, escolher quais algoritmos de aprendizagem devem ser usados, e quantos, é um problema desafiador. Daí, gerar um pool homogêneo é uma alternativa interessante por sua simplicidade.

Mesmo trabalhando com um pool homogêneo, é necessário que os modelos desse pool sejam diversos. Bagging (bootstrap aggregating) é um algoritmo comumente usado para esse fim e funciona da seguinte forma: dado um banco de dados de treinamento (Γ) com n instâncias, bagging gera m bancos de dados usando reamostragem com reposição. Cada banco de dados gerado tem o mesmo número de instâncias (n) do banco de dados original. Mas, como bagging é um procedimento com reposição, cada banco de dados terá instâncias repetidas. É esperado que 63,2% sejam instâncias únicas de Γ, e que, o restante, 36,8%, seja composto de instâncias repetidas. Cada um dos bancos de dados gerado por bagging é usado para treinar um modelo. Assim, ao fim do processo, m modelos são treinados, C = {c1, c2, …, cm}.

Dado que bagging usa um processo aleatório para adicionar instâncias a cada um dos bancos, pode-se afirmar, com alta probabilidade, que os bancos gerados são diferentes entre si. Diferença essa que auxilia na geração de modelos diversos. Além do bagging, outros algoritmos são usados para gerar o pool, entre eles: boostingrandom subspace rotation forest.


Seleção

Após a geração, a próxima etapa tem o objetivo de selecionar um subconjunto de modelos do pool que será usado para predizer a classe/valor da instância de teste. A seleção pode se dar de duas formas: estática ou dinâmica.

ss
Seleçao estática [adaptada de Cruz et al. 2018]
A seleção estática (static selection – SS) escolhe os melhores modelos do pool C que comporão o ensemble de modelos C’, sendo C’ ⊂ C. A figura acima mostra que esse processo é realizado offline, ou seja, durante o treinamento, e usa o conjunto de validação como guia para a escolha dos modelos. Na seleção estática, o mesmo subconjunto de modelos C’ é usado para classificar/predizer todas as instâncias de teste (xq).

Já na seleção dinâmica, os modelos selecionados podem diferir de uma instância de teste para outra; por esse motivo é chamada de dinâmica. Essa operação de seleção é realizada online, quando o sistema completo já está em operação, e depende da instância de teste que se deseja avaliar.

dcs
Seleção dinâmica de um modelo (ci) por instância de teste (xq) [adaptada de Cruz et al. 2018]
des
Seleção dinâmica de um ensemble (C’) por instância de teste (xq) [adaptada de Cruz et al. 2018]
As duas figuras acima mostram formas de selecionar dinamicamente modelos: a primeira seleciona apenas um modelo por instância de teste, enquanto a segunda seleciona um ensemble, um subconjunto do pool inicial.

A seleção dinâmica é motivada pelo fato de que nem todos os modelos no pool são competentes para predizer o rótulo de todas as instâncias de teste. Assim, deseja-se encontrar, por instância, os melhores especialistas (modelos) para realizar essa predição.


Integração

A etapa de seleção pode escolher um ou mais modelos. Se apenas um modelo for selecionado, não há integração. Nesse caso, a resposta do sistema é dada pela aplicação do modelo selecionado à instância de teste, i.e., ci(xq).

Sob outra perspectiva, se mais de um modelo for selecionado, é necessário o emprego de alguma regra para combinar as respostas dos modelos. Essas regras podem ser divididas em duas categorias: treináveis e não-treináveis. As não-treináveis levam esse nome pois são regras fixas que não necessitam de um processo de treinamento. Nessa categoria, o voto majoritário é a regra mais empregada. Nesta regra, cada modelo vota em uma classe e a classe com mais votos é atribuída como sendo o rótulo da instância de teste. Outros exemplos de regras não-treináveis são: média, produto, soma, mínimo e máximo.

Como o próprio nome indica, as regras treináveis são definidas por um processo de treinamento. Assim, usam-se máquinas de aprendizagem com o propósito de aprender a melhor função que integrará as respostas dos modelos selecionados. Qualquer máquina de aprendizagem pode ser usada para esse fim, e.g., árvore de decisão e multi-layer perceptrons.

Quando não se sabe a priori quantos modelos serão escolhidos pela etapa de seleção, as regras não-treináveis são mais usadas do que as treináveis, pois a maioria das máquinas de aprendizagem requerem um vetor de características de tamanho fixo. Além disso, as regras não-treináveis são mais simples e, por conseguinte, mais fáceis de interpretar.