Usando o ML.NET para aprendizado de máquina


  Neste artigo vou apresentar os fundamentos do aprendizado de maquina , focando no essencial e nos primeiros passos para construir aplicações reais com IA.

Muita gente hoje trata modelos de linguagem como se fossem “inteligência artificial completa”. Mas vamos direto ao ponto:  Um LLM não é IA por si só. Ele só se torna IA quando é integrado a um sistema real.

Sozinho, ele é apenas um componente — como uma biblioteca que ainda não foi usada, ou um motor sem o carro.

Quem transforma isso em algo útil são os engenheiros de IA, responsáveis por integrar modelos em sistemas reais, escaláveis e comerciais.



O caminho para se tornar um engenheiro de IA

A boa notícia é que você não precisa de um PhD em ciência de dados.Se você já é desenvolvedor, está mais perto do que imagina.

Pense assim:
Engenharia de IA é apenas mais uma especialização dentro da engenharia de software.

Um roadmap prático seria:
   Fortalecer fundamentos de Machine Learning
   Aprender engenharia de dados (pipelines)
   Estudar MLOps e deploy em nuvem
   Construir uma aplicação completa com IA

Neste artigo, o foco é o primeiro passo: entender os fundamentos de Machine Learning.

Os 3 tipos principais de Machine Learning

De forma geral, existem três grandes categorias:

1. Aprendizado Supervisionado :


   Treinado para executar a ação correta com base em dados rotulados.

A aprendizagem supervisionada é um tipo de aprendizado de máquina em que o modelo aprende a partir de dados de treinamento rotulados. Nessa abordagem, o conjunto de dados de treinamento consiste em características de entrada e seus respectivos rótulos de destino.

Por exemplo, as características podem representar várias propriedades de uma casa e o rótulo pode representar o preço da casa que o modelo está sendo treinado para prever.

O objetivo do modelo é aprender o mapeamento entre as características de entrada e os rótulos de destino, permitindo que ele faça previsões em dados novos e não vistos anteriormente.

Aqui o modelo aprende com dados rotulados.
- Você fornece dados de casas (tamanho, localização, etc.)
- E o preço (rótulo)
- O modelo aprende a prever preços (aprende a relação entre entrada e saída)

Tipos comuns:

a- Regressão

Usada para prever valores numéricos contínuos (Aprender uma função que mapeia as características de entrada para a variável alvo)
Ex: Previsão de preço de imóveis, valor de ações, resultados médicos

b-Classificação

Usada para prever rótulos de classe discretos ou resultados categóricos
Ex: Detecção de spam em emails, classificação de imagens, classificar um texto como  sentimento positivo/negativo ou neutro

2. Aprendizado Não Supervisionado


Identifica padrões em dados não rotulados

A aprendizagem não supervisionada permite que o modelo explore os dados, encontre estruturas ou padrões ocultos e obtenha insights sem a necessidade de exemplos rotulados. É particularmente útil ao trabalhar com grandes conjuntos de dados não anotados ou quando não há conhecimento prévio sobre os padrões subjacentes.

Aqui não existem rótulos. O modelo tenta descobrir padrões sozinho.

É Ideal quando você não sabe exatamente o que está procurando. Exemplos:

- Agrupamento ou Clustering
   Agrupa dados semelhantes com base em suas propriedades ou características
   Ex: segmentação de clientes, sistemas de informação geográfica (agrupar regiões)

- Detecção de anomalias
   Identifica instâncias que se desviam da norma, indicando anomalias ou valores discrepantes.
    Ex: fraude em cartão de crédito, detectção de erro em logs, limpeza de dados

- Regras de associação
   Descobre relações ou associações interessantes entre itens em um conjunto de dados.
   Ex: “quem compra X também compra Y”

3. Aprendizado de máquina por reforço


O agente aprende a interagir com o ambiente

