Depois de seguir um curso introdutório de aprendizado de máquina no Coursera e trabalhar com cientistas de dados em projetos comerciais, eu mesmo queria aplicar o aprendizado de máquina a algo prático. Eu escolhi aplicá-lo ao Numerai. É um fundo de hedge onde as negociações são determinadas com base em previsões coletadas de cientistas de dados com dados anônimos. Aqui está a segunda parte desta série. Em busca de inspiração, encontrei o blog Tech in Pink, onde o autor está dando alguns exemplos.
Em duas postagens, o autor demonstra como aplicar a essa tarefa os seguintes métodos de aprendizado: floresta aleatória, floresta aleatória com pesquisa em grade de hiperparâmetros e máquina de vetores de suporte. Desde o momento da publicação o formato dos dados mudou para o mostrado aqui. Portanto, tive que modificar o código. Adicionei o código para extrair os nomes das colunas de recursos. A lista de colunas de recursos deve ser aplicada para extrair valores de recursos dos dados de treinamento. O nome da coluna ID também precisava ser alterado. E a lista de colunas de recursos também precisava ser aplicada ao código de previsão. O armazenamento das previsões no disco também não correspondia ao formato exigido atualmente. Assim, isso também teve que ser ajustado. Acontece que o processo de envio pode falhar se a probabilidade for igual a 0 ou 1. Portanto, era necessário descobrir a granularidade do tipo de ponto flutuante.
…e corte as probabilidades em um intervalo aberto de 0 a 1. O código também gerou alguns avisos de descontinuação. Em particular, a validação cruzada e a pesquisa de grade foram movidas para o módulo de seleção de modelo. Havia também alguns códigos Python 2 obsoletos que precisavam ser atualizados para Python 3. Para ganhar alguma flexibilidade, decidi substituir os nomes de arquivos codificados por parâmetros obtidos de variáveis de ambiente…
…e introduzir um script principal chamado run.py que me permite selecionar o método de aprendizado. Para alguns dos métodos de aprendizado, é possível usar todos os núcleos da CPU e, no scikit-learn, isso pode ser ativado definindo n_jobs como -1. Porém, não é possível para a classificação da máquina de vetores de suporte. Para manter o código limpo, decidi agrupar o código em um contêiner Docker. Portanto, eu precisava preparar o arquivo requirements.txt com todos os módulos necessários… …incluindo os módulos NumPy e SciPy… …módulo Pandas… …e sckit-learn… Eu também precisava para criar o Dockerfile. Que usa o Python 3 como imagem base. Em seguida, ele instala bibliotecas para computação algébrica. Ele também instala os módulos Python listados anteriormente… …assim como os scripts Python… …e chama o arquivo run.py principal quando o contêiner é executado. Para garantir que o contêiner seja reconstruído sempre que faço uma modificação, uso o Travis CI.
…com um nome de usuário e senha configuráveis. Supondo que o Docker esteja instalado e você esteja no diretório que contém um conjunto de dados Numerai, você pode executar o código assim. Este comando de exemplo aplica o método de aprendizado SVM, mas você também pode usar RFC e RFC-Grid. Neste repositório do GitHub, você pode encontrar meu código-fonte bifurcado. Pesquisando mais, também encontrei uma postagem interessante no blog Fast ML, onde o autor aplica métodos de aprendizado de floresta aleatória e regressão logística com transformadores de dados.

Como observação, o autor também tem outra entrada de blog explicando como o critério de admissão de consistência é calculado. Como antes, eu precisava ajustar o código para o novo formato de dados e abrir o intervalo de probabilidade, corrigir o código obsoleto, adicionar parâmetros, habilitar o processamento multi-core e agrupar o código em um contêiner construído com o Travis CI Aqui está o comando para executar isso recipiente. Observe que o nome da imagem do contêiner é diferente e oferece apenas dois métodos de aprendizado – RFC e regressão logística. Também neste caso, você pode encontrar meu código-fonte bifurcado em um repositório GitHub. Além de pesquisar no Google postagens de blog sobre Numerai, também pesquisei diretamente no GitHub. Foi assim que encontrei este repositório publicado pelo usuário Jeremy123W que aplica métodos de aprendizado de rede neural profunda e aumento de gradiente.
Também passei pelos mesmos passos aqui. Com exceção da aplicação de processamento multi-core – o código estava rodando rápido o suficiente para meus propósitos. Aqui está o comando para executar esse contêiner. Como antes, o container tem seu próprio nome e oferece dois métodos de aprendizado, um chamado XGBoost (devido ao módulo que ele usa) e outro chamado WideAndDeep. Também neste caso, o código bifurcado está disponível em um repositório GitHub. Até agora você provavelmente está curioso para saber qual foi a pontuação para cada um desses métodos de aprendizado. Primeiro, o código da Tech in Pink – a floresta aleatória teve uma pontuação muito baixa…
…incluindo a pesquisa de hiperparâmetros ajudou, mas só conseguiu atingir um dos três critérios de admissão… …SVM teve um log melhor perda e pior consistência e demorou muito para treinar… o código do Fast ML foi pior com o método random forest, mas a regressão logística alcançou um dos menores valores de perda de log e um dos maiores valores de consistência Os melhores resultados foram obtidos com o código de Jeremy … …enquanto o código DNN estava no mesmo nível da regressão logística, o XGBoost realmente atendeu a dois critérios.
Bom ver algum progresso! Obrigado por assistir e até a próxima..


![Giới thiệu các kênh Marketing 0 đồng [ Bài 1] – Công cụ marketing](https://59s.com.br/wp-content/uploads/2022/12/htmlF_IMG_638b365461402-1024x576.jpg)