{"id":26057,"date":"2022-12-05T18:13:09","date_gmt":"2022-12-05T18:13:09","guid":{"rendered":"https:\/\/building.nubank.com\/best-practices-for-real-time-machine-learning-alerting\/"},"modified":"2024-03-21T16:35:35","modified_gmt":"2024-03-21T16:35:35","slug":"melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas","status":"publish","type":"post","link":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/","title":{"rendered":"Melhores Pr\u00e1ticas para Aprendizado de M\u00e1quina em Tempo Real: Alertas"},"content":{"rendered":"\n<p>Escrito por Felipe Almeida<br>Com contribui\u00e7\u00f5es de Caique Lima e Luiz Felix<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><a href=\"https:\/\/building.nubank.com\/real-time-machine-learning-models-in-real-life\/\">Aprendizado de M\u00e1quina em tempo real<\/a> refere-se \u00e0 integra\u00e7\u00e3o de Aprendizado de M\u00e1quina em sistemas que operam continuamente: isso costuma significar modelos que produzem pontua\u00e7\u00f5es e previs\u00f5es <strong>sob demanda<\/strong>, quando solicitado.<\/p>\n\n\n\n<p>Como qualquer software, as coisas <strong>podem<\/strong> e <strong>costumam<\/strong> dar errado de diversas maneiras. \u00c9 uma m\u00e1quina bem lubrificada onde uma pe\u00e7a com defeito costuma ter <strong>impactos negativos nos est\u00e1gios posteriores<\/strong>, como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>problemas de tempo de resposta devido ao aumento s\u00fabito de carga&nbsp;<\/li>\n\n\n\n<li>travamentos devido a problemas nos est\u00e1gios iniciais<\/li>\n\n\n\n<li>travamentos devido a instala\u00e7\u00f5es malfeitas<\/li>\n<\/ul>\n\n\n\n<p>Al\u00e9m do supracitado, h\u00e1 muitos <strong>outros tipos de falhas<\/strong> que se aplicam especificamente para modelos de aprendizado de m\u00e1quina (ML):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Recursos ausentes\/defeituosos<\/strong> causando previs\u00f5es err\u00f4neas<\/li>\n\n\n\n<li>Mudan\u00e7as s\u00fabitas na <strong>distribui\u00e7\u00e3o de popula\u00e7\u00e3o<\/strong> causando previs\u00f5es err\u00f4neas<\/li>\n<\/ul>\n\n\n\n<p>A principal diferen\u00e7a entre softwares regulares e habilitados por aprendizado de m\u00e1quina (ML) \u00e9 que modelos de ML podem ter <strong>defeitos silenciosos<\/strong>.&nbsp;<\/p>\n\n\n\n<p>Isso quer dizer que sistemas de aprendizado de m\u00e1quina (ML) podem estar produzindo previs\u00f5es err\u00f4neas mesmo <strong>sem haver exce\u00e7\u00f5es expl\u00edcitas ou mensagens de erro<\/strong>.<\/p>\n\n\n\n<p>Nas pr\u00f3ximas sess\u00f5es, analisamos as li\u00e7\u00f5es aprendidas e melhores pr\u00e1ticas reunidas em anos de aplica\u00e7\u00e3o de Aprendizado de M\u00e1quina (ML) a problemas da vida real no Nubank.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Alertas x Monitoramento<\/h2>\n\n\n\n<p><a href=\"https:\/\/building.nubank.com\/ml-model-monitoring-9-tips-from-the-trenches\/\">Monitoramento de modelo<\/a> refere-se a entender e abordar um comportamento <strong>latente<\/strong>, enquanto os alertas normalmente referem-se \u00e0 detec\u00e7\u00e3o de problemas <strong>urgentes<\/strong> que devem ser resolvidos urgentemente.<\/p>\n\n\n\n<p>Desta forma, o foco do monitoramento normalmente \u00e9 detectar problemas para <strong>entender e investigar<\/strong> o que est\u00e1 acontecendo.&nbsp;<\/p>\n\n\n\n<p>No entanto, h\u00e1 uma rela\u00e7\u00e3o pr\u00f3xima entre alertas e monitoramento: a primeira a\u00e7\u00e3o realizada por algu\u00e9m abordando um alerta pode ser precisamente abrir pain\u00e9is de monitoramento para comparar dados de curto prazo com dados de m\u00e9dio prazo.<\/p>\n\n\n\n<p>O foco dos alertas \u00e9 <strong>deixar o sistema funcionando normalmente o mais r\u00e1pido poss\u00edvel<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Alertas<\/strong><\/td><td><strong>Monitoramento<\/strong><\/td><\/tr><tr><td>Foco em a\u00e7\u00f5es r\u00e1pidas<\/td><td>Foco em entendimento e investiga\u00e7\u00e3o meticulosos<\/td><\/tr><tr><td>Curto prazo (horas e minutos)<\/td><td>M\u00e9dio prazo (dias, semanas e meses)<\/td><\/tr><tr><td>Consumo passivo (voc\u00ea <em>recebe<\/em> alertas)<\/td><td>Consumo ativo (voc\u00ea <em>escolhe<\/em> olhar os pain\u00e9is)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Monitoramento operacional ainda se aplica<\/h2>\n\n\n\n<p><strong>Sistemas habilitados por aprendizado de m\u00e1quina (ML) tamb\u00e9m s\u00e3o softwares<\/strong>! Isso significa que todos os problemas comuns e que podem acontecer com qualquer outro sistema tamb\u00e9m podem e devem acontecer com sistemas movidos a aprendizado de m\u00e1quina (ML).<\/p>\n\n\n\n<p>Aqui est\u00e3o alguns pontos do monitoramento de software regular que tamb\u00e9m se aplicam a sistemas de ML:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Integridade do sistema operacional<\/h2>\n\n\n\n<p>Como qualquer outro software de produ\u00e7\u00e3o em tempo real, voc\u00ea pode querer alertas para m\u00e9tricas regulares e verifica\u00e7\u00f5es de integridade:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Erros do Sistema<\/li>\n\n\n\n<li>Tempos de resposta<\/li>\n\n\n\n<li>Problemas de dimensionamento (CPU, RAM etc.)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Registros em Log\/Rastreamento<\/h2>\n\n\n\n<p>Voc\u00ea precisar\u00e1 das ferramentas de <strong>rastreamento distribu\u00eddo<\/strong> e <strong>registro em log<\/strong> de sempre para centralizar e habilitar a an\u00e1lise de dados de log.&nbsp;<\/p>\n\n\n\n<p>Isso \u00e9 essencial para alertas porque a maioria dos alertas verdadeiros geralmente ativar\u00e3o algum tipo de <strong>investiga\u00e7\u00e3o<\/strong>. \u00c9 aqui que uma infraestrutura de registro em log consistente \u00e9 \u00fatil.<\/p>\n\n\n\n<p>Algumas ferramentas comuns nesse espa\u00e7o s\u00e3o Splunk, Datadog e New Relic.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Escalas de plant\u00e3o<\/h2>\n\n\n\n<p>\u00c9 pr\u00e1tica padr\u00e3o em equipes de engenharia gerais ter <strong>escalas de plant\u00e3o<\/strong> para que sempre tenha algu\u00e9m dispon\u00edvel para abordar quest\u00f5es urgentes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Alertas devem ser padronizados quando poss\u00edvel<\/h2>\n\n\n\n<p>A padroniza\u00e7\u00e3o ajuda a melhorar a efici\u00eancia e a dimensionar seus processos.<\/p>\n\n\n\n<p>Isso tamb\u00e9m possibilita que voc\u00ea veja uma cole\u00e7\u00e3o de coisas como vers\u00f5es diferentes da mesma coisa, reduzindo a <strong>carga cognitiva<\/strong> quando interagir com sistemas grandes.<\/p>\n\n\n\n<p>Alertas n\u00e3o s\u00e3o diferentes. Aqui est\u00e3o alguns exemplos do que pode\/deve ser padronizado em rela\u00e7\u00e3o a isso:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Todos os alertas devem ser <strong>comunicados<\/strong> atrav\u00e9s das mesmas ferramentas quando poss\u00edvel (Opsgenie, Slack, e-mails ad-hoc etc.)<\/li>\n\n\n\n<li>Todos os alertas devem (quando poss\u00edvel) ser <strong>formatados<\/strong> da mesma forma: texto padronizado, cores padronizadas e estilos padronizados<\/li>\n\n\n\n<li>Todos os alertas devem usar <strong>m\u00e9tricas similares<\/strong> para transmitir informa\u00e7\u00f5es (por exemplo, m\u00e9dias, percentuais, m\u00ednimos, m\u00e1ximos, contagens etc.)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Inclua comportamentos esperados&nbsp;<\/h2>\n\n\n\n<p>Quando escrever o texto para o alerta, n\u00e3o diga simplesmente o que est\u00e1 errado, <strong>diga o que era esperado<\/strong>, e sempre inclua o <strong>per\u00edodo<\/strong> avaliado.<\/p>\n\n\n\n<p>Isso ajuda as pessoas a entender a import\u00e2ncia do alerta e a urg\u00eancia da rea\u00e7\u00e3o, aumentando a efici\u00eancia e reduzindo a chance de falsos positivos.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Bom<\/strong><\/td><td><strong>Ruim<\/strong><\/td><\/tr><tr><td>&#8220;<strong>Alerta<\/strong>: a m\u00e9trica X esperada deve estar entre 100 e 150. <strong>Estava em 250<\/strong> nos \u00faltimos 30 minutos&#8221;<\/td><td>&#8220;<strong>Alerta<\/strong>: o valor atual para a m\u00e9trica X \u00e9 <strong>250<\/strong>&#8220;<\/td><\/tr><tr><td>&#8220;<strong>Alerta<\/strong>: o valor para a m\u00e9trica X era <strong>500<\/strong> na \u00faltima hora. Esperava-se 100 (stddev=25) com base em dados de hist\u00f3rico.&#8221;<\/td><td>&#8220;<strong>Alerta<\/strong>: o valor para a m\u00e9trica X est\u00e1 acima do valor esperado: <strong>500<\/strong>&#8220;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Alertas devem ser pr\u00e1ticos<\/h2>\n\n\n\n<p>Sempre que poss\u00edvel, adicione um <strong>link<\/strong> ou <strong>curso de a\u00e7\u00e3o claro<\/strong> para ajudar na rea\u00e7\u00e3o aos alertas.<\/p>\n\n\n\n<p>Isso \u00e9 \u00fatil tanto para engenheiros experientes quanto novatos que podem nunca ter enfrentado um problema espec\u00edfico antes.<\/p>\n\n\n\n<p>Um jeito ainda melhor de fazer isso \u00e9 ter <strong>manuais<\/strong> padronizados com guias sobre como abordar os problemas mais comuns, onde encontrar ajuda etc. Isso garante processos padronizados e reduz os riscos de erro humano.<\/p>\n\n\n\n<p><em>Pergunte-se quando criar um alerta: &#8220;Qual a primeira informa\u00e7\u00e3o que o atendente precisar\u00e1 procurar quando abordar o alerta? Como posso facilitar para ele?&#8221;<\/em><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Bom<\/strong><\/td><td><strong>Ruim<\/strong><\/td><\/tr><tr><td>&#8220;<strong>Alerta<\/strong>: nenhuma mensagem morta esperada nos \u00faltimos 30 minutos. Obteve 1.000.&nbsp;<br><br>Clique aqui para abrir a Fila de Mensagens Mortas (DLQ) e tentar configura\u00e7\u00f5es novamente&#8221;<\/td><td>&#8220;<strong>Alerta<\/strong>: 1.000 mensagens mortas na DLQ&#8221;<\/td><\/tr><tr><td>&#8220;<strong>Alerta<\/strong>: o modelo X n\u00e3o respondeu \u00e0s verifica\u00e7\u00f5es de integridade por 5 minutos.&nbsp;<br><br>Clique aqui para procurar problemas e solu\u00e7\u00f5es comuns no manual.&#8221;<\/td><td>&#8220;<strong>Alerta: <\/strong>o modelo X n\u00e3o responde&#8221;<\/td><\/tr><tr><td>&#8220;<strong>Alerta<\/strong>: o tempo de resposta m\u00e9dio para o modelo X nos \u00faltimos 30 minutos \u00e9 500ms (esperava-se 300ms).&nbsp;<br><br>Clique aqui para editar as configura\u00e7\u00f5es de dimensionamento&#8221;<\/td><td>&#8220;<strong>Alerta<\/strong>: o tempo de resposta m\u00e9dio para o modelo X \u00e9 500ms&#8221;<\/td><\/tr><tr><td>&#8220;<strong>Alerta<\/strong>: 50% dos eventos pontuados pelo modelo X receberam pontua\u00e7\u00f5es altas nos \u00faltimos 30 minutos (esperava-se 1%).&nbsp;<br><br>Clique aqui para editar esse <em>feature flag<\/em> ou entre em contato com engenheiros no canal do Slack #qualquer para obter ajuda.&#8221;<\/td><td>&#8220;<strong>Alerta<\/strong>: 50% dos eventos pontuados pelo modelo X receberam pontua\u00e7\u00f5es altas nos \u00faltimos 30 minutos&#8221;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Alertas devem ser f\u00e1ceis de configurar&nbsp;<\/h2>\n\n\n\n<p>Os alertas para modelos de aprendizado de m\u00e1quina eventualmente ficam obsoletos.&nbsp;<\/p>\n\n\n\n<p>Isso pode acontecer por v\u00e1rios motivos: a distribui\u00e7\u00e3o subjacente de dados trocados ao longo do tempo, mudan\u00e7a nos requisitos do neg\u00f3cio ou da engenharia ou at\u00e9 mesmo outro alerta que j\u00e1 englobe o atual foi lan\u00e7ado.<\/p>\n\n\n\n<p>Alertas <strong>param de funcionar de uma de duas maneiras<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Excesso de sensibilidade: <\/strong>ficam sens\u00edveis demais e param de funcionar com frequ\u00eancia (isso normalmente \u00e9 chamado de <strong>fadiga de alerta<\/strong>)<\/li>\n\n\n\n<li><strong>Falta de sensibilidade: <\/strong>ficam grosseiros demais e nunca mais disparam<\/li>\n<\/ul>\n\n\n\n<p>Em outras palavras, a troca entre precis\u00e3o\/reitera\u00e7\u00e3o pode precisar de mudan\u00e7as.<\/p>\n\n\n\n<p>Fa\u00e7a com que todos possam facilmente:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>e<strong>ditar a configura\u00e7\u00e3o do alerta <\/strong>(mudar os limites para <strong>calibrar<\/strong> a raz\u00e3o sinal\/ru\u00eddo etc.)<\/li>\n\n\n\n<li>deixar o alerta <strong>cochilar<\/strong> por algum tempo<\/li>\n\n\n\n<li>d<strong>esabilitar<\/strong> completamente o alerta<\/li>\n\n\n\n<li>c<strong>onfirmar<\/strong> o alerta (<em>mais disso depois<\/em>).<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Bom<\/strong><\/td><td><strong>Ruim<\/strong><\/td><\/tr><tr><td>&#8220;<strong>Alerta<\/strong>: &lt;\u2026texto de alerta\u2026&gt;&nbsp;<br><br>Clique aqui para editar a configura\u00e7\u00e3o do alerta&#8221;<\/td><td>&#8220;<strong>Alerta<\/strong>: &lt;\u2026texto de alerta\u2026&gt;\u201d<\/td><\/tr><tr><td>&#8220;<strong>Alerta<\/strong>: &lt;\u2026texto de alerta\u2026&gt;&nbsp;<br><br>Clique aqui para editar a configura\u00e7\u00e3o do alerta<br>Clique aqui para adiar este alerta por 6 horas.&#8221;<\/td><td>&#8220;<strong>Alerta<\/strong>: &lt;\u2026texto de alerta\u2026&gt;\u201d<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Leve seu p\u00fablico em considera\u00e7\u00e3o<\/h2>\n\n\n\n<p>Os alertas devem ser escritos com o p\u00fablico desejado em mente. Isso garantir\u00e1 que a <strong>mensagem que voc\u00ea transmitir<\/strong> seja recebida pelo outro lado.<\/p>\n\n\n\n<p>Pessoas diferentes <a href=\"https:\/\/building.nubank.com\/data-scientist-machine-learning-engineer-roles-how-are-they-different-how-are-they-alike\/\">exercem uma fun\u00e7\u00e3o<\/a> na entrega de um sistema habilitado por aprendizado de m\u00e1quina (ML) para produ\u00e7\u00e3o. Elas incluem, por exemplo, equipes de engenharia, profissionais de Ci\u00eancia de Dados\/Aprendizado de M\u00e1quina e equipes de produto\/neg\u00f3cios.<\/p>\n\n\n\n<p><strong>Dependendo do p\u00fablico, pode ser bom adaptar:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A <strong>linguagem usada<\/strong>&nbsp;<\/li>\n\n\n\n<li>As <strong>m\u00e9tricas<\/strong> usadas (m\u00e9tricas de engenharia para engenheiros, m\u00e9tricas estat\u00edsticas para equipes de Ci\u00eancia de Dados\/Aprendizado de M\u00e1quina, m\u00e9tricas de neg\u00f3cios para produto\/neg\u00f3cios)<\/li>\n\n\n\n<li>A a\u00e7\u00e3o a ser realizada (equipes de engenharia precisam ver m\u00e9tricas do sistema de baixo n\u00edvel, equipes de neg\u00f3cios s\u00f3 est\u00e3o interessadas de fato nos efeitos ao neg\u00f3cio)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>P\u00fablico de Engenheiros<\/strong><\/td><td><strong>P\u00fablico de Profissionais de Ci\u00eancia de Dados\/Aprendizado de M\u00e1quina<\/strong><\/td><td><strong>P\u00fablico de Produto\/Neg\u00f3cios<\/strong><\/td><\/tr><tr><td>&#8220;<strong>Alerta<\/strong>: a taxa de esgotamento de tempo para o modelo Y em tempo real est\u00e1 em 50% pelos \u00faltimos 5 minutos (esperava-se entre 1 e 5%)<br><br><br><br>clique aqui para visualizar a integridade de pod e as configura\u00e7\u00f5es de dimensionamento.\u201d<\/td><td>&#8220;<strong>Alerta<\/strong>: o recurso X usado pelo modelo Y est\u00e1 com uma m\u00e9dia de 500ms a ser recuperada nos \u00faltimos 5 minutos (esperava-se 50 a 100ms)<br><br><br>clique aqui para visualizar o painel de recupera\u00e7\u00e3o de recursos&#8221;<\/td><td>&#8220;<strong>Alerta<\/strong>: menos clientes que de costume est\u00e3o recebendo empr\u00e9stimos nos \u00faltimos 5 minutos (esperava-se 100, atualmente \u00e9 1)<br><br>clique aqui para visualizar o painel de neg\u00f3cios.&nbsp;Para mais informa\u00e7\u00f5es, v\u00e1 para o canal #qualquer no Slack&#8221;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><em>Exemplo: o mesmo alerta sendo visualizado por 3 perspectivas diferentes, dependendo do p\u00fablico-alvo<\/em>&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Alertas devem ser confirm\u00e1veis e rastre\u00e1veis<\/h2>\n\n\n\n<p>Alertas, por defini\u00e7\u00e3o, devem ser &#8220;raros&#8221;, e a ativa\u00e7\u00e3o de um alerta, por necessidade, \u00e9 um evento meio ca\u00f3tico.<\/p>\n\n\n\n<p>Voc\u00ea precisa, no m\u00ednimo, de um jeito s\u00f3lido de sinalizar que um alerta <strong>est\u00e1 sendo abordado<\/strong>.&nbsp;<\/p>\n\n\n\n<p>Poder <strong>confirmar<\/strong> (ou dar &#8220;ACK&#8221; para os antigos) ajuda sua equipe a garantir que haja ao menos uma pessoa investigando ativamente o alerta atual. Isso tamb\u00e9m previne que diversas pessoas interfiram umas com as outras. A maioria das ferramentas de alerta suporta isso (por exemplo, OpsGenie).<\/p>\n\n\n\n<p>Al\u00e9m de serem confirm\u00e1veis, os alertas idealmente devem ser <strong>rastre\u00e1veis<\/strong>. Ou seja, deve haver um <strong>log<\/strong> do <strong>per\u00edodo<\/strong> do alerta, por exemplo.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Quando<\/strong> o alerta foi disparado?<\/li>\n\n\n\n<li><strong>Quem<\/strong> estava envolvido na abordagem do alerta?<\/li>\n\n\n\n<li><strong>Como<\/strong> verificamos que o alerta era real?<\/li>\n\n\n\n<li><strong>Era<\/strong> um falso positivo?&nbsp;&nbsp;<\/li>\n\n\n\n<li><strong>Como<\/strong> foi mitigado?<\/li>\n\n\n\n<li><strong>O que<\/strong> foi feito para evitar problemas similares no futuro?<\/li>\n<\/ul>\n\n\n\n<p>Esses logs ajudam engenheiros a encontrar informa\u00e7\u00f5es no futuro, e provavelmente facilitam e agilizam a abordagem de futuros incidentes.&nbsp;<\/p>\n\n\n\n<p>Eles tamb\u00e9m possibilitam que voc\u00ea <strong>analise dados de alerta<\/strong> e descubra, por exemplo, culpados comuns no sistema e padr\u00f5es de alerta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Outras Dicas<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Alertas para a aus\u00eancia de eventos<\/h2>\n\n\n\n<p>Normalmente usamos contagens, m\u00e9dias e somas para detectar comportamentos anormais.<\/p>\n\n\n\n<p>No entanto, se um servi\u00e7o em particular tiver parado de funcionar completamente, talvez <strong>n\u00e3o haja logs<\/strong>, o que significa que n\u00e3o haver\u00e1 m\u00e9dias, contagens e nem somas.<\/p>\n\n\n\n<p>Um jeito de resolver isso \u00e9 ter <a href=\"https:\/\/support.atlassian.com\/opsgenie\/docs\/add-heartbeats-to-monitor-external-systems\/\">alertas de pulsa\u00e7\u00e3o<\/a>, pelos quais voc\u00ea deve executar <em>ping<\/em> em algum API externo para sinalizar que seu servi\u00e7o\/sistema est\u00e1 operando com integridade.<\/p>\n\n\n\n<p>Esses alertas de pulsa\u00e7\u00e3o normalmente s\u00e3o configurados com um <strong>per\u00edodo<\/strong>, e se seu servi\u00e7o\/sistema n\u00e3o enviar um <em>ping<\/em> nesse per\u00edodo, isso ativar\u00e1 um alerta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Teste seus alertas antecipadamente<\/h2>\n\n\n\n<p>Como qualquer parte de c\u00f3digo, voc\u00ea deve <strong>testar<\/strong> que o alerta ser\u00e1 ativado quando deve.<\/p>\n\n\n\n<p>Um jeito de testar os alertas \u00e9 deixar os limites de ativa\u00e7\u00e3o artificialmente baixos, para que o alerta seja mais sens\u00edvel e f\u00e1cil de testar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Os c\u00e1lculos est\u00e3o corretos?<\/li>\n\n\n\n<li>As pessoas certas est\u00e3o sendo notificadas (opsgenie, slack etc.)?<\/li>\n\n\n\n<li>Os recursos de apoio (confirma\u00e7\u00e3o, rastreamento etc.) est\u00e3o funcionando como esperado?<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Esteja ciente da sazonalidade<\/h2>\n\n\n\n<p>Dados de recurso para sistemas em tempo real normalmente representam dados do <strong>cliente<\/strong>. Desta forma, eles s\u00e3o propensos a <strong>ciclos naturais<\/strong>, como dia\/noite, dia \u00fatil\/fim de semana etc.<\/p>\n\n\n\n<p>Isso pode atrapalhar os fluxos de alerta porque a defini\u00e7\u00e3o de &#8220;comportamento normal&#8221; costuma depender do hor\u00e1rio, do dia da semana etc.<\/p>\n\n\n\n<p>Um jeito de abordar isso \u00e9 incluir um limite de <strong>tamanho de amostragem m\u00ednimo<\/strong> para garantir que alguns alertas (por exemplo, taxa de a\u00e7\u00f5es) s\u00f3 sejam disparados se houver dados suficientes.<\/p>\n\n\n\n<p>Por exemplo: ativar alerta se a taxa de pontua\u00e7\u00f5es acima de 0,9 estiver acima de 20%, <strong>mas apenas se<\/strong> <em>o tamanho de amostragem for ao menos 10.000<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Em dimens\u00e3o, os custos <em>ser\u00e3o<\/em> um problema<\/h2>\n\n\n\n<p>Quando operar em dimens\u00f5es suficientemente grandes (pense em <strong>milh\u00f5es<\/strong> de solicita\u00e7\u00f5es a um modelo em tempo real por dia), os custos <strong>ser\u00e3o<\/strong> um problema<\/p>\n\n\n\n<p>Os alertas normalmente precisam ser feitos em tempo real (apesar de tamb\u00e9m haver usos para alertas em lote), ent\u00e3o voc\u00ea precisa de ferramentas e infraestrutura robustas e caras para lidar com todos esses eventos.<\/p>\n\n\n\n<p>Um jeito simples de cuidar disso \u00e9 usar <strong>dados de amostragem<\/strong> para alertar, em vez de dados completos.&nbsp;<\/p>\n\n\n\n<p>Em outras palavras, voc\u00ea poderia selecionar uma amostra aleat\u00f3ria de 10% dos seus dados e calcular alertas sobre <em>eles<\/em>, em vez de usar os dados completos. A maioria das m\u00e9tricas estat\u00edsticas ser\u00e1 igual, <strong>a uma fra\u00e7\u00e3o do custo<\/strong>.<strong> <\/strong>Entretanto, lembre-se que a amostragem dos dados s\u00f3 gera resultados seguros se a distribui\u00e7\u00e3o subjacente for grande o suficiente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, analisamos as li\u00e7\u00f5es aprendidas e melhores pr\u00e1ticas reunidas em anos de aplica\u00e7\u00e3o de Aprendizado de M\u00e1quina a problemas da vida real no Nubank.<\/p>\n","protected":false},"author":178110136,"featured_media":24714,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2503,2502],"tags":[2726,2725,2724],"ppma_author":[2366],"class_list":["post-26057","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-analytics","category-data-science-machine-learning-pt-br","tag-best-practices-pt-br","tag-ml-pt-br","tag-real-time-machine-learning-pt-br"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Alerting for real-time Models - Building Nubank<\/title>\n<meta name=\"description\" content=\"Neste artigo, analisamos as li\u00e7\u00f5es aprendidas e melhores pr\u00e1ticas reunidas em anos de aplica\u00e7\u00e3o de Aprendizado de M\u00e1quina a problemas da vida real 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.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Alerting for real-time Models - Building Nubank\" \/>\n<meta property=\"og:description\" content=\"Neste artigo, analisamos as li\u00e7\u00f5es aprendidas e melhores pr\u00e1ticas reunidas em anos de aplica\u00e7\u00e3o de Aprendizado de M\u00e1quina a problemas da vida real no Nubank.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/\" \/>\n<meta property=\"og:site_name\" content=\"Building Nubank\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-05T18:13:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T16:35:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/11\/real-time-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=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/\"},\"author\":{\"name\":\"Felipe Almeida - Machine Learning Engineer\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/2bce0340e6a654811bb0aea0e58092c5\"},\"headline\":\"Melhores Pr\u00e1ticas para Aprendizado de M\u00e1quina em Tempo Real: Alertas\",\"datePublished\":\"2022-12-05T18:13:09+00:00\",\"dateModified\":\"2024-03-21T16:35:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/\"},\"wordCount\":2284,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/real-time-machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"keywords\":[\"Best Practices\",\"ML\",\"Real-time Machine Learning\"],\"articleSection\":[\"Data &amp; Analytics\",\"Data science &amp; Machine Learning\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/\",\"url\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/\",\"name\":\"Alerting for real-time Models - Building Nubank\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/real-time-machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"datePublished\":\"2022-12-05T18:13:09+00:00\",\"dateModified\":\"2024-03-21T16:35:35+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/2bce0340e6a654811bb0aea0e58092c5\"},\"description\":\"Neste artigo, analisamos as li\u00e7\u00f5es aprendidas e melhores pr\u00e1ticas reunidas em anos de aplica\u00e7\u00e3o de Aprendizado de M\u00e1quina a problemas da vida real no Nubank.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/real-time-machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/real-time-machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"width\":1200,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Melhores Pr\u00e1ticas para Aprendizado de M\u00e1quina em Tempo Real: Alertas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/#website\",\"url\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/\",\"name\":\"Building Nubank\",\"description\":\"We make the extraordinary happen\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/building.nubank.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.nubank.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/2bce0340e6a654811bb0aea0e58092c5\",\"name\":\"Felipe Almeida - Machine Learning Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Screenshot-2024-03-26-at-14.06.59.png1dcbca3b60d19e8fb28ae3829d8da80a\",\"url\":\"https:\\\/\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Screenshot-2024-03-26-at-14.06.59.png\",\"contentUrl\":\"https:\\\/\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Screenshot-2024-03-26-at-14.06.59.png\",\"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.nubank.com\\\/pt-br\\\/author\\\/felipe-almeida-data-scientist\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Alerting for real-time Models - Building Nubank","description":"Neste artigo, analisamos as li\u00e7\u00f5es aprendidas e melhores pr\u00e1ticas reunidas em anos de aplica\u00e7\u00e3o de Aprendizado de M\u00e1quina a problemas da vida real 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.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/","og_locale":"pt_BR","og_type":"article","og_title":"Alerting for real-time Models - Building Nubank","og_description":"Neste artigo, analisamos as li\u00e7\u00f5es aprendidas e melhores pr\u00e1ticas reunidas em anos de aplica\u00e7\u00e3o de Aprendizado de M\u00e1quina a problemas da vida real no Nubank.","og_url":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/","og_site_name":"Building Nubank","article_published_time":"2022-12-05T18:13:09+00:00","article_modified_time":"2024-03-21T16:35:35+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/11\/real-time-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":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/#article","isPartOf":{"@id":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/"},"author":{"name":"Felipe Almeida - Machine Learning Engineer","@id":"https:\/\/building.nubank.com\/pt-br\/#\/schema\/person\/2bce0340e6a654811bb0aea0e58092c5"},"headline":"Melhores Pr\u00e1ticas para Aprendizado de M\u00e1quina em Tempo Real: Alertas","datePublished":"2022-12-05T18:13:09+00:00","dateModified":"2024-03-21T16:35:35+00:00","mainEntityOfPage":{"@id":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/"},"wordCount":2284,"commentCount":0,"image":{"@id":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/11\/real-time-machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","keywords":["Best Practices","ML","Real-time Machine Learning"],"articleSection":["Data &amp; Analytics","Data science &amp; Machine Learning"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/","url":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/","name":"Alerting for real-time Models - Building Nubank","isPartOf":{"@id":"https:\/\/building.nubank.com\/pt-br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/#primaryimage"},"image":{"@id":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/11\/real-time-machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","datePublished":"2022-12-05T18:13:09+00:00","dateModified":"2024-03-21T16:35:35+00:00","author":{"@id":"https:\/\/building.nubank.com\/pt-br\/#\/schema\/person\/2bce0340e6a654811bb0aea0e58092c5"},"description":"Neste artigo, analisamos as li\u00e7\u00f5es aprendidas e melhores pr\u00e1ticas reunidas em anos de aplica\u00e7\u00e3o de Aprendizado de M\u00e1quina a problemas da vida real no Nubank.","breadcrumb":{"@id":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/#primaryimage","url":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/11\/real-time-machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","contentUrl":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/11\/real-time-machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","width":1200,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/building.nubank.com\/pt-br\/melhores-praticas-para-aprendizado-de-maquina-em-tempo-real-alertas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/building.nubank.com\/pt-br\/"},{"@type":"ListItem","position":2,"name":"Melhores Pr\u00e1ticas para Aprendizado de M\u00e1quina em Tempo Real: Alertas"}]},{"@type":"WebSite","@id":"https:\/\/building.nubank.com\/pt-br\/#website","url":"https:\/\/building.nubank.com\/pt-br\/","name":"Building Nubank","description":"We make the extraordinary happen","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/building.nubank.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.nubank.com\/pt-br\/#\/schema\/person\/2bce0340e6a654811bb0aea0e58092c5","name":"Felipe Almeida - Machine Learning Engineer","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/building.nubank.com\/wp-content\/uploads\/2024\/03\/Screenshot-2024-03-26-at-14.06.59.png1dcbca3b60d19e8fb28ae3829d8da80a","url":"https:\/\/building.nubank.com\/wp-content\/uploads\/2024\/03\/Screenshot-2024-03-26-at-14.06.59.png","contentUrl":"https:\/\/building.nubank.com\/wp-content\/uploads\/2024\/03\/Screenshot-2024-03-26-at-14.06.59.png","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.nubank.com\/pt-br\/author\/felipe-almeida-data-scientist\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/11\/real-time-machine-learning-Feature_1200x675.jpg?fit=1200%2C675&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pbKBB5-6Mh","jetpack_sharing_enabled":true,"authors":[{"term_id":2366,"user_id":178110136,"is_guest":0,"slug":"felipe-almeida-data-scientist","display_name":"Felipe Almeida - Machine Learning Engineer","avatar_url":{"url":"https:\/\/building.nubank.com\/wp-content\/uploads\/2024\/03\/Screenshot-2024-03-26-at-14.06.59.png","url2x":"https:\/\/building.nubank.com\/wp-content\/uploads\/2024\/03\/Screenshot-2024-03-26-at-14.06.59.png"},"0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/posts\/26057","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/users\/178110136"}],"replies":[{"embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/comments?post=26057"}],"version-history":[{"count":5,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/posts\/26057\/revisions"}],"predecessor-version":[{"id":28828,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/posts\/26057\/revisions\/28828"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/media\/24714"}],"wp:attachment":[{"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/media?parent=26057"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/categories?post=26057"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/tags?post=26057"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/ppma_author?post=26057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}