O aprendizado por reforço permite que o agente aprenda políticas ótimas por meio da interação com um ambiente, tornando-o adequado para problemas em que uma sequência de ações precisa ser aprendida e otimizada ao longo do tempo. É particularmente útil em cenários com tomada de decisão complexa e feedback esparso ou atrasado.

Nesse contexto, o "agente" representa uma entidade que estamos treinando para interagir com seu ambiente. Por exemplo, uma aplicação comum do aprendizado por reforço é treinar um modelo para jogar um videogame. Nesse caso, o personagem do videogame seria o agente.

O agente recebe feedback na forma de recompensas ou penalidades com base em suas ações e, em seguida, altera seu estado de acordo com esse feedback. Por meio de tentativas e erros, o agente explora o ambiente, aprende estratégias ótimas e age para maximizar sua recompensa a longo prazo.

Esse é mais próximo de “treinar comportamento” onde um agente aprende através de tentativa e erro e de recompensas e punições. O objetivo é maximizar recompensa ao longo do tempo.

Exemplos:
    Jogos (como AlphaGo)
    Robótica
    Veículos autônomos

Aproveitamento (Explotação) e Exploração

No aprendizado por reforço, o agente precisa equilibrar exploração e o aprovietamento. A exploração envolve experimentar diferentes ações para aprender sobre o ambiente e descobrir estratégias ótimas. A explotação envolve aproveitar o conhecimento adquirido para tomar ações que se espera que gerem altas recompensas. O agente deve encontrar um equilíbrio entre explorar novas ações e explorar as informações aprendidas para tomar decisões ótimas.

Por exemplo, imagine um modelo de IA que está aprendendo a jogar um videogame, como um simulador de corrida de carros. Ele entende o conceito de posição final na corrida e sabe que precisa se esforçar ao máximo para completá-la antes dos outros participantes. Ele ainda não sabe como fazer isso.

Começará por se familiarizar com a mecânica de condução. Nesse processo, aprenderá a controlar o carro. Depois, aprenderá que, para completar a corrida, precisa seguir o traçado. Esta é a fase de exploração.

Uma vez familiarizado com os controles e outras mecânicas de jogo, poderá começar a descobrir as formas mais eficazes de as aplicar para chegar em primeiro lugar. Esta é a fase de exploração.

No aprendizado por reforço, existe um equilíbrio importante:

Exploração → tentar coisas novas
Explotação → usar o que já funciona

Exemplo:  Um carro em um jogo:
- Primeiro aprende a dirigir (exploração)
- Depois aprende a ganhar corridas (explotação)

Existem também outras maneiras de classificar diferentes tipos de aprendizado de máquina, como aprendizado superficial versus aprendizado profundo. Mas, independentemente de um modelo ser treinado por meio de uma equação matemática simples e superficial ou por meio de uma rede neural complexa, os mesmos três tipos gerais de aprendizado de máquina abordados ainda se aplicam.

Aprendendo na prática com ML.NET

Aqui entra um ponto importante, principalmente para o desenvolvedor .NET. A plataforma .NET tem disponível o ML.NET.

O ML.NET é um framework de aprendizado de máquina gratuita, de código aberto e multiplataforma para a plataforma de desenvolvedor .NET.

O ML.NET permite treinar, construir e enviar modelos de machine learning personalizados usando C# ou F# em vários cenários de ML. Ele inclui recursos como o machine learning automatizado (AutoML) e as ferramentas como a CLI do ML.NET e o ML.NET Model Builder, o que tornará a integração do machine learning aos seus aplicativos ainda mais fácil.o:

O ML.NET permite:
 - Treinar modelos sem conhecimento profundo de algoritmos
 - Usar AutoML para escolher o melhor modelo automaticamente
 - Trabalhar diretamente com C#

Ou seja: Como desenvolvedor .NET você tem um baixo atrito para começar

A instalação exige os seguintes pré-requisitos:  .NET 8 SDK,  (Opcional) Visual Studio

