<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Joguei os Dados - Medium]]></title>
        <description><![CDATA[Jornalista-poeta (pra lá de humanas) transitou para a área de programação Data Science (pra cá de exatas) - Medium]]></description>
        <link>https://medium.com/joguei-os-dados?source=rss----e3e9199dd497---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Joguei os Dados - Medium</title>
            <link>https://medium.com/joguei-os-dados?source=rss----e3e9199dd497---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 19 May 2026 19:13:24 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/joguei-os-dados" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[DeepEval: avalie LLMs com framework Open‑Source]]></title>
            <link>https://medium.com/joguei-os-dados/deepeval-avalie-llms-com-framework-open-source-b8dd4ad0bc88?source=rss----e3e9199dd497---4</link>
            <guid isPermaLink="false">https://medium.com/p/b8dd4ad0bc88</guid>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[genai]]></category>
            <dc:creator><![CDATA[Letícia Gerola]]></dc:creator>
            <pubDate>Fri, 01 Aug 2025 12:44:23 GMT</pubDate>
            <atom:updated>2025-08-01T12:44:23.176Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*e-SPMcqCGj2bLdi8" /><figcaption>Photo by <a href="https://unsplash.com/@sasun1990?utm_source=medium&amp;utm_medium=referral">Sasun Bughdaryan</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4>Já pensou em colocar um LLM pra julgar outro LLM?</h4><p>Se os modelos de linguagem generativa já estão respondendo perguntas, escrevendo e-mails e até montando código por conta própria, por que não deixá-los também <strong>avaliar uns aos outros</strong>?</p><p>É exatamente essa a proposta do <strong>DeepEval</strong> — um framework open-source criado para facilitar a avaliação de sistemas baseados em LLMs. Com ele, você consegue medir se a resposta de um modelo faz sentido, se está coerente com a fonte, se não está alucinando fatos, e até se carrega viés ou toxicidade. E o mais curioso? Em muitos casos, quem faz essa avaliação <strong>é outro LLM</strong>, cuidadosamente instruído para atuar como um “juiz”.</p><p>Se você está desenvolvendo sistemas com RAG (Retrieval-Augmented Generation), se preocupa com qualidade de resposta em produção, ou simplesmente quer garantir que suas alterações de prompt não pioraram tudo sem querer… o DeepEval pode virar seu melhor amigo.</p><p>Neste artigo, vamos explorar como o DeepEval funciona, por que ele vem ganhando espaço em projetos sérios (e até em pipelines de CI/CD), e como você pode começar a usá-lo para dar mais confiança às suas aplicações com IA generativa.</p><p>Desenvolvido pela Confident AI, o <strong>DeepEval</strong> é um framework open-source projetado para avaliar aplicações que utilizam modelos de linguagem (LLMs) de forma similar ao <em>pytest</em>, mas voltado para saídas probabilísticas, permitindo testes unitários e regressões automáticas de desempenho. Com mais de 400 mil downloads mensais e cerca de meio milhão de avaliações por dia, já é amplamente usado em ambientes de CI/CD por empresas como Microsoft, BCG e AstraZeneca.</p><h3>Principais Capacidades</h3><h4>Métricas de Avaliação</h4><p>DeepEval oferece um conjunto robusto de métricas integradas, cobrindo diversos aspectos importantes:</p><ul><li><strong>G-Eval</strong>: métrica customizável baseada em LLMs como “juízes” para avaliação de critérios livres;</li><li><strong>Métricas RAG</strong>: relevância da resposta, fidelidade (faithfulness), recall/contextual precision, contextual relevancy, além de <em>RAGAS.</em></li><li><strong>Hallucination</strong>, <strong>viés</strong>, <strong>toxidez</strong> e coerência sem referência textual.</li></ul><h4>LLM-as-a-Judge</h4><p>Uma inovação central do DeepEval é o uso de LLMs como avaliadores. Você pode configurar julgamentos de saída única (single-output) ou comparações entre saídas (pairwise), onde o LLM atribui nota ou escolhe a resposta melhor de acordo com critérios definidos no prompt. Isso supera limitações de métodos tradicionais como BLEU ou ROUGE e substitui parcialmente a avaliação humana, tornando os testes mais escaláveis e semânticos.</p><h3>Integração com RAG e Testes Automatizados</h3><h4>Pipelines RAG</h4><p>Ao avaliar sistemas Retrieval-Augmented Generation (RAG), DeepEval permite medir:</p><ul><li><strong>Relevância da resposta ao contexto recuperado</strong>,</li><li><strong>Fidelidade factual</strong>, e <strong>precisão de contexto</strong>,</li><li><strong>Recall contextual</strong> e <strong>RAGAS</strong>, todos ajustáveis por thresholds</li></ul><h4>Testes no Pytest / CI</h4><p>DeepEval é compatível com o ecossistema Python e pode ser integrado a pipelines de <em>CI/CD</em> como um teste unitário tradicional:</p><ul><li>Criação de datasets sintéticos ou manuais de casos de teste;</li><li>Automatização de comparações entre versões de prompts ou modelos;</li><li>Detecção de regressões através de comparação de resultados históricos.</li></ul><h3>Plataforma Confident AI</h3><p>Embora DeepEval funcione localmente, a Confident AI oferece uma plataforma cloud opcional que complementa o framework com:</p><ul><li>UI para visualização de relatórios, comparativos de versões, análise de distribuição de métricas;</li><li>Observabilidade de LLM apps em produção (tracing, login detalhado, métricas em live);</li><li>A/B testing e coleta de feedback humano.</li></ul><h3>Exemplo de código</h3><pre>from deepeval import assert_test<br>from deepeval.metrics import GEval, HallucinationMetric<br>from deepeval.test_case import LLMTestCase, LLMTestCaseParams</pre><pre>def test_llm_response():<br>    test_case = LLMTestCase(<br>        name=&quot;verificar relevante e sem alucinações&quot;,<br>        input=&quot;Pergunta X&quot;,<br>        actual_output=&quot;Resposta gerada&quot;<br>    )</pre><pre>    test_case.add_metric(GEval(<br>        name=&quot;relevância&quot;,<br>        model=&quot;gpt-4&quot;,<br>        threshold=0.5,<br>        evaluation_steps=[&quot;Avalie a relevância da resposta&quot;],<br>        evaluation_params=[LLMTestCaseParams.INPUT, LLMTestCaseParams.ACTUAL_OUTPUT]<br>    ))</pre><pre>    test_case.add_metric(HallucinationMetric(name=&quot;checar-alucinação&quot;))<br>    assert_test(test_case)</pre><p>Para cenários sem dependência de APIs externas, é possível usar modelos open-source como Llama, GPT4All ou Mixtral como avaliadores, mantendo tudo de forma local e preservando privacidade dos dados.</p><h3>Considerações e Boas Práticas</h3><ul><li><strong>Responsabilidade de Prompt Design</strong>: LLM-as-a‑Judge depende da qualidade do prompt; é fundamental definir exemplos claros e testar com exemplos variados.</li><li><strong>Limitações de avaliadores open‑source</strong>: Ainda que promissores, modelos LLM open‑source podem ter menor capacidade de julgamento profundo! Casos de uso crítico devem ser avaliados com cautela.</li><li><strong>Proteção contra vieses</strong>: é ideal regularmente revisar métricas de viés e toxidade, ajustando prompts e thresholds.</li><li><strong>Atualização constante</strong>: aevolução de métricas e funcionalidade está contínua, recomendo demais acompanhar o repositório GitHub e blogs da Confident AI pra ajudar a te manter atualizado em relação ao framework.</li></ul><h3>Fontes</h3><ul><li><a href="http://documentation.confident-ai.com+13GitHub+13GitHub+13">Repositório <strong>GitHub DeepEval</strong></a> (framework open-source para avaliação de LLMs, com métricas como G‑Eval, hallucination, answer relevancy, RAGAS etc.)</li><li><strong>Blog “</strong><a href="http://christophergs.com+11confident-ai.com+11confident-ai.com+11"><strong>How I Built Deterministic LLM Evaluation Metrics for DeepEval</strong></a><strong>”</strong> por Confident AI, detalhando o uso de LLM-as‑a‑Judge, downloads mensais e escala de uso.</li><li>Artigo <strong>“</strong><a href="http://confident-ai.com+3confident-ai.com+3confident-ai.com+3"><strong>LLM‑as‑a‑Judge Simply Explained</strong></a><strong>”</strong> (Confident AI, jul/2025), explicando o paradigma LLM‑as‑a‑Judge, tipos de julgamento (single-output, pairwise) e pontuação.</li><li>Guia <strong>“</strong><a href="http://Medium+9confident-ai.com+9docs.llamaindex.ai+9"><strong>LLM Evaluation Metrics: The Ultimate Guide</strong></a><strong>”</strong> (Confident AI, jun/2025), cobrindo métricas como answer relevancy, faithfulness, contextual precision/recall e RAGAS.</li><li>Blog <strong>“</strong><a href="http://Reddit+13christophergs.com+13confident-ai.com+13"><strong>Leveraging Open Source Models for AI Evaluation with DeepEval</strong></a><strong>”</strong> (ChristopherGS, fev/2024), sobre uso de modelos open‑source e execução local de testes.</li><li>Artigo <strong>“</strong><a href="http://Medium+5Medium+5docs.llamaindex.ai+5"><strong>Evaluating LLM Responses with RAG and DeepEval</strong></a><strong>”</strong> (Medium, 3 meses atrás), mostrando avaliação automática com métricas de relevancy, bias, toxicity em pipelines RAG.</li><li>Tutorial prático <strong>“</strong><a href="http://christophergs.com+3DataCamp+3confident-ai.com+3"><strong>Evaluate LLMs Effectively Using DeepEval</strong></a><strong>”</strong> (DataCamp, jan/2025), com G‑Eval, integração pytest e benchmarking.</li><li>Página Confident AI explicando a plataforma <a href="http://GitHub+8confident-ai.com+8documentation.confident-ai.com+8"><strong>LLM Evaluation &amp; Observability</strong></a> suportando DeepEval como backend.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b8dd4ad0bc88" width="1" height="1" alt=""><hr><p><a href="https://medium.com/joguei-os-dados/deepeval-avalie-llms-com-framework-open-source-b8dd4ad0bc88">DeepEval: avalie LLMs com framework Open‑Source</a> was originally published in <a href="https://medium.com/joguei-os-dados">Joguei os Dados</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Métricas de avaliação para modelos em produção]]></title>
            <link>https://medium.com/joguei-os-dados/m%C3%A9tricas-de-avalia%C3%A7%C3%A3o-muito-al%C3%A9m-de-precision-e-recall-2ad504e6751d?source=rss----e3e9199dd497---4</link>
            <guid isPermaLink="false">https://medium.com/p/2ad504e6751d</guid>
            <category><![CDATA[dados]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[monitoramento]]></category>
            <dc:creator><![CDATA[Letícia Gerola]]></dc:creator>
            <pubDate>Wed, 03 Apr 2024 18:38:16 GMT</pubDate>
            <atom:updated>2024-04-04T18:37:02.127Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*YmDgEqKIO0vyQekr" /><figcaption>Photo by <a href="https://unsplash.com/@jaqbovsky?utm_source=medium&amp;utm_medium=referral">Michał Jakubowski</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4>Robustez, confiança… Conheça métricas para avaliar a qualidade de modelos pós deploy</h4><p>Quando se fala em métricas de avaliação, os clássicos são os primeiros a vir à cabeça: precision, recall, f1-score, acurácia, r2… Dependendo do problema, uma regra matemática que nos diz a eficácia da modelagem sendo implementada.</p><p>Chip Huyen destaca no livro <em>Designing ML Systems</em> ((<em>O’Reilly). Copyright 2022 Huyen Thi Khanh Nguyen, 978–1–098–10796–3</em>) que ‘ao avaliar um modelo, é importante diferenciar um “bom sistema” de um “sistema útil”’. Um bom sistema não é necessariamente útil, e um sistema ruim não é necessariamente inútil. Um veículo autônomo pode ser bom se for pelo menos tão bom quanto os motoristas humanos. Em alguns casos, mesmo que um sistema de Machine Learning funcione melhor do que um ser humano médio, as pessoas ainda podem não confiar nele, o que neste caso torna-o inútil. Por outro lado, um sistema que prevê a próxima palavra que um usuário digitará em seu telefone pode ser considerado ruim se for muito pior do que um falante nativo. No entanto, ainda pode ser útil se suas previsões puderem ajudar os usuários a digitar mais rápido!</p><p>Em desafios e competições, ao avaliar modelos de ML, cientistas tendem a se fixar em suas métricas de desempenho. No entanto, quando falamos de um modelo em produção, também queremos que os nossos modelos sejam robustos, bem calibrados e, em geral, que façam sentido para o usuário que o consome. Pensando nisso, apresento algumas métricas de avaliação pouco conhecidas que podem auxiliar (e muito!) a medir a sanidade de modelos já implementados (alô, observabilidade? Corre aqui!).</p><h4><strong>Perturbation Tests</strong></h4><p>Os testes de perturbação são uma técnica poderosa para avaliar a robustez de um modelo quando o assunto são <strong>pequenas alterações nos dados de entrada</strong>. Os testes envolvem introduzir perturbações nos dados de teste, como por exemplo adicionar ruído ou modificar ligeiramente os valores, e observar como o modelo responde a tais mudanças. Se o modelo for robusto, <strong>pequenas perturbações não devem afetar significativamente suas predições</strong>, indicando uma maior confiança na capacidade de generalização do nosso sistema.</p><h4><strong>Invariance Tests</strong></h4><p>Os testes de invariância são projetados para verificar se um modelo <strong>mantém suas previsões consistentes em diferentes contextos ou cenários</strong>. Essa métrica é particularmente útil em situações onde certas características dos dados podem mudar, <strong>mas as previsões do modelo devem permanecer estáveis</strong>. Um modelo de detecção de objetos em imagens deve ser invariante a mudanças de iluminação ou rotação, por exemplo. Realizar testes de invariância ajuda a garantir que o modelo seja confiável em diferentes condições e adversidades.</p><h4><strong>Directional Expectations Tests</strong></h4><p>Expectativas direcionais são úteis para avaliar se um modelo está seguindo as expectativas esperadas em relação às mudanças nos inputs de entrada. Por exemplo, se o valor de uma variável de entrada aumenta, espera-se que a previsão do modelo também aumente (ou diminua, dependendo do contexto). Se aumentarmos propositalmente a variável metro quadrado em um modelo de previsão de preço de apartamentos, espera-se que os preços também subam. Testes de expectativas direcionais ajudam a identificar se o modelo está se comportando conforme o esperado e se está capturando corretamente a relação entre as variáveis de entrada e saída.</p><h4><strong>Slice-Based Evaluation</strong></h4><p>A avaliação baseada em fatias (slice-based evaluation) é uma abordagem que envolve analisar o desempenho de um modelo em diferentes segmentos ou subgrupos dos dados. Isso é especialmente útil em problemas onde o desempenho do modelo pode variar significativamente entre diferentes grupos de dados, como em casos de desequilíbrio de classes ou vieses indesejados. Ao avaliar o modelo em fatias específicas dos dados, os cientistas de dados podem identificar áreas de melhoria e garantir que o modelo funcione de maneira justa e eficaz para todos os grupos de interesse. Se ajustarmos a variável gênero para que todos os labels indiquem ‘feminino’, por exemplo, o que acontece com as predições do nosso modelo? Testes como esse nos auxiliam no controle de ‘fairness’ do algoritmo e proporcionam uma gestão ativa de possíveis vieses.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2ad504e6751d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/joguei-os-dados/m%C3%A9tricas-de-avalia%C3%A7%C3%A3o-muito-al%C3%A9m-de-precision-e-recall-2ad504e6751d">Métricas de avaliação para modelos em produção</a> was originally published in <a href="https://medium.com/joguei-os-dados">Joguei os Dados</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Modelos de portfólio x modelos em produção]]></title>
            <link>https://medium.com/joguei-os-dados/modelos-de-portf%C3%B3lio-x-modelos-em-produ%C3%A7%C3%A3o-7f876b859432?source=rss----e3e9199dd497---4</link>
            <guid isPermaLink="false">https://medium.com/p/7f876b859432</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[mlops]]></category>
            <category><![CDATA[software-engineering]]></category>
            <dc:creator><![CDATA[Letícia Gerola]]></dc:creator>
            <pubDate>Tue, 27 Feb 2024 13:57:28 GMT</pubDate>
            <atom:updated>2024-02-27T13:57:28.381Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*wXSph7HJYpcWNqYs" /><figcaption>Photo by <a href="https://unsplash.com/@kommumikation?utm_source=medium&amp;utm_medium=referral">Mika Baumeister</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4><em>Ou: o que o Kaggle não te ensina</em></h4><p>A interseção entre a academia e o mercado de trabalho na área de ciência de dados e machine learning é maravilhosa — e complexa. Enquanto em projetos pessoais e competições somos convidados a nos concentrar na elaboração de algoritmos inovadores e na obtenção de pontuações impressionantes e precisas, no ambiente empresarial, os desafios vão muito além da simples construção de modelos. Algumas leituras recentes (que serão compartilhadas ao final deste texto!) despertaram esta reflexão sobre as principais diferenças entre a construção de algoritmos em contextos acadêmicos/portfólios pessoais e sua construção dentro de grandes corporações. A engenharia de software (especialização que optei fazer, é importante que se diga! Imparcialidade passou longe) pode desempenhar um papel crucial na implementação prática de sistemas de ML.</p><p>Para entender melhor tais diferenças, recorro ao excelente livro “Designing Machine Learning Systems”, de Chip Huyen, que oferece insights valiosos sobre as complexidades envolvidas na implementação de sistemas de Machine Learning em ambientes de produção. Uma das diferenças fundamentais é a ênfase na <strong>escalabilidade e na manutenção</strong> dos sistemas que acontece no mercado de trabalho, em contraste com a busca constante pela otimização de métricas, que costuma dominar o cenário acadêmico/competições/portfólio. Enquanto os desafios propostos em competições como Kaggle geralmente envolvem aprimorar um único modelo para maximizar a precisão (ou outra métrica de desempenho), no mercado, os cientistas de dados enfrentam a tarefa de integrar estes modelos em sistemas maiores, lidando com preocupações como escalabilidade, eficiência computacional, explicabilidade da solução e manutenção a longo prazo. Isso significa que, sim, muitas vezes se abre mão de alguns pontos percentuais de precisão (ou até da escolha do próprio modelo) por uma integração mais fluida com o sistema como um todo.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/744/0*OHfT6IUK4D-_380T" /><figcaption>A tabela acima traz diferenças fundamentais entre modelagem com olhar de pesquisa/desenvolvimento e modelagem com o olhar de implementação/produção. Reproduzido do livro: Designing Machine Learning Systems, by Chip Huyen (O’Reilly). Copyright 2022 Huyen Thi Khanh Nguyen, 978–1–098–10796–3.</figcaption></figure><p>O livro também ressalta a importância da colaboração interdisciplinar e da comunicação eficaz no ambiente de trabalho, onde os cientistas de dados frequentemente precisam colaborar com engenheiros de software, analistas de negócios e outros profissionais para desenvolver soluções que atendam às necessidades e restrições do negócio. Essa colaboração contrasta fortemente com a natureza mais ‘individualista’ do ambiente acadêmico ou de competições, onde os participantes muitas vezes trabalham de forma independente para desenvolver suas soluções.</p><p>No entanto, uma das diferenças mais significativas entre a abordagem acadêmica e a prática profissional está na ênfase dada à etapa de preparação e manutenção dos dados. Em projetos pessoais ou desafios, muitas vezes o foco está principalmente na modelagem em si, com grande parte do tempo e dos recursos dedicados à experimentação com algoritmos, técnicas de feature engineering e otimização de hiperparâmetros. Essa abordagem tende a subestimar a<strong><em> </em>importância da qualidade dos dados e todo o tempo gasto em sua preparação, labelização, validação com negócio e afins</strong>.</p><p>Vale lembrar que a necessidade de garantir a qualidade e a consistência dos dados não é apenas um obstáculo inicial: ela persiste ao longo de todo o ciclo de vida do sistema de ML. Um aspecto particularmente relevante é o conceito de “model drift” (mudança do modelo), que se refere à deterioração do desempenho do modelo ao longo do tempo devido a possíveis variações nos dados de entrada. Essas mudanças podem ser causadas por uma variedade de fatores, como alterações nos padrões de comportamento dos usuários, alterações nas condições operacionais… Lidar com model drift requer uma vigilância contínua e estratégias de monitoramento eficazes, além de uma manutenção proativa dos modelos em produção.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/849/0*NThUZz_sUy7_4LJg" /><figcaption>Na imagem, quatro exemplos de model drift derivado de alterações na distribuição dos dados. Esta imagem é uma reprodução do módulo Designing Adaptable ML Systems, do curso Production Machine Learning Systems, disponível no Google Cloud Skills Boost.</figcaption></figure><p>Foi pensando em todas essas diferenças (e após atuar o último ano inteiro em um projeto focado em manutenção e monitoramento de modelos), que optei por fazer uma especialização em Engenharia de Software. A habilidade de compreender e aplicar os princípios de ES em projetos de Machine Learning permite esse olhar além da simples construção de modelos e aborda os desafios mais amplos associados à implementação de soluções de IA em ambientes reais.</p><p>Uma das principais vantagens de se aprofundar no universo Ops é a capacidade de desenvolver sistemas de ML mais robustos e escaláveis. Aprofundar meu conhecimento em práticas de desenvolvimento de software amplia a visão e possibilita a adoção de uma abordagem mais estruturada e modular na concepção e na implementação de pipelines de dados e modelos. Isso torna os sistemas mais fáceis de dar manutenção e escalar à medida que as demandas do negócio podem evoluir.</p><p>Hoje temos o papel do Engenheiro de Machine Learning, que, metido até as canelas com engenharia de dados e de software, traz esse olhar para os processos de implementação e MLOps de forma muito mais ativa do que o Cientista de Dados. Bato na tecla, todavia, que essas são habilidades das quais todos os cientistas se beneficiariam em ter: proporcionam uma compreensão mais abrangente das melhores práticas em termos de testes e de integração contínua e entrega contínua (CI/CD) — que são fundamentais para garantir a qualidade e a confiabilidade do modelo. Também ampliam o olhar em termos do trade off custos x escalabilidade, facilidade na manutenção do ciclo de vida x complexidade e até no entendimento dos usuários sobre o funcionamento da solução (que, dependendo do negócio, pode ser a métrica mais importante). No fim do dia, são conhecimentos que te tornam <strong>mais capacitado para desenvolver modelos de forma útil e absolutamente viável para a empresa que irá implementá-lo</strong> — e, no final do dia, é sobre isso.</p><p>Segue uma lista de cursos, livros, referências e tudo mais que tenho lido sobre o tema:</p><p><a href="https://www.amazon.com.br/Designing-Machine-Learning-Systems-Production-Ready/dp/1098107969/ref=sr_1_1?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;crid=194E5UTRYVXCW&amp;dib=eyJ2IjoiMSJ9.zH6l42kwGU9hHBiTeFBhDt9p0WxpsQBEJNiWd65aM-r9DB9nx7w6w8HhKBdDN6GhZL6F4FFs0b9-_MakcQxaUuzQTcHugQ9hPxak4LL9bOS69QDmUl2dRzcD_Oy1U2RPZeuUWi1l6_7cw7lg-CywykTJst9U9FXMtbjuJaELUzJy-PZUUZxt9FnmbXmewCnMyxLAFC5qiBn7NQT1sCIzAH4-8M4k3-xl5JfJai4PXu3i82J9088arnP85CicBjUriilm3QWw2pqLN5qrk36MKh1oc9eioZh4CDG5UKY4DVs.CoNv5naVQ5TUfJ2NGWEzoCjO_bbWSzSwwYcIYK9l-1c&amp;dib_tag=se&amp;keywords=design+ml+systems&amp;qid=1708983521&amp;sprefix=design+ml+systems%2Caps%2C190&amp;sr=8-1&amp;ufe=app_do%3Aamzn1.fos.db68964d-7c0e-4bb2-a95c-e5cb9e32eb12"><strong><em>Designing Machine Learning Systems</em></strong>,</a> by Chip Huyen (O’Reilly). Copyright 2022 Huyen Thi Khanh Nguyen, 978–1–098–10796–3.</p><p><a href="https://www.cloudskillsboost.google/paths/17/course_templates/17"><strong><em>Production Machine Learning Systems</em></strong></a><strong><em>,</em></strong> curso do path Machine Learning Engineer, disponível no Google Cloud Skills Boost.</p><p><a href="https://techleadcuriosity.com/mlops-best-practices-for-machine-learning-model-development-deployment-and-maintenance-e70f5d2f416b"><strong><em>MLOps Best Practices</em></strong></a>, Medium Article.</p><p><a href="https://medium.com/louis-dorard/architecture-of-a-real-world-machine-learning-system-795254bec646"><strong><em>Architecture of a real-word ML system</em></strong></a>, Medium Article.</p><p><a href="https://www.analyticsvidhya.com/blog/2020/06/3-building-blocks-machine-learning-data-scientist/"><strong><em>3 Building Blocks of ML you should know as a Data Scientist</em></strong></a>, Analytics Vidhya.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7f876b859432" width="1" height="1" alt=""><hr><p><a href="https://medium.com/joguei-os-dados/modelos-de-portf%C3%B3lio-x-modelos-em-produ%C3%A7%C3%A3o-7f876b859432">Modelos de portfólio x modelos em produção</a> was originally published in <a href="https://medium.com/joguei-os-dados">Joguei os Dados</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[3 dicas para minimizar ‘AI hallucination’ no chatGPT]]></title>
            <link>https://medium.com/joguei-os-dados/3-dicas-para-minimizar-ai-hallucination-no-chatgpt-bd24de41c679?source=rss----e3e9199dd497---4</link>
            <guid isPermaLink="false">https://medium.com/p/bd24de41c679</guid>
            <category><![CDATA[prompt-engineering]]></category>
            <category><![CDATA[inteligencia-artificial]]></category>
            <category><![CDATA[gpt]]></category>
            <dc:creator><![CDATA[Letícia Gerola]]></dc:creator>
            <pubDate>Mon, 18 Sep 2023 14:57:29 GMT</pubDate>
            <atom:updated>2023-09-18T14:57:29.498Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*eaFYfS88jvTEhg5g" /><figcaption>Photo by <a href="https://unsplash.com/@dkoi?utm_source=medium&amp;utm_medium=referral">D koi</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4>Boas práticas da Engenharia de Prompt para adotar no seu dia a dia</h4><p>Recebo muitas perguntas de quem está entrando na área questionando se o chat GPT irá roubar nossos empregos. A resposta é tão simplista quanto a pergunta: não. Inclusive, na consultoria onde trabalho, as demandas por profissionais de Data Science aumentaram desde as evoluções do chatGPT — mas é claro, não é uma demanda qualquer: a procura é por profissionais que tenham conhecimento sobre como trabalhar com essa ferramenta.</p><p>Antes de entrarmos nas várias utilidades que é possível extrair do GPT dentro da ciência e do desenvolvimento de código, vamos começar com algo simples e, ainda sim, extremamente importante: engenharia de prompt.</p><p>Engenharia de prompt nada mais é do que o estudo de técnicas e práticas pensando na interação com prompts de IA — ou seja, com o chat do GPT, ou com o discord do Midjourney, e por aí vai. Apesar do nome rebuscado, nada mais é do que um conjunto de boas práticas que vão garantir uma interação mais segura e efetiva com o modelo, aumentando as chances de ter um retorno correto e evitar os temidos delírios (erros) de resposta. Pessoalmente, acredito que a Engenharia de Prompt irá compor os futuros manuais de compliance das empresas, assim como temos <em>style guides</em> para designers com as cores e fontes da marca, teremos direcionamentos quanto ao uso de prompts de IA.</p><p>Abaixo, algumas dicas bem simples para implementar na hora de interagir com inteligências artificiais! Lembrando que nenhuma delas garante 100% uma resposta correta — ainda é o seu trabalho verificar a acuracidade do retorno da ferramenta, mas tais boas práticas podem minimizar bastante as alucinações dos modelos.</p><ol><li><strong>Trabalhe com exemplos<br></strong>Fornecer exemplos em seu prompt ajuda o modelo a compreender o contexto e gerar respostas mais precisas. Por exemplo: “Escreva uma breve história do Python, assim como foi feita a história do Java descrita neste artigo (insira o link do artigo de inspiração)”. Isso não apenas dá à IA um tópico claro, mas também um ponto de referência de como prosseguir. Fornecer um exemplo bem estruturado também pode economizar muito tempo ao explicar o resultado que você espera receber. Sem um exemplo, sua sugestão pode ser muito genérica, permitindo muita liberdade na interpretação.</li><li><strong>Quebre as instruções em tópicos menores<br></strong>Já tentou montar um móvel sem olhar o manual de instruções desenhadas que normalmente acompanha o item? É um pouco assim para modelos de IA que lidam com solicitações complexas, muitas etapas separam o seu pedido do resultado final, logo, são muitas as variáveis ​​a serem consideradas. Em vez de, por exemplo, pedir ao modelo para “Aplicar um modelo regressivo na base de dados do kaggle”, divida-o em tarefas menores e mais gerenciáveis, como “Etapa 1: Identificar variável target, Etapa 2: Coletar e preparar dados” e assim por diante. Dessa forma, a IA pode abordar cada etapa individualmente e gerar resultados mais coerentes.</li><li><strong>Dê uma saída em caso de emergência<br></strong>Para evitar que a IA dê uma resposta falsa pra sua pergunta, inclua ao final do questionamento uma frase de segurança, por exemplo “se a sua resposta não for baseada em fatos verificados, retorne ‘não consigo responder”. Isso é bastante útil pra perguntas que envolvem fatos históricos, por exemplo, ao perguntar ‘quem inventou o MLOps’ e evitar um retorno do tipo Mariah Carey. Se não houver registros sobre o inventor do MLOps, a prompt simplesmente retorna ‘não consigo responder’.</li></ol><p>A dica final não chega a ser capaz de evitar alucinações, mas eu acho ela bastante útil na hora de traduzir processos complexos em apresentações de negócio: inclua ‘explique {insira um tema complicado aqui} como se fosse para uma criança de 5 anos’. O resultados têm sido ótimos e é interessante inclusive para auxiliar nos estudos, fazendo do GPT um verdadeiro ‘tutor’ a quem recorrer de vez em quando.</p><blockquote>Jamais inclua informações da sua empresa no chat GPT. Consulte seu empregador sobre a possibilidade do uso da ferramenta dentro do escopo de trabalho.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bd24de41c679" width="1" height="1" alt=""><hr><p><a href="https://medium.com/joguei-os-dados/3-dicas-para-minimizar-ai-hallucination-no-chatgpt-bd24de41c679">3 dicas para minimizar ‘AI hallucination’ no chatGPT</a> was originally published in <a href="https://medium.com/joguei-os-dados">Joguei os Dados</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI-900 cheat sheet]]></title>
            <link>https://medium.com/joguei-os-dados/ai-900-cheat-sheet-9da6522979dd?source=rss----e3e9199dd497---4</link>
            <guid isPermaLink="false">https://medium.com/p/9da6522979dd</guid>
            <category><![CDATA[azure]]></category>
            <dc:creator><![CDATA[Letícia Gerola]]></dc:creator>
            <pubDate>Thu, 16 Mar 2023 18:55:03 GMT</pubDate>
            <atom:updated>2023-03-16T18:55:43.881Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Z801J2IRSKLnUOvk" /><figcaption>Photo by <a href="https://unsplash.com/@turagphotos?utm_source=medium&amp;utm_medium=referral">Turag Photography</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>O resumão da vida pra tirar a certificação Microsoft Azure</p><p>Quem me conhece sabe que diploma ou certificado não é minha forma favorita de demonstrar conhecimento. Aprendi tanto ou mais em tutoriais do YouTube do que muitos cursos com certificação por aí! Mas, vez ou outra, me rendo à provas e simulados quando faz sentido.</p><p>Entender sobre cloud em dados é, hoje, mandatório. Infelizmente, o melhor modo de aprender é trabalhando com elas — tendo que consultar dados em um banco nativo no BigQuery, construir um modelo no AI Platform e deployar utilizando alguma ferramenta como Airflow ou Kubernetes. Felizmente, você não precisa estar empregado em um projeto desse porte pra colocar a mão na massa! É possível criar <em>free accounts</em> e testar a maioria dos serviços em nuvem pra se familiarizar com o processo.</p><p>Sou fã de GCP e já tive muito contato com AWS, mas acabei selecionando Azure pra tirar a certificação. Apesar de não ‘provar’ necessariamente minhas habilidades reais, é uma maneia interessante de estudar todas as possibilidades que esses players disponibilizam! Estudando para a prova, aprendi muito sobre funcionalidades e recursos que não conhecia e que muitas vezes desenvolvia do zero ao invés de utilizar um recurso cloud. Além do conhecimento, é interessante comercialmente para o mercado empregar alguns profissionais com certificação — especialmente no caso de consultorias, brilha os olhos de alguns clientes que o profissional alocado seja certificado nesta ou naquela nuvem.</p><p>Sem mais delongas, segue o <strong>cheat sheet</strong> construído com base no <a href="https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4wGpB">Study Guide</a> mais recente disponibilizado pela Microsoft e a partir do <a href="https://learn.microsoft.com/en-us/certifications/azure-ai-fundamentals/">Learning Path</a> gratuito que eles disponibilizam pra quem pretende realizar a prova. No final coloquei alguns links de simulados grátis pra você se sentir preparado antes do teste :) Bons estudos!</p><p><strong><em>Este guia foi escrito em inglês para evitar traduções equivocadas dos nomes dos recursos. Recomendo estudar na língua nativa do learning path!</em></strong></p><p>O material abaixo foi construído usando minha ferramenta de estudos preferida, o Notion, e o link de acesso direto pra ela está aqui: <a href="https://purrfect-cabinet-533.notion.site/AI-900-cheat-sheet-fde01351e339439a850dd0733c09ab81">https://purrfect-cabinet-533.notion.site/AI-900-cheat-sheet-fde01351e339439a850dd0733c09ab81</a></p><h3>AI-900 cheat sheet</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*I_ScAodl204m1mzSIKaWmw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0tVtE1z2zpIhchR5vzWPlg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jE5YdwLC4RlorgV1QFy8jQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1Mg7CfhkvKAKThrlKvTvsA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hVnMEQ5L0v_N3s5iEB5t7g.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/979/1*wvfZdDeOs748UrGaR3XJZg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*efnEPNRTON3t_bmLnqUw7w.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zfB_OQNZzDa9qC7m94aTCw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EoRaBcwfCI26Ky5LlKH3CQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PXpL160Ze_6t4j2OnLtUjA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*U19LNXDdYH6vGW2loqBY0w.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/997/1*yxyXObJEm--h8M3SAdKoWA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LRLZfc6FDGsZPGx3aQHWvg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PcZ2nHOl_7YeaOv_9_ZUGg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vq6hnYhspqzoCEKLUy9RPg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1bCVM-vX00zTNgGuCinQ9Q.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*drQuTpccpsVnJyV0Mxqk2w.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QR83IgmhFQ3HkeDlRB_xxw.png" /></figure><p>Praticar é tudo → confere algumas das perguntas que podem aparecer na prova e treine de graça!</p><h4><a href="https://learn.microsoft.com/pt-br/certifications/resources/ai-900-sample-questions?azure-portal=true">AI-900: Perguntas de exemplo dos fundamentos da IA do Microsoft Azure</a>;</h4><h4><a href="https://www.examtopics.com/exams/microsoft/ai-900/">Simulado Exam Topics</a>;</h4><h4><a href="https://learn.microsoft.com/en-us/certifications/exams/AI-900/">Practice Assestment da própria MS.</a></h4><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9da6522979dd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/joguei-os-dados/ai-900-cheat-sheet-9da6522979dd">AI-900 cheat sheet</a> was originally published in <a href="https://medium.com/joguei-os-dados">Joguei os Dados</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Largando os cadernos: de notebooks à scripts .py]]></title>
            <link>https://medium.com/joguei-os-dados/largando-os-cadernos-de-notebooks-%C3%A0-scripts-py-20273a1e6629?source=rss----e3e9199dd497---4</link>
            <guid isPermaLink="false">https://medium.com/p/20273a1e6629</guid>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[deployment]]></category>
            <category><![CDATA[mulheres-na-tecnologia]]></category>
            <dc:creator><![CDATA[Letícia Gerola]]></dc:creator>
            <pubDate>Tue, 06 Dec 2022 14:36:51 GMT</pubDate>
            <atom:updated>2022-12-06T17:38:30.159Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*uQO4kjsG2IqbgG68" /><figcaption>Photo by <a href="https://unsplash.com/@noemimk?utm_source=medium&amp;utm_medium=referral">Noémi Macavei-Katócz</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>Largando os cadernos: de notebooks à scripts .py</h3><h4>Como a Engenharia de Software me auxiliou a dar o próximo passo no desenvolvimento de modelos ML</h4><p>Que os notebooks são indispensáveis na vida de um cientista de dados, isso é inegável. Seja localmente em um Jupyter Lab, através de um Google Colab ou mesmo dentro de estruturas Cloud, essa oitava maravilha da ciência é o que possibilita a visualização imediata do resultado da execução de um bloco de código, facilitando e muito a etapa de análise exploratória — e todo o desenvolvimento de um projeto de Machine Learning.</p><p>Na hora de produtizar esse modelo, no entanto, é que as coisas ficam complexas. Como o próprio nome já diz, estamos colocando esse modelo em produção, ou seja, tornando-o uma <strong><em>solução-produto</em></strong> que irá alimentar a empresa de previsões e insights. Em resumo, um software — que processa dados e contém modelos de Machine Learning — mas ainda sim, um software. E, quando o assunto é software, notebooks não se sustentam.</p><p><strong>Orientação à objetos</strong><br>Nada mais satisfatório, após desenvolver um modelo eficiente, do que vê-lo em ação sendo útil para seu propósito! Por isso, fui estudar como tornar minhas soluções (quase sempre, notebooks) soluções altamente produtizáveis e prontas para serem deployadas no ambiente que fosse necessário. Acaba sendo divertido: literalmente elevar o código a um próximo nível. Quando o modelo está feito em Python, a primeira coisa a ser feita é transformar os blocos de código desse notebook em algo <strong><em>orientado à objetos</em></strong> — ou seja, utilizando técnicas de construção de classes, métodos e atributos. Veja o exemplo abaixo que faz uma leitura de dados:</p><pre># atributing dataset to a dataframe df<br>df = pd.read_csv(&#39;FuelConsumptionCo2.csv&#39;)<br>df.head()</pre><p>Seguindo a orientação à objetos, o bloco acima se torna algo nessa linha:</p><pre>class Loader:<br><br>    def load_data(self, url: str):<br>        &quot;&quot;&quot; Carrega o arquivo e retorna um DataFrame.<br>        :url: string com  o nome/endereço do file<br>        &quot;&quot;&quot;  <br>        return pd.read_csv(url)<br><br># Instanciação das Classes<br>loader = Loader()<br><br># Parâmetros<br>url_dados = (&#39;FuelConsumptionCo2.csv&#39;)<br><br># carga<br>data = loader.load_data(url_dados) </pre><p>Fica outra coisa né? Além de muito organizado e elegante, eu consigo reutilizar a classe Loader para qualquer projeto que envolva a leitura de dados neste formato, ou mesmo reutilizar essa classe nesse mesmo projeto na hora de ler dados novos, por exemplo.</p><p>Decidi pegar um projeto antigo da Pyrentena, o <a href="https://medium.com/joguei-os-dados/week-3-predicting-co2-emissions-70e554ad2276">modelo de previsão de emissão de carbono em veículos</a> (que você pode conferir <a href="https://github.com/gerolaleticia/Pyrentena-a-dataset-per-week/blob/master/Semana%203%20%20-%20Dataset%20CO2/Pyrentena%20semana%203%20-%20CO2.ipynb">aqui</a> a primeira versão) e transformá-lo em uma solução produtiva. Aproveitei outros recursos que aprendi desde que fiz esse projeto e adicionei uma parte de AutoML na solução, que automatizou a seleção do modelo testando uma série de opções diferentes pensando em, quem sabe, encontrar um resultado superior ao que eu já tinha.</p><p><strong>Revisite seus códigos</strong><br>Leva tempo, mas vale a pena! Com uma boa dose de estudos, refiz os código do notebook antigo em classes que executassem o que eu precisava, e o resultado foi muito interessante. No processo, ainda atualizei o modelo e melhorei sua performance! Na versão 1, eu cheguei em um modelo de Regressão Linear com um r2-score de 68%. Suficiente, mas nada sensacional.</p><p>Aproveitei a <a href="https://medium.com/joguei-os-dados/model-selection-com-automl-6ec70a61dddf">biblioteca TPOT</a>, de AutoML, pra testar uma série de modelos automaticamente e verificar se havia algum outro que tivesse um desempenho melhor. E claro, tudo isso dentro das classes:</p><pre>class MLModel:<br><br>    def select_best_model(self, cv, X_train, Y_train):<br>        &quot;&quot;&quot; Utiliza AutoML para identificar o melhor modelo de regressão.<br>        :cv: define a validação cruzada<br>        :X_train: features da base de treino<br>        :Y_treino: variável target da base de treino<br>        &quot;&quot;&quot;<br><br>        # define busca do melhor modelo de regressão<br>        model = TPOTRegressor(generations=5, population_size=50, scoring=&#39;r2&#39;, cv=cv, verbosity=2, random_state=1, n_jobs=-1)<br>        model.fit(X_train, Y_train)<br>        model.export(&#39;best_model.py&#39;)<br>        <br>        # display resultados do AutoML<br>        resultado = pd.DataFrame(model.evaluated_individuals_)<br>        resultado.columns = list(map(lambda x: x[0], resultado.columns.str.split(&#39;(&#39;)))<br>        return print(resultado.T)<br><br>    def model_trainning(self, X_train, Y_train):<br>        &quot;&quot;&quot; Cria pipeline de treinamento do melhor modelo encontrado na etapa de search.<br>        :X_train: features da base de treino<br>        :Y_treino: variável target da base de treino<br>        &quot;&quot;&quot;<br>        best_pipeline = ExtraTreesRegressor(bootstrap=False, max_features=0.25, min_samples_leaf=1, min_samples_split=5, n_estimators=100)<br>        best_pipeline = best_pipeline.fit(X_train, Y_train)<br>        return best_pipeline </pre><p>Essa é a classe que seleciona o melhor modelo (select_best_model) com o TPOT e já faz o treinamento dele na função abaixo (model_trainning), considerando a métrica que eu escolhi. Depois de criada a classe, instanciei ela e apliquei nos meus dados:</p><pre># Instanciação das Classes<br>model = MLModel()<br><br># Parâmetros<br>cv = RepeatedKFold(n_splits=10, n_repeats=3, random_state=1) # indicado pelo tpot<br><br># Busca e seleção do melhor modelo com Auto ML<br>best_model_report = model.select_best_model(cv, X_train, Y_train)<br><br># Treinamento do melhor modelo<br>best_pipeline = model.model_trainning(X_train, Y_train)</pre><p>O sentimento é de paz terrível quando a solução vai tomando esse formato. Organização &amp;a possibilidade de reutilização são maravilhas da orientação à objetos e das boas práticas de desenvolvimento de software que não podemos ignorar na hora de desenvolver soluções realmente efetivas. E pra fechar com chave de ouro: a bilbioteca de AutoML encontrou com o modelo ExtraTreesRegressor um desempenho ainda melhor do que a solução tinha: um r2-score de 87%. Nada mal para uma atualização!</p><p>Aqui tem o <a href="https://github.com/gerolaleticia/Engenharia-de-Software-para-Machine-Learning/blob/main/Co2_prediction_eda_notebook.ipynb">link completo</a> para o notebook atualizado com orientação à objetos. O ideal, após feita essa parte, é separar cada classe em seu próprio script .py e importá-las dentro de um script executor:</p><pre>from loader import Loader<br>from pre_processor import PreProcessor<br>from model_trainning import MLModel<br>from model_evaluator import MLEvaluator<br>from model_export import ModelExport</pre><p>No meu caso, criei um script executor chamado de run_pipeline.py, que importa as classes que eu criei e executa na ordem correta cada uma das etapas:</p><pre># Instanciação das Classes<br>loader = Loader()<br>pre_processor = PreProcessor()<br>model = MLModel()<br>performance_evaluator = MLEvaluator()<br>export_model = ModelExport()<br><br># Parâmetros<br>url_dados = (&#39;FuelConsumptionCo2.csv&#39;)<br>redundant_cols = [&#39;MODELYEAR&#39;,&#39;MAKE&#39;,&#39;MODEL&#39;,&#39;VEHICLECLASS&#39;,&#39;TRANSMISSION&#39;,&#39;FUELTYPE&#39;]<br>percentual_teste = 0.2<br>cv = RepeatedKFold(n_splits=10, n_repeats=3, random_state=1) <br><br>def main():<br>    # Execução do pipeline de treinamento<br><br>    # carga<br>    data = loader.load_data(url_dados) <br><br>    X_train, X_test, Y_train, Y_test = pre_processor.pre_process_data(data, percentual_teste,redundant_cols) <br><br>    # Busca e seleção do melhor modelo com Auto ML<br>    best_model_report = model.select_best_model(cv, X_train, Y_train)<br><br>    # Treinamento do melhor modelo<br>    best_pipeline = model.model_trainning(X_train, Y_train)<br><br>    # Resultados de performance considerando r2 score<br>    performance_evaluator.avaliar_r2_score(best_pipeline, X_test, Y_test)<br><br>    # Export do modelo treinado<br>    loaded_pkl_model = export_model.export_best_model(best_pipeline)<br>    <br>if __name__ == &#39;__main__&#39;:<br>    main()</pre><p>A estrurua completa do projeto você pode <a href="https://github.com/gerolaleticia/Engenharia-de-Software-para-Machine-Learning/tree/main/dev_model_trainning_pipeline">conferir aqui</a>. Cada classe tem seu próprio script: load de dados, pré processamento dos dados, modelo (seleção e treinamento) e avaliação dos resultados — muito mais organizado e fácil de ser deployado do que um notebook! Aproveitei e criei um pipeline bem simples de produção, simulando como seria a utilização contínua do modelo. Pra isso, salvei o modelo em pickle file e criei uma classe que aplica esse modelo na leitura de novos dados (reutilizando a classe Loader).</p><pre># Instanciação das Classes<br>loader = Loader()<br>preprocess_deploy = PreProcessorDeploy()<br>generate_output = Output()<br>load_model = LoadModel()<br><br># Parâmetros<br>redundant_cols = [&#39;MODELYEAR&#39;,&#39;MAKE&#39;,&#39;MODEL&#39;,&#39;VEHICLECLASS&#39;,&#39;TRANSMISSION&#39;,&#39;FUELTYPE&#39;]<br>new_file = &quot;brand_new_data.csv&quot;<br>pkl_model_file = &#39;model.pkl&#39;<br><br>def main():<br>    # Execução do pipeline de produção<br><br>    # carga<br>    new_data = loader.load_data(new_file) <br><br>    # processamento dos novos dados<br>    X = preprocess_deploy.pre_process_new_data(new_data, redundant_cols)<br><br>    # load do modelo treinado<br>    loaded_pkl_model = load_model.load_trained_model(pkl_model_file)<br><br>    # aplicação do modelo já treinado<br>    predicoes = loaded_pkl_model.predict(X)<br><br>    # geração e export do arquivo de predições em csv<br>    generate_output.create_output_dataframe(new_data, predicoes)<br><br>if __name__ == &#39;__main__&#39;:<br>    main()</pre><p>Vale lembrar que cada ambiente ou empresa tem sua própria forma de produtizar as soluções, com especificidades bastante particulares. Mas te garanto que utilizar a orientação à objetos e organizar sua solução em scripts .py, da mesma forma que um software é 80% do caminho andado na hora de qualquer deploy!</p><blockquote>Os scripts da versão 2 do modelo de previsão de emissão de carbono estão <a href="https://github.com/gerolaleticia/Engenharia-de-Software-para-Machine-Learning">disponíveis aqui</a>. Vale comparar com a versão 1, também <a href="https://github.com/gerolaleticia/Pyrentena-a-dataset-per-week/tree/master/Semana%203%20%20-%20Dataset%20CO2">disonível para consulta</a>.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=20273a1e6629" width="1" height="1" alt=""><hr><p><a href="https://medium.com/joguei-os-dados/largando-os-cadernos-de-notebooks-%C3%A0-scripts-py-20273a1e6629">Largando os cadernos: de notebooks à scripts .py</a> was originally published in <a href="https://medium.com/joguei-os-dados">Joguei os Dados</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Model selection com AutoML]]></title>
            <link>https://medium.com/joguei-os-dados/model-selection-com-automl-6ec70a61dddf?source=rss----e3e9199dd497---4</link>
            <guid isPermaLink="false">https://medium.com/p/6ec70a61dddf</guid>
            <category><![CDATA[women-in-tech]]></category>
            <category><![CDATA[automl]]></category>
            <category><![CDATA[machine-learning]]></category>
            <dc:creator><![CDATA[Letícia Gerola]]></dc:creator>
            <pubDate>Fri, 27 May 2022 16:18:48 GMT</pubDate>
            <atom:updated>2022-05-27T16:18:48.683Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*XF3akvvCtNu3u2745BPBLQ.jpeg" /></figure><h4>Testei mais de 10 modelos ao mesmo tempo com essa biblioteca</h4><p>Quando ouço a palavra automatização relacionada à ciência de dados, confesso que fico desconfiada. Otimizar e automatizar a parte matemático-estatística sempre parece uma boa ideia, mas como automatizar uma interpretação baseada em conceitos de negócio? Em entendimento do problema? Dois passos pra traz parecem necessários quando ouço esse tipo de promessa.</p><p>Foi com muito entusiasmo e uma bolsa cheia de ressalvas que testei uma das ferramentas de AutoML disponíveis no mercado: o <a href="http://epistasislab.github.io/tpot/">TPOT</a>, um verdadeiro assistente de ciência de dados. TPOT é uma ferramenta de aprendizado de máquina automatizado em Python, cujo foco é otimizar pipelines de Machine Learning utilizando programação genética(!).</p><p>Meu desafio era um problema de classificação, por isso importei o TPOT Classifier, mas tem a opção de regressores também. A ideia dessa lib é que, ao passar seu dataset de treino e teste e setar alguns parâmetros de comparação (como por exemplo, qual métrica de avaliação você quer utilizar) o próprio pacote testa mais de 10 modelos diferentes &amp;gera um dataframe com a performance de cada um. Em seguida, é só exportar seu ‘best_model’ em um arquivo .py, também gerado automaticamente pelo TPOT. Incrível né?</p><h4>Implmentando o TPOT no seu pipeline</h4><p>Antes de tudo, é preciso splitar seu dataset já limpo e tratado em treino e teste, setando sua coluna de ‘id’ como index para que o TPOT possa identificar corretamente as colunas.</p><pre>X_treino = X_treino.set_index(&#39;id&#39;)<br>X_teste = X_teste.set_index(&#39;id&#39;)<br>y_treino = y_treino.set_index(&#39;id&#39;)<br>y_teste = y_teste.set_index(&#39;id&#39;)</pre><p>Feito isso, importamos o TPOTClassifier, que pode ser chamado após instalar localmente a bilbioteca no seu notebook via !pip install. Primeiro, criamos nosso classificador dentro da variável ‘tpot’ preenchendo os parâmetros necessários. Nesse caso, por exemplo, setei como tempo máximo de teste 120 minutos e métrica de avaliação a ROC_AUC.</p><pre>from tpot import TPOTClassifier<br>import numpy as np</pre><pre>tpot = TPOTClassifier(verbosity=3, n_jobs=-1, max_time_mins=120, scoring=&#39;roc_auc&#39;, random_state=0, cv=6, generations=None, population_size=100, early_stop=True, log_file=&#39;tpot_classifier.txt&#39;)</pre><p>Em seguida, fitamos nossos dados de treino no tpot e chamamos a função ‘score’ em cima dos nossos dados de teste, printando os resultados obtidos pra que possamos avaliá-los:</p><pre>tpot.fit(X_treino, y_treino.values.reshape(-1,))</pre><pre>print(tpot.score(X_teste,y_teste.values.reshape(-1,)))</pre><p>Para uma melhor visualização dos resultados, o código abaixo vai colocar seus resultados em formato de dataframe, formatar as colunas e transpor a visualização</p><pre>resultado = pd.DataFrame(tpot.evaluated_individuals_)<br>resultado.columns = list(map(lambda x: x[0], resultado.columns.str.split(&#39;(&#39;)))<br>resultado.T</pre><p>O resultado final se parece com o print abaixo: os nomes dos modelos são o index, as colunas são os parâmetros que setamos para teste do modelo e a última coluna é a performance do modelo em si. Nesse exemplo, o modelo ExtraTreeClassifier foi o que melhor performou nos meus dados de teste, retornando uma curva roc de 0.85. Para exportar o modelo de melhor perfomance automaticamente em um arquivo py, basta executar a linha tpot.export(best_model.py)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YC6FczM5IKt0CP25i9p3Eg.png" /></figure><p>Foi uma experiência muito interessante trabalhar com o TPOT. Vale ressaltar que os parâmetros setados para teste e avaliação dos modelos são extremamente importantes e vão definir o sucesso da sua seleção! Para entender exatamente o que cada um deles significa, confira a <a href="http://epistasislab.github.io/tpot/using/">documentação oficial</a>. Existem outras ferramentas de AutoML por aí, além das disponibilizadas dentro das próprias clouds! Vou compartilhando minhas percepções conforme for testando :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6ec70a61dddf" width="1" height="1" alt=""><hr><p><a href="https://medium.com/joguei-os-dados/model-selection-com-automl-6ec70a61dddf">Model selection com AutoML</a> was originally published in <a href="https://medium.com/joguei-os-dados">Joguei os Dados</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Data Ethics e o desenvolvimento de soluções inclusivas]]></title>
            <link>https://medium.com/joguei-os-dados/data-ethics-e-o-desenvolvimento-de-solu%C3%A7%C3%B5es-inclusivas-f639848f893c?source=rss----e3e9199dd497---4</link>
            <guid isPermaLink="false">https://medium.com/p/f639848f893c</guid>
            <category><![CDATA[ai-fairness]]></category>
            <category><![CDATA[data-ethics]]></category>
            <category><![CDATA[mulheres-na-tecnologia]]></category>
            <dc:creator><![CDATA[Letícia Gerola]]></dc:creator>
            <pubDate>Mon, 12 Jul 2021 14:08:05 GMT</pubDate>
            <atom:updated>2021-07-12T14:08:05.340Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RnJNI_N3VE3GcwgY0AgmxA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@hiteshchoudhary?utm_source=medium&amp;utm_medium=referral">Hitesh Choudhary</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4>Cases e ferramentas para uma gestão ativa do viés em IA</h4><p>Eu sempre lembro da Catarina, radiante de trazer a Alexa pra casa — e no minuto seguinte gritando pelos corredores tentando com que a IA entendesse seu sotaque nordestino carregado.</p><p>Fazer uma <strong>gestão ativa do viés em aplicações de dados</strong> não é só importante, é mandatório pra construir produtos que contemplem o tamanho desse mundo.</p><p>Contei no <a href="https://medium.com/gbtech">GB Tech</a> alguns cases que mexeram comigo, soluções e frameworks que encontrei na academia &amp; algumas reflexões do curso de ML Ethics da FastAI (gratuito, tem link no final do texto).</p><p>Trabalhar com dados também é trabalhar com gente.</p><blockquote>Pra ler o artigo completo só <a href="https://medium.com/gbtech/data-ethics-e-o-desenvolvimento-de-solu%C3%A7%C3%B5es-inclusivas-170d0dc1b554">clicar aqui</a>.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f639848f893c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/joguei-os-dados/data-ethics-e-o-desenvolvimento-de-solu%C3%A7%C3%B5es-inclusivas-f639848f893c">Data Ethics e o desenvolvimento de soluções inclusivas</a> was originally published in <a href="https://medium.com/joguei-os-dados">Joguei os Dados</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Esse tal de MLOps]]></title>
            <link>https://medium.com/joguei-os-dados/esse-tal-de-mlops-67040af567e6?source=rss----e3e9199dd497---4</link>
            <guid isPermaLink="false">https://medium.com/p/67040af567e6</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[mlops]]></category>
            <category><![CDATA[mulheres-na-tecnologia]]></category>
            <dc:creator><![CDATA[Letícia Gerola]]></dc:creator>
            <pubDate>Fri, 07 May 2021 13:37:34 GMT</pubDate>
            <atom:updated>2021-05-07T19:26:11.064Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*GeiA2-zXniOkWZIz" /><figcaption>Photo by <a href="https://unsplash.com/@hishahadat?utm_source=medium&amp;utm_medium=referral">Shahadat Rahman</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4><em>Onde vivem, do que se alimentam e ferramentas pra você conhecer!</em></h4><p>Machine Learning Ops tá na crista da onda, e esse conceito se refere a nada mais nada menos do que o processo de transformar um modelo experimental de Machine Learning em um sistema de produção — bebendo nas melhores práticas de desenvolvimento de software que a galera de DevOps traz à tona.</p><p>MLOps toca em um tema que tem me interessado bastante ultimamente: software AI. Como transformar nossos modelos em aplicações digitais otimizadas e verdadeiros produtos completos? Afinal, uma coisa é desenvolver um modelo localmente no nosso Jupyter Notebook de todo dia e ter um bom f1 score nas predições — outra, um tanto diferente, é implementar esse algoritmo na vida real para ser consumido por um — ou vários — times de negócio.</p><p>A palavra é um composto de “Aprendizado de Máquina” e a prática de desenvolvimento contínuo de DevOps, área de software que garante um bom versionamento e qualidade das aplicações a partir da integração entre os devs (ou cientistas de dados) e a equipe de infraestrutura.</p><p>Na prática, MLOps inclui avaliação das estruturas de desenvolvimento e deploy de uma empresa (é Cloud? Se sim, qual delas?), o entendimento da estratégia de negócio dessa empresa (onde esse cliente quer chegar? Custo é uma questão? Ou a curva de aprendizado do time é mais importante, por exemplo?) e, por fim, o desenho de uma arquitetura ou esteira que contemple as ferramentas/práticas/processos ideais para que a empresa atinja seus objetivos e tenha qualidade nos modelos de Machine Learning que ela possui.</p><h4><strong>4 características que a sua esteira de MLOps precisa ter</strong></h4><p><strong>1. Reprodutibilidade &amp; escalabilidade</strong><br>Quanto mais reutilizável sua estrutura for, melhor! Isso significa que ela atende a diferentes tipos de modelos, sejam eles construídos com Tensorflow, Scikit Learn, PyTorch, Spark… Boas práticas de conteinerização e encapsulamento podem facilitar a transição do modelo do ambiente de desenvolvimento para o ambiente de produção e facilitar o reuso da esteira por diferentes squads das empresas.<em> O Kubeflow é uma ferramenta open source que permite o reuso de pipelines e roda em Kubernetes, garantindo a escalabilidade do processamento da aplicação.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/236/1*DlhpKXhSIR6ER9awn6H09Q.jpeg" /></figure><p><strong>2. Tracking de experimentos</strong><br>A experimentação pode envolver o teste de diferentes combinações de código (métodos de pré-processamento, treinamento e avaliação), dados e hiperparâmetros. Um modelo com os hiperparâmetros default, modelo pós aquele fine tunning maroto…. Cada combinação produz métricas específicas que você precisa saber para comparar com seus outros experimentos e selecionar o modelo que teve melhor performance! Além disso, mudanças nas condições (ambiente) em que o experimento é executado podem alterar as métricas obtidas. <em>Algumas ferramentas interessantes para fazer esse tracking de modelos de forma intuitiva e automatizada são MLFlow e Neptune.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/568/1*2vuKKNpWhSO8IldQinnPNw.jpeg" /></figure><p><strong>3. Versionamento</strong><br>Modelagem não se finaliza, se abandona: podemos sempre querer melhorar gradualmente a precisão ou a área de aplicação do modelo. Assim, o algoritmo está sempre evoluindo como código — e deve ser tratado dessa forma. Isso significa que a escolha do modelo (e seus hiperparâmetros) deve ter seu próprio versionamento garantido. Quando se trata de controle de versão, devemos tratar o modelo de maneira semelhante a como tratamos versionamento de código: com boas práticas de abertura de Pull Request em uma branch secundária, aprovação de outros desenvolvedores antes de merge na branch principal, etc. Com essa abordagem, você é capaz de reverter os modelos com facilidade e até ter um versionamento dos metadados gerados. <em>Uma ferramenta interessante para fazer esse versionamento, além do GitLab da massa, é o Data Version Control.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*lFutuwKNYwPAxMBdW4LeeA.jpeg" /></figure><p><strong>4. Monitoramento</strong><br>O mundo gira, pandemias acontecem, e o seu projeto envelhece, deixando de fornecer previsões condizentes. Felizmente, esse sistema de scoragem e monitoramento existe pra que possamos saber exatamente quando intervir em um modelo — ou refazê-lo por completo! Algumas métricas como PSI e CSI podem verificar se a sua população de dados se modificou, dando aquele check nas variáveis e avaliando se elas ainda estão refletindo a sua base de dados com eficácia e servindo para o bom funcionamento do modelo. <em>Ferramentas como Elastic Search e Prometheus fazem o monitoramento de métricas de execução e contemplam o disparo de trigger que te avisam quando a performance cair.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/1*cMXqtrazfrenIKyqOVu-ag.jpeg" /></figure><blockquote>Esses são alguns conceitos pra ter em mente na hora de desenhar uma esteira de MLOps — tem muitos outros e vai depender da maturidade &amp; estratégia da empresa quais são as essenciais no momento! O arsenal de ferramenta open source é enorme, se divirta na experimentação:)</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=67040af567e6" width="1" height="1" alt=""><hr><p><a href="https://medium.com/joguei-os-dados/esse-tal-de-mlops-67040af567e6">Esse tal de MLOps</a> was originally published in <a href="https://medium.com/joguei-os-dados">Joguei os Dados</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[3 coisas que aprendi liderando projetos de Data Science]]></title>
            <link>https://medium.com/joguei-os-dados/3-coisas-que-aprendi-liderando-projeto-de-data-science-7e539c4fdabc?source=rss----e3e9199dd497---4</link>
            <guid isPermaLink="false">https://medium.com/p/7e539c4fdabc</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[mulheres-na-tecnologia]]></category>
            <dc:creator><![CDATA[Letícia Gerola]]></dc:creator>
            <pubDate>Tue, 23 Feb 2021 18:55:09 GMT</pubDate>
            <atom:updated>2021-05-07T19:24:25.090Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*oS2GZOCHzOvZA4YH" /><figcaption>Photo by <a href="https://unsplash.com/@johnschno?utm_source=medium&amp;utm_medium=referral">John Schnobrich</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4>É menos sobre data e mais sobre science.</h4><p>Quando te oferecem a oportunidade de tocar o front de um projeto de Inteligência Artificial, não é hora de pensar se você dá conta — é hora de fazer o pinguim de Madagascar e sorrir&amp;acenar que sim, vamos nessa! Afinal, uma chance dessas não bate na porta todos os dias. Além disso, se o mundo acha que tu consegue, quem é você pra dizer que não?</p><p>As dores e as delícias de estar na linha de frente são muitas, e o aprendizado então… Nem se fala. Compartilho aqui um pouco do que absorvi com essa baita experiência que, no fim do dia, é muito mais sobre as <em>soft</em> do que sobre as <em>hard</em> skills.</p><h4>Não dispense os processos — nem no mais apertado dos prazos.</h4><p>Atrasar uma entrega é muitas vezes desenhado como o pior cenário, mas acredite, nenhuma bomba vai explodir se você precisar de uma semana a mais. Especialmente se esse tempo extra garantir consistência e qualidade! Pra ‘entregar mais rápido’ muitas vezes podemos atropelar processos essenciais, que vão definir a qualidade da sua aplicação em produção. Respeitar o ciclo do <em>new branch — pull request — revisão</em> do Github é importantíssimo pra garantir um bom versionamento do código e facilitar a vida lá na frente, quando as alterações inevitavelmente surgirem. Testes constantes dos scripts, confirmação por escrito das pendências e até uma rápida ata das reuniões enviadas aos participantes por e-mail, por que não? São processinhos como esse de confirmação de demandas que facilitam o alinhamento de expectativas, mantendo todo mundo na mesma página e, principalmente, falando a mesma língua. É surpreendente o tanto de mal entendido e erros que podem ser evitados simplesmente confirmando se estamos alinhados que A é A e B e B.</p><h4>Traçar limites é tarefa sua.</h4><p>Ninguém é obrigado a saber até onde você aguenta. Isso significa que, enquanto você estiver aceitando, as demandas vão sim continuar vindo — e é nessa hora que saber dizer não é de suma importância. Pessoalmente foi um processo novo pra mim, acostumada a dizer sim primeiro e me virar sobre como fazer, depois. A verdade é que sempre vai ter coisa pra fazer, sempre vai ter algo que poderia estar mais adiantado do que está hoje e que, se você não souber ‘desligar’ e virar a chavinha no final de semana, simplesmente vai emendar uma semana na outra e ser engolido pelas pré-ocupações. Meditar ajuda bastante, pratico há alguns anos e é uma âncora de paz em meio ao caos. Aconselho ter em mente que dizer ‘não’, não faz de você um mal profissional ou uma pessoa ruim! É simplesmente um traçado de limite, dizendo que, a partir daqui, hoje não. Talvez amanhã sim, mas hoje não. E presta atenção: quem se incomodar demais com seus limites é quem se beneficiava quando você não tinha eles bem definidos!</p><h4>Peça ajuda.</h4><p>Líder ou não líder, já se acostume com a ideia de que você não vai acertar sempre E não vai ter todas as respostas. Fazer as pazes com os erros é urgente pra dormir à noite e confia, eles fazem de você humano, não um incompetente. Não é porque você é o <em>frontend </em>que tem que ter todas as soluções, pelo contrário: acredito muito que as melhores lideranças são aquelas fundadas no pilar da humildade, que, ao deparar-se com algo que não sabem resolver, consultam a equipe, seus superiores, o cliente, os universitários e quem mais for preciso pra fazer uma boa entrega. Não é sobre você, sobre se proteger, se blindar — é sobre o projeto, e garantir uma aplicação de sucesso muitas vezes significa ser vulnerável, pedir ajuda, ou admitir que não sabe pra onde ir. A gente é melhor junto do que separado e tem muita gente boa nesse mundo! Ser inacessível é fora de moda e pouco produtivo.</p><blockquote>Pra fechar, um conselho do jornalismo pra vida: negocia esse deadline, que o não você já tem :)</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7e539c4fdabc" width="1" height="1" alt=""><hr><p><a href="https://medium.com/joguei-os-dados/3-coisas-que-aprendi-liderando-projeto-de-data-science-7e539c4fdabc">3 coisas que aprendi liderando projetos de Data Science</a> was originally published in <a href="https://medium.com/joguei-os-dados">Joguei os Dados</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>