{"id":26045,"date":"2022-12-19T22:40:47","date_gmt":"2022-12-19T22:40:47","guid":{"rendered":"https:\/\/building.nu.com\/automatic-retraining-for-machine-learning-models-tips-and-lessons-learned\/"},"modified":"2024-03-21T16:32:40","modified_gmt":"2024-03-21T16:32:40","slug":"retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas","status":"publish","type":"post","link":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/","title":{"rendered":"Retreinamento autom\u00e1tico para modelos de aprendizado de m\u00e1quina: dicas e li\u00e7\u00f5es aprendidas"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Escrito por Felipe Almeida com contribui\u00e7\u00f5es de Marcelo Koga, Raphael Soares, Gabriel Bakiewicz e George Salvino<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Os modelos de aprendizado de m\u00e1quina<\/strong> come\u00e7am a decair no mesmo instante em que come\u00e7am a ser usados. Na verdade, eles <em>precisam<\/em> perder desempenho porque s\u00e3o treinados com uma <strong>imagem est\u00e1tica do mundo<\/strong> (um conjunto de treinamento).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O mundo, entretanto, muda constantemente, o que torna essa captura obsoleta com o passar do tempo. Essas mudan\u00e7as no mundo (conforme representado pelas caracter\u00edsticas usadas) costumam ser chamadas de &#8220;<a href=\"https:\/\/machinelearningmastery.com\/gentle-introduction-concept-drift-machine-learning\/\">desvio de conceito<\/a>&#8221; (concept drift) ou &#8220;desvio de dados&#8221; (data drift).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A velocidade com a qual o modelo decai depende de v\u00e1rias raz\u00f5es. Por exemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>a quantidade de caracter\u00edsticas que voc\u00ea est\u00e1 usando e como elas est\u00e3o correlacionadas.<\/li>\n\n\n\n<li>O qu\u00e3o regularizado e\/ou robusto \u00e9 o modelo.<\/li>\n\n\n\n<li>Eventos n\u00e3o previstos e repentinos que mudam as coisas (por exemplo, a covid).<\/li>\n\n\n\n<li>A varia\u00e7\u00e3o inerente no campo dos problemas.&nbsp;<\/li>\n\n\n\n<li>O qu\u00e3o <a href=\"https:\/\/towardsdatascience.com\/what-is-adversarial-machine-learning-dbe7110433d6\">antagonizador<\/a> \u00e9 o seu caso de uso (ou seja, quanto incentivo as pessoas t\u00eam para tentar enganar o modelo de prop\u00f3sito).<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>\u00c0s vezes, o jeito mais f\u00e1cil e robusto de atualizar o seu modelo \u00e9 apenas retrein\u00e1-lo com dados mais recentes, sem necessariamente adicionar novas caracter\u00edsticas.&nbsp;Isso permite ao seu modelo ver uma captura mais recente do estado do mundo e atualizar os pr\u00f3prios par\u00e2metros de acordo com isso.<\/em><\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"987\" height=\"431\" src=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/01\/image-2.png?resize=987%2C431&#038;ssl=1\" alt=\"\" class=\"wp-image-20024\" style=\"width:1450px;height:auto\" srcset=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/01\/image-2.png?w=987&amp;ssl=1 987w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/01\/image-2.png?resize=300%2C131&amp;ssl=1 300w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/01\/image-2.png?resize=768%2C335&amp;ssl=1 768w\" sizes=\"auto, (max-width: 987px) 100vw, 987px\" \/><figcaption class=\"wp-element-caption\"><img loading=\"lazy\" decoding=\"async\" width=\"567\" height=\"248\" src=\"https:\/\/lh7-us.googleusercontent.com\/riJuf8q18ra-_oy8lByfog7kftH5XzgYNYJaSKzElYF05rwUc3AA46_sIRO_QtkDOnWGq8lJ5RkYqemmF1xTJxDEV9JGEr5br6-92emoD0U-eWNXCVgSMoAKqoqppYW1HLxWgmE-ZZhUimi3lSyqtw\" alt=\"Gr\u00e1fico, Gr\u00e1fico de linhas\n\nDescri\u00e7\u00e3o gerada automaticamente\"><em>Ap\u00f3s cada retreinamento do modelo (o cronograma de retreinamento peri\u00f3dico mostrado), o desempenho dele vai aumentar \u00e0 medida que for treinado com dados mais recentes, mas \u00e9 improv\u00e1vel que ele seja muito melhor do que o desempenho original, a n\u00e3o ser que voc\u00ea adicione mais caracter\u00edsticas (inspira\u00e7\u00e3o tirada de <\/em><a href=\"https:\/\/ml-ops.org\/content\/mlops-principles#monitoring\"><em>mlops.org<\/em><\/a><em>)<\/em>&nbsp;<br><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Isso envolve alguns riscos e muitas concess\u00f5es e provavelmente s\u00f3 \u00e9 adequado quando voc\u00ea j\u00e1 tem um fluxo s\u00f3lido e bem desenvolvido de Opera\u00e7\u00f5es de Aprendizado de M\u00e1quina, mas existem <strong>benef\u00edcios claros<\/strong> tamb\u00e9m.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nas pr\u00f3ximas se\u00e7\u00f5es, vamos falar sobre algumas das li\u00e7\u00f5es que aprendemos ao longos desses \u00faltimos anos que passamos retreinando modelos de maneira autom\u00e1tica no Nubank.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00e9-requisitos: CI\/CD, monitoramento e um pipeline de dados s\u00f3lido<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea n\u00e3o puder implantar com confian\u00e7a uma nova vers\u00e3o de um modelo com um s\u00f3 clique, o retreinamento autom\u00e1tico n\u00e3o ser\u00e1 poss\u00edvel.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea precisa, no m\u00ednimo, destes tr\u00eas componentes na sua <strong>arquitetura de MLOps<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CI\/CD: <\/strong>algum tipo de sistema no qual o c\u00f3digo rec\u00e9m-enviado \u00e9 testado automaticamente (unidade\/integra\u00e7\u00e3o) e mudan\u00e7as no c\u00f3digo acionam automaticamente uma nova implanta\u00e7\u00e3o na produ\u00e7\u00e3o.<\/li>\n\n\n\n<li><a href=\"https:\/\/building.nu.com\/ml-model-monitoring-9-tips-from-the-trenches\/\"><strong>Monitoramento de modelo<\/strong><\/a><strong>:<\/strong> algum tipo de sistema no qual voc\u00ea pode ver <em>continuamente <\/em>estat\u00edsticas sobre o seu modelo e os dados, como: distribui\u00e7\u00e3o das caracter\u00edsticas inseridas, distribui\u00e7\u00e3o de pontua\u00e7\u00f5es e desempenho em compara\u00e7\u00e3o \u00e0 verdade fundamental, por exemplo.\n<ul class=\"wp-block-list\">\n<li>Sem um monitoramento apropriado, voc\u00ea n\u00e3o tem como saber o qu\u00e3o bom ou ruim \u00e9 o seu modelo <em>atual<\/em>; voc\u00ea n\u00e3o devia estar pensando em substitu\u00ed-lo ainda.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Pipeline de dados s\u00f3lido:<\/strong> voc\u00ea precisa de uma maneira de gerar conjuntos de dados de treinamento\/teste (incluindo destinos) <em>de maneira program\u00e1tica<\/em> e <em>confi\u00e1vel<\/em><strong><em>.<\/em><\/strong> (O ideal \u00e9 que haja engenheiros de dados na sua equipe para cuidar disso para voc\u00ea.)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">&#8220;Autom\u00e1tico&#8221; normalmente n\u00e3o significa <em>totalmente<\/em> autom\u00e1tico\u00a0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Retreinar <em>e implantar<\/em> de maneira autom\u00e1tica um novo modelo provavelmente n\u00e3o vale o risco.&nbsp;Implantar um modelo falho e ele ser usado para tomar <strong>decis\u00f5es falhas na produ\u00e7\u00e3o<\/strong> \u00e9 uma das piores coisas que podem acontecer em uma organiza\u00e7\u00e3o impulsionada por dados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uma sugest\u00e3o alternativa \u00e9 simplesmente fazer a \u00faltima etapa do pipeline abrir um pull request (PR) no Github, com o desempenho comparado do modelo-base e do modelo contestador.&nbsp;Mas o PR ainda precisa ser aprovado\/mesclado manualmente antes de acionar uma implanta\u00e7\u00e3o que substituir\u00e1 o modelo atual pelo novo modelo na produ\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na nossa experi\u00eancia, esse \u00e9 um meio-termo com um bom custo-benef\u00edcio entre n\u00e3o ter automa\u00e7\u00e3o e ter o processo totalmente automatizado (sem interven\u00e7\u00e3o manual de qualquer tipo).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">N\u00e3o se esque\u00e7a da camada de pol\u00edtica<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos supor que as previs\u00f5es do seu modelo estejam sendo usadas por alguma equipe\/sistema em est\u00e1gios posteriores (se um modelo n\u00e3o estiver sendo usado, ele \u00e9 um risco, n\u00e3o um benef\u00edcio, e voc\u00ea deveria provavelmente desativ\u00e1-lo).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A maneira como as outras equipes usam as previs\u00f5es feitas pelo modelo se chama<strong> pol\u00edtica.<\/strong>&nbsp; O modo mais simples de derivar uma pol\u00edtica de uma pontua\u00e7\u00e3o de modelo \u00e9 usar uma instru\u00e7\u00e3o if simples na qual uma a\u00e7\u00e3o (por exemplo, ceder o empr\u00e9stimo, adquirir um bem) dever\u00e1 ser executada se a pontua\u00e7\u00e3o do modelo estiver acima de algum limite.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>O exemplo mais simples poss\u00edvel de uma pol\u00edtica \u00e9 um limite de pontua\u00e7\u00e3o trivial:&nbsp;IF pontua\u00e7\u00e3o do modelo \u2265 limite, THEN executar uma a\u00e7\u00e3o<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Sempre que retreinar um modelo, <strong>pode ser que voc\u00ea precise ajustar a pol\u00edtica tamb\u00e9m<\/strong>. Isso \u00e9 essencial. Se voc\u00ea esquecer de fazer o ajuste, todos os usos do modelo em est\u00e1gios posteriores poder\u00e3o n\u00e3o ser precisos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dependendo da complexidade da pol\u00edtica, voc\u00ea perceber\u00e1 que \u00e9 bem mais dif\u00edcil retreinar ou reajustar a pol\u00edtica do que retreinar um modelo. Se voc\u00ea n\u00e3o tomar cuidado, isso poder\u00e1 se tornar um gargalo no seu pipeline.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na nossa experi\u00eancia, uma maneira de tornar os ajustes de pol\u00edticas mais f\u00e1cil \u00e9 fazer os seus modelos usarem previs\u00f5es com <a href=\"https:\/\/scikit-learn.org\/stable\/modules\/calibration.html\">probabilidades calibradas<\/a><strong>.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Use par\u00e2metros de compara\u00e7\u00e3o justos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s conseguir retreinar um modelo com dados mais recentes, voc\u00ea provavelmente vai querer comparar o desempenho dele com o modelo atual na produ\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Existem muitas maneiras de comparar modelos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Comparar a import\u00e2ncia das caracter\u00edsticas (por exemplo, usando gr\u00e1ficos da <a href=\"https:\/\/github.com\/slundberg\/shap\">SHAP<\/a>).<\/li>\n\n\n\n<li>Ver qual deles tem o melhor desempenho <strong>fora da amostra (OOS) <\/strong>(por exemplo, ROCAUC, PRAUC, logloss etc).<\/li>\n\n\n\n<li>O qu\u00e3o est\u00e1veis s\u00e3o as previs\u00f5es do modelo com o passar do tempo?<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>Qualquer que seja a m\u00e9trica que voc\u00ea queira usar para comparar as duas vers\u00f5es do modelo (ou seja, o modelo-base e o modelo contestador), ela precisa ser calculada em um conjunto de dados holdout e neutro.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Isso significa que o conjunto de dados de refer\u00eancia deve estar fora da amostra do ponto de vista de ambos os modelos. Do contr\u00e1rio, existe o risco de um vazamento de dados por parte de qualquer um dos conjuntos de treinamento e os seus resultados n\u00e3o ser\u00e3o confi\u00e1veis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"378\" src=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/Screen-Shot-2022-12-19-at-19.07.29.png?resize=1024%2C378&#038;ssl=1\" alt=\"\" class=\"wp-image-19952\" srcset=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/Screen-Shot-2022-12-19-at-19.07.29.png?resize=1024%2C378&amp;ssl=1 1024w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/Screen-Shot-2022-12-19-at-19.07.29.png?resize=300%2C111&amp;ssl=1 300w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/Screen-Shot-2022-12-19-at-19.07.29.png?resize=768%2C284&amp;ssl=1 768w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/Screen-Shot-2022-12-19-at-19.07.29.png?resize=1536%2C567&amp;ssl=1 1536w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/Screen-Shot-2022-12-19-at-19.07.29.png?resize=2048%2C756&amp;ssl=1 2048w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/Screen-Shot-2022-12-19-at-19.07.29.png?resize=1200%2C443&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\"><em>Both the baseline and the challenger models must be evaluated on an unbiased test set that is part of neither training set. If your data is timestamped, a good suggestion is to use an out-of-time (OOT) holdout dataset that is outside the training period for both models<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>P.S.:<\/strong> se por alguma raz\u00e3o, voc\u00ea n\u00e3o tiver acesso a um conjunto de dados neutro para testar os dois modelos, \u00e9 melhor implantar as duas vers\u00f5es (a de base e a contestadora) juntas como parte de um <a href=\"https:\/\/building.nu.com\/introduction-to-a-b-tests\/\">teste A\/B<\/a> (e <a href=\"https:\/\/building.nu.com\/ml-model-monitoring-9-tips-from-the-trenches\/\">monitor\u00e1-las<\/a> de perto!).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cuidado com ciclos de feedback<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quando se fala em modelos de aprendizado de m\u00e1quina, o termo <a href=\"https:\/\/towardsdatascience.com\/feedback-loops-in-machine-learning-systems-701296c91787\">ciclo de feedback<\/a> refere-se aos casos em que o uso do modelo afeta o conjunto de treinamento futuro com o qual ele ser\u00e1 retreinado.&nbsp;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>Ciclos de feedback em modelos de aprendizado de m\u00e1quina: quando o modelo afeta seus pr\u00f3prios dados de treinamento futuros<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e1 v\u00e1rios exemplos de ciclos de feedback no aprendizado de m\u00e1quina:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Concess\u00e3o de cr\u00e9dito<\/strong>: somos capazes de perceber a falta de pagamento apenas dos clientes que receberam algum dinheiro (por defini\u00e7\u00e3o, n\u00e3o representa toda a popula\u00e7\u00e3o).<\/li>\n\n\n\n<li><strong>Sistemas de recomenda\u00e7\u00e3o: <\/strong>a a\u00e7\u00e3o do modelo vai mudar o comportamento do usu\u00e1rio no futuro (por exemplo, um modelo de atendimento ao cliente ou um sistema para sugerir filmes).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Por que os ciclos de feedback s\u00e3o um problema para o retreinamento autom\u00e1tico?<\/strong> Nem sempre s\u00e3o um problema, mas sem d\u00favida s\u00e3o algo do qual voc\u00ea precisa estar ciente e talvez mitigar de alguma forma, dependendo das necessidades do seu neg\u00f3cio.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eles poder\u00e3o se tornar um problema se o vi\u00e9s introduzido pelo modelo alterar seus dados de treinamento de uma maneira que atrapalhe o treinamento do modelo. Esse n\u00e3o \u00e9 um problema simples de ser resolvido, mas h\u00e1 alguns modos de lidar com ele. Por exemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Podemos usar um grupo de controle que n\u00e3o seja afetado pelas decis\u00f5es do modelo, de modo que possamos observ\u00e1-las sem vi\u00e9s?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos <a href=\"https:\/\/www.mathworks.com\/help\/risk\/reject-inference-for-credit-scorecards.html\">inferir<\/a> qual teria sido o r\u00f3tulo verdadeiro se o modelo n\u00e3o tivesse executado uma a\u00e7\u00e3o?<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"354\" src=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/01\/image-3.png?resize=1024%2C354&#038;ssl=1\" alt=\"\" class=\"wp-image-20026\" srcset=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/01\/image-3.png?resize=1024%2C354&amp;ssl=1 1024w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/01\/image-3.png?resize=300%2C104&amp;ssl=1 300w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/01\/image-3.png?resize=768%2C266&amp;ssl=1 768w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/01\/image-3.png?resize=1200%2C415&amp;ssl=1 1200w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/01\/image-3.png?w=1500&amp;ssl=1 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\"><img loading=\"lazy\" decoding=\"async\" width=\"567\" height=\"196\" src=\"https:\/\/lh7-us.googleusercontent.com\/9QVGBQ27_N6zQQ28D0EvnwL92ViyIwBls0YQytPPpk2x_sSasgrr0fs1BuAM-S5Tuk3f30EqFFppD8m55t4U3TpSo1E9im-m7GvdTTvcbjk00uYG3SKjWAB60TNczzV7VrQXXBLfGoEhN-gTPaddWg\" alt=\"Diagrama\n\nDescri\u00e7\u00e3o gerada automaticamente\"><em>Um jeito simples de entender os ciclos de feedback \u00e9 pensar nos modelos que preveem o risco de inadimpl\u00eancia de um empr\u00e9stimo.<\/em> <em>Esse \u00e9 um problema cl\u00e1ssico de ciclo de feedback nos sistemas de concess\u00e3o de cr\u00e9dito. N\u00f3s conseguimos observar apenas os r\u00f3tulos de (e, portanto, treinar os modelos com) empr\u00e9stimos aprovados.&nbsp;Isso acrescenta um vi\u00e9s not\u00e1vel nos dados coletados ap\u00f3s a introdu\u00e7\u00e3o do modelo.<\/em>&nbsp;<br><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Teste de unidade (mais ou menos) para modelos de aprendizado de m\u00e1quina (ML)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00f3s gostar\u00edamos de poder garantir que um modelo rec\u00e9m-retreinado ser\u00e1 melhor do que a vers\u00e3o atual para todos os exemplos pontuados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Normalmente, \u00e9 imposs\u00edvel ter esse tipo de garantia porque os modelos de aprendizado de m\u00e1quina (ML) s\u00e3o inerentemente estoc\u00e1sticos. Dizer que um modelo se sai melhor do que outro na verdade significa apenas que ele \u00e9 melhor <strong>em m\u00e9dia<\/strong>.Uma maneira de ter um pouco de tranquilidade \u00e9 ter alguns <strong>exemplos sint\u00e9ticos<\/strong> que qualquer modelo conseguiria classificar de maneira correta com facilidade e depois pontuar esses exemplos &#8220;artificiais&#8221; com o modelo retreinado e verificar se ele teve o resultado esperado.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"385\" src=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-24-at-15.40.36.png?resize=750%2C385&#038;ssl=1\" alt=\"\" class=\"wp-image-20927\" style=\"width:1450px;height:auto\" srcset=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-24-at-15.40.36.png?w=750&amp;ssl=1 750w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-24-at-15.40.36.png?resize=300%2C154&amp;ssl=1 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><figcaption class=\"wp-element-caption\"><em>Validar modelos com exemplos artificiais, criados especificamente para fazer uma representa\u00e7\u00e3o do ponto de vista dos neg\u00f3cios, \u00e9 uma outra maneira de verificar a sanidade dos modelos retreinados.<\/em> <em>Neste caso, parece ter alguma falha no modelo contestador. O exemplo 3 est\u00e1 errado nele. J\u00e1 no modelo atual e mais antigo, ele est\u00e1 certo.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">O resultado esperado pode ser a classe prevista, no caso de uma classifica\u00e7\u00e3o, ou uma pontua\u00e7\u00e3o dentro de algum intervalo se voc\u00ea tiver um <strong>modelo de regress\u00e3o<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Avaliar o desempenho em subpopula\u00e7\u00f5es\/extratos tamb\u00e9m ajuda, como voc\u00ea pode ver abaixo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Avaliar o desempenho em subpopula\u00e7\u00f5es\/extratos\u00a0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 muito prov\u00e1vel que os exemplos pontuados pelo seu modelo possam ser divididos como subpopula\u00e7\u00f5es separadas ou grupos vagos.&nbsp;Por exemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>um modelo de concess\u00e3o de cr\u00e9dito que estime o risco de inadimpl\u00eancia de indiv\u00edduos e de empresas.&nbsp;<\/li>\n\n\n\n<li>Um modelo para detectar fraude em compras online, mas tamb\u00e9m em compras presenciais e em compras internacionais.<\/li>\n\n\n\n<li>Um modelo de previs\u00e3o de pre\u00e7os que estime os pre\u00e7os de casas, apartamentos e condom\u00ednios.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>Avaliar as m\u00e9tricas de desempenho de ambos os modelos (o modelo-base e o modelo contestador) separadamente para cada extrato ajuda voc\u00ea a verificar mais uma vez se n\u00e3o surgiu algum problema inesperado no novo conjunto de treinamento.<\/em><\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"432\" src=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-24-at-15.42.36.png?resize=1024%2C432&#038;ssl=1\" alt=\"\" class=\"wp-image-20930\" srcset=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-24-at-15.42.36.png?resize=1024%2C432&amp;ssl=1 1024w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-24-at-15.42.36.png?resize=300%2C127&amp;ssl=1 300w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-24-at-15.42.36.png?resize=768%2C324&amp;ssl=1 768w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-24-at-15.42.36.png?resize=1536%2C648&amp;ssl=1 1536w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-24-at-15.42.36.png?resize=2048%2C864&amp;ssl=1 2048w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-24-at-15.42.36.png?resize=1200%2C506&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\"><em>Quando se compara o modelo-base com o modelo retreinado (contestador) sem olhar os desempenhos individuais em cada estrato, alguns detalhes podem passar despercebidos.&nbsp;Neste caso, o retreinamento aumentou o desempenho do modelo globalmente, mas um dos substratos piorou.<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Outras dicas<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">N\u00e3o combine o pipeline de retreinamento com um modelo espec\u00edfico<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quando voc\u00ea escrever um pipeline (por exemplo, com Airflow, Kubeflow ou scripts independentes) para retreinar o modelo com dados mais recentes e fazer todas as an\u00e1lises, certifique-se de que ele seja escrito de uma maneira que n\u00e3o esteja combinada com um modelo ou caso de uso \u00fanico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Siga as pr\u00e1ticas de engenharia de software padr\u00e3o: passar as vari\u00e1veis como argumentos para que o pipeline possa ser usado por outros modelos, para per\u00edodos arbitr\u00e1rios, usando compara\u00e7\u00e3o personalizada ou estrat\u00e9gias de avalia\u00e7\u00e3o etc.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Leve a censura de r\u00f3tulos em considera\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Os r\u00f3tulos s\u00e3o geralmente obtidos de fontes de dados diferentes das caracter\u00edsticas. Al\u00e9m disso, <strong>os r\u00f3tulos costumam estar atrasados<\/strong> em rela\u00e7\u00e3o ao hor\u00e1rio de pontua\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso significa que o r\u00f3tulo verdadeiro para o exemplo pontuado hoje poder\u00e1 estar dispon\u00edvel apenas ap\u00f3s algum tempo (por exemplo, quando o empr\u00e9stimo foi pago novamente\/caiu em inadimpl\u00eancia).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o se esque\u00e7a de levar isso em considera\u00e7\u00e3o quando estiver decidindo com quais per\u00edodos os modelos retreinados ser\u00e3o treinados\/validados (ou seja, voc\u00ea provavelmente deve ignorar (ou <em>censurar<\/em>) dados para os quais destinos ainda n\u00e3o estejam dispon\u00edveis).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Leve custos em considera\u00e7\u00e3o quando estiver decidindo com que frequ\u00eancia fazer o retreinamento<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Normalmente, h\u00e1 custos associados ao retreinamento de modelos. Alguns deles s\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Custos do sistema<\/strong>: executar as tarefas de dados e modelos de treinamento necess\u00e1rios exige recursos computacionais, e eles custam dinheiro, principalmente na escala da Web.<\/li>\n\n\n\n<li><strong>Custos humanos\/trabalhistas:<\/strong>\n<ul class=\"wp-block-list\">\n<li>os cientistas de dados v\u00e3o precisar passar um tempo depurando e\/ou verificando os resultados antes de implantar um modelo retreinado na produ\u00e7\u00e3o<\/li>\n\n\n\n<li>Os usu\u00e1rios em est\u00e1gios posteriores poder\u00e3o ter que atualizar os processos deles para se adaptarem a mudan\u00e7as na precis\u00e3o\/desempenho do modelo.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Esses custos devem se comparar aos benef\u00edcios esperados de retreinar um modelo (normalmente, aumentar o desempenho em compara\u00e7\u00e3o ao modelo-base), ou fazer isso n\u00e3o ter\u00e1 sentido econ\u00f4mico.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ferramentas sugeridas<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Kubeflow Pipelines (KFP)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O <a href=\"https:\/\/www.kubeflow.org\/\">Kubeflow<\/a> tem um componente chamado <a href=\"https:\/\/www.kubeflow.org\/docs\/components\/pipelines\/\">Kubeflow Pipelines<\/a> (abreviado como KFP) que pode ser usado para criar pipelines e fluxos de trabalho, inclusive aqueles para retreinar um modelo, como criar conjuntos de dados de treinamento, treinar classificadores e fazer rotinas de avalia\u00e7\u00e3o, por exemplo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00f3s usamos isso no Nubank e tem nos servido bem at\u00e9 agora.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Papermill<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O <a href=\"https:\/\/papermill.readthedocs.io\/en\/latest\/\">Papermill<\/a> \u00e9 uma ferramenta usada para tornar <a href=\"https:\/\/jupyter.org\/\">Jupyter Notebooks<\/a> <em>execut\u00e1veis <\/em>e parametriz\u00e1veis (ou seja, voc\u00ea pode executar Notebooks como se fossem scripts e passar par\u00e2metros para eles).\u00c9 uma ferramenta \u00fatil para preencher a lacuna entre o c\u00f3digo de tempo de desenvolvimento (normalmente criado pelos <a href=\"https:\/\/building.nu.com\/data-scientist-machine-learning-engineer-roles-how-are-they-different-how-are-they-alike\/\">cientista de dados<\/a>) e o c\u00f3digo de tempo de produ\u00e7\u00e3o.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nesta postagem, vamos falar sobre algumas das li\u00e7\u00f5es que aprendemos ao longo desses \u00faltimos anos que passamos retreinando modelos de maneira autom\u00e1tica no Nubank.<\/p>\n","protected":false},"author":178110136,"featured_media":24760,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[2503,2502],"tags":[2714,2504,2558],"class_list":["post-26045","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-analytics","category-data-science-machine-learning-pt-br","tag-automatic-retraining-pt-br","tag-ciencia-de-dados","tag-machine-learning-models-pt-br"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Automatic retraining for machine learning models - Building Nubank<\/title>\n<meta name=\"description\" content=\"Nesta postagem, vamos falar sobre algumas das li\u00e7\u00f5es que aprendemos ao longo desses \u00faltimos anos que passamos retreinando modelos de maneira autom\u00e1tica no Nubank.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automatic retraining for machine learning models - Building Nubank\" \/>\n<meta property=\"og:description\" content=\"Nesta postagem, vamos falar sobre algumas das li\u00e7\u00f5es que aprendemos ao longo desses \u00faltimos anos que passamos retreinando modelos de maneira autom\u00e1tica no Nubank.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/\" \/>\n<meta property=\"og:site_name\" content=\"Building Nubank\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-19T22:40:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T16:32:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Felipe Almeida - Machine Learning Engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@queirozfcom\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Felipe Almeida - Machine Learning Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/\"},\"author\":{\"name\":\"Felipe Almeida - Machine Learning Engineer\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/2bce0340e6a654811bb0aea0e58092c5\"},\"headline\":\"Retreinamento autom\u00e1tico para modelos de aprendizado de m\u00e1quina: dicas e li\u00e7\u00f5es aprendidas\",\"datePublished\":\"2022-12-19T22:40:47+00:00\",\"dateModified\":\"2024-03-21T16:32:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/\"},\"wordCount\":2480,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"keywords\":[\"Automatic retraining\",\"ci\u00eancia de dados\",\"machine learning models\"],\"articleSection\":[\"Data &amp; Analytics\",\"Data science &amp; Machine Learning\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/\",\"url\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/\",\"name\":\"Automatic retraining for machine learning models - Building Nubank\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"datePublished\":\"2022-12-19T22:40:47+00:00\",\"dateModified\":\"2024-03-21T16:32:40+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/2bce0340e6a654811bb0aea0e58092c5\"},\"description\":\"Nesta postagem, vamos falar sobre algumas das li\u00e7\u00f5es que aprendemos ao longo desses \u00faltimos anos que passamos retreinando modelos de maneira autom\u00e1tica no Nubank.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"width\":1200,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Retreinamento autom\u00e1tico para modelos de aprendizado de m\u00e1quina: dicas e li\u00e7\u00f5es aprendidas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#website\",\"url\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/\",\"name\":\"Building Nubank\",\"description\":\"We make the extraordinary happen\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/2bce0340e6a654811bb0aea0e58092c5\",\"name\":\"Felipe Almeida - Machine Learning Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/building.nubank.com.br\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/avatar_user_178110136_1697720449-96x96.jpg\",\"url\":\"https:\\\/\\\/building.nubank.com.br\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/avatar_user_178110136_1697720449-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/building.nubank.com.br\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/avatar_user_178110136_1697720449-96x96.jpg\",\"caption\":\"Felipe Almeida - Machine Learning Engineer\"},\"description\":\"Felipe Almeida is responsible for engineering and managing Data Science &amp; Machine Learning projects at Nubank. He has a Bachelor's degree in Computer Science and a Master's degree in Computer Engineering, both from UFRJ. Felipe has experience working with e-commerce, credit and fraud. Before joining Nubank in 2019, he worked in companies such as Ita\u00fa-Unibanco and VTEX. In his spare time, he likes to exercise and learn foreign languages. He is active on twitter and he blogs at https:\\\/\\\/queirozf.com\",\"sameAs\":[\"http:\\\/\\\/queirozf.com\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/felipeqbalmeida\",\"https:\\\/\\\/x.com\\\/queirozfcom\"],\"url\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/author\\\/felipe-almeida-data-scientist\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automatic retraining for machine learning models - Building Nubank","description":"Nesta postagem, vamos falar sobre algumas das li\u00e7\u00f5es que aprendemos ao longo desses \u00faltimos anos que passamos retreinando modelos de maneira autom\u00e1tica no Nubank.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/","og_locale":"pt_BR","og_type":"article","og_title":"Automatic retraining for machine learning models - Building Nubank","og_description":"Nesta postagem, vamos falar sobre algumas das li\u00e7\u00f5es que aprendemos ao longo desses \u00faltimos anos que passamos retreinando modelos de maneira autom\u00e1tica no Nubank.","og_url":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/","og_site_name":"Building Nubank","article_published_time":"2022-12-19T22:40:47+00:00","article_modified_time":"2024-03-21T16:32:40+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","type":"image\/jpeg"}],"author":"Felipe Almeida - Machine Learning Engineer","twitter_card":"summary_large_image","twitter_creator":"@queirozfcom","twitter_misc":{"Escrito por":"Felipe Almeida - Machine Learning Engineer","Est. tempo de leitura":"13 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/#article","isPartOf":{"@id":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/"},"author":{"name":"Felipe Almeida - Machine Learning Engineer","@id":"https:\/\/building.nu.com\/pt-br\/#\/schema\/person\/2bce0340e6a654811bb0aea0e58092c5"},"headline":"Retreinamento autom\u00e1tico para modelos de aprendizado de m\u00e1quina: dicas e li\u00e7\u00f5es aprendidas","datePublished":"2022-12-19T22:40:47+00:00","dateModified":"2024-03-21T16:32:40+00:00","mainEntityOfPage":{"@id":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/"},"wordCount":2480,"commentCount":0,"image":{"@id":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","keywords":["Automatic retraining","ci\u00eancia de dados","machine learning models"],"articleSection":["Data &amp; Analytics","Data science &amp; Machine Learning"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/","url":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/","name":"Automatic retraining for machine learning models - Building Nubank","isPartOf":{"@id":"https:\/\/building.nu.com\/pt-br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/#primaryimage"},"image":{"@id":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","datePublished":"2022-12-19T22:40:47+00:00","dateModified":"2024-03-21T16:32:40+00:00","author":{"@id":"https:\/\/building.nu.com\/pt-br\/#\/schema\/person\/2bce0340e6a654811bb0aea0e58092c5"},"description":"Nesta postagem, vamos falar sobre algumas das li\u00e7\u00f5es que aprendemos ao longo desses \u00faltimos anos que passamos retreinando modelos de maneira autom\u00e1tica no Nubank.","breadcrumb":{"@id":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/#primaryimage","url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","contentUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","width":1200,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/building.nu.com\/pt-br\/retreinamento-automatico-para-modelos-de-aprendizado-de-maquina-dicas-e-licoes-aprendidas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/building.nu.com\/pt-br\/"},{"@type":"ListItem","position":2,"name":"Retreinamento autom\u00e1tico para modelos de aprendizado de m\u00e1quina: dicas e li\u00e7\u00f5es aprendidas"}]},{"@type":"WebSite","@id":"https:\/\/building.nu.com\/pt-br\/#website","url":"https:\/\/building.nu.com\/pt-br\/","name":"Building Nubank","description":"We make the extraordinary happen","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/building.nu.com\/pt-br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/building.nu.com\/pt-br\/#\/schema\/person\/2bce0340e6a654811bb0aea0e58092c5","name":"Felipe Almeida - Machine Learning Engineer","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/building.nubank.com.br\/wp-content\/uploads\/2023\/10\/avatar_user_178110136_1697720449-96x96.jpg","url":"https:\/\/building.nubank.com.br\/wp-content\/uploads\/2023\/10\/avatar_user_178110136_1697720449-96x96.jpg","contentUrl":"https:\/\/building.nubank.com.br\/wp-content\/uploads\/2023\/10\/avatar_user_178110136_1697720449-96x96.jpg","caption":"Felipe Almeida - Machine Learning Engineer"},"description":"Felipe Almeida is responsible for engineering and managing Data Science &amp; Machine Learning projects at Nubank. He has a Bachelor's degree in Computer Science and a Master's degree in Computer Engineering, both from UFRJ. Felipe has experience working with e-commerce, credit and fraud. Before joining Nubank in 2019, he worked in companies such as Ita\u00fa-Unibanco and VTEX. In his spare time, he likes to exercise and learn foreign languages. He is active on twitter and he blogs at https:\/\/queirozf.com","sameAs":["http:\/\/queirozf.com\/","https:\/\/www.linkedin.com\/in\/felipeqbalmeida","https:\/\/x.com\/queirozfcom"],"url":"https:\/\/building.nu.com\/pt-br\/author\/felipe-almeida-data-scientist\/"}]}},"jetpack_shortlink":"https:\/\/wp.me\/pbKBB5-6M5","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2022\/12\/machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","_links":{"self":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts\/26045","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/users\/178110136"}],"replies":[{"embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/comments?post=26045"}],"version-history":[{"count":5,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts\/26045\/revisions"}],"predecessor-version":[{"id":28824,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts\/26045\/revisions\/28824"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/media\/24760"}],"wp:attachment":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/media?parent=26045"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/categories?post=26045"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/tags?post=26045"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}