dotnet tool install --global mlnet-win-x64

Depois basta digitar:  mlnet

Se aparecer ajuda de comandos, está pronto.

Exemplo prático básico

Cenário :  Você quer treinar um modelo que classifique frases como:
                "Isso é muito bom" → positivo
                "Isso é horrível" → negativo

1- Modelo de dados

public class SentimentoData
{
    public string Texto { get; set; }
    public bool Label { get; set; } // true = positivo, false = negativo
}
public class SentimentoPrediction
{
    public bool PredictedLabel { get; set; }
    public float Probability { get; set; }
    public float Score { get; set; }
}

2.Treinando o modelo

using Microsoft.ML;
using MLNET_Demo.Model;

Console.WriteLine("Iniciando o processo de treinamento do modelo de análise de sentimento...\n");

var context = new MLContext();

// Dados simples
var dados = new List
{
    new SentimentoData { Texto = "Isso é muito bom", Label = true },
    new SentimentoData { Texto = "Gostei bastante", Label = true },
    new SentimentoData { Texto = "O livro é excelente", Label = true },
    new SentimentoData { Texto = "Isso é ruim", Label = false },
    new SentimentoData { Texto = "A experiência foi Horrível", Label = false }
};

// Converter para IDataView
var dataView = context.Data.LoadFromEnumerable(dados);

// Pipeline
var pipeline = context.Transforms.Text
    .FeaturizeText("Features", nameof(SentimentoData.Texto))
    .Append(context.BinaryClassification.Trainers.SdcaLogisticRegression());

// Treinar
var model = pipeline.Fit(dataView);

3. Fazendo uma previsão

// Criar engine de previsão
var predictor = context.Model.CreatePredictionEngine(model);

// Teste
var entrada = new SentimentoData
{
    Texto = "Isso é excelente!"
};

Console.WriteLine($"Texto : {entrada.Texto}\n");

var resultado = predictor.Predict(entrada);

Console.WriteLine($"Predição: {resultado.PredictedLabel}");
Console.WriteLine($"Probabilidade: {resultado.Probability}");

Console.ReadLine();

Executando teremos o seguinte resultado:

Nesse processo, o método FeaturizeText é responsável por transformar o texto em uma representação numérica, convertendo as palavras em vetores que o modelo consegue entender.

Em seguida, o SdcaLogisticRegression entra como o algoritmo de classificação, aprendendo padrões a partir desses dados.

Quando chamamos o método Fit, estamos efetivamente treinando o modelo com os dados fornecidos.

Por fim, com o método Predict, utilizamos esse modelo já treinado para fazer previsões sobre novos dados.

Conclusão

Se você levar apenas uma ideia deste artigo, que seja esta: IA não é sobre modelos isolados — é sobre sistemas funcionando no mundo real.  E quando você realmente entende isso, tudo muda.

A conversa deixa de ser sobre algoritmos sofisticados e passa a ser sobre entregar valor. Não se trata de treinar o modelo mais complexo, mas de construir soluções que funcionem de ponta a ponta, resolvendo problemas reais.

Por isso, você não precisa se transformar em um cientista de dados. O que você precisa é assumir o papel de engenheiro: alguém que sabe pensar em sistemas, integrar diferentes partes e fazer tudo funcionar de forma consistente no mundo real.

É essa mentalidade que diferencia quem apenas experimenta com IA de quem realmente constrói aplicações com impacto. E o caminho é mais simples — e mais prático — do que parece.

Os próximos passos são: colocar a mão na massa, começando pelo básico: criar modelos simples, entender como funciona o pipeline de dados e, a partir daí, evoluir gradualmente.

E estamos conversados...  

"Porque se levantarão falsos cristos, e falsos profetas, e farão sinais e prodígios, para enganarem, se for possível, até os escolhidos."
Marcos 13:22

Referências:


José Carlos Macoratti