Pular para o conteúdo
Gestão

Machine Learning nos Negócios: Modelos, Dados e Métricas de Avaliação

Admin4 min de leitura
Machine Learning nos Negócios: Modelos, Dados e Métricas de Avaliação

Introdução

A inteligência artificial deixou de ser um conceito futurista para se tornar uma ferramenta cotidiana nas organizações. Entre as diversas técnicas de IA, o Machine Learning (ML) destaca‑se por permitir que sistemas aprendam a partir de dados históricos e façam previsões ou decisões automatizadas. No contexto empresarial, isso significa otimizar processos, reduzir custos, melhorar a experiência do cliente e descobrir oportunidades de receita antes invisíveis.

Entretanto, transformar um problema de negócio em um projeto de ML bem‑sucedido requer mais do que escolher um algoritmo aleatoriamente. É preciso:

  • Entender a natureza do problema (classificação, regressão, agrupamento etc.);
  • Construir um dataset confiável, realizando limpeza, tratamento de valores ausentes e criação de atributos relevantes (feature engineering);
  • Selecionar métricas de avaliação que reflitam o impacto real nos resultados da empresa.
  • Este artigo apresenta, de forma estruturada, como conduzir cada uma dessas etapas, trazendo exemplos de código em Python que podem ser executados imediatamente. Ao final, você terá um roteiro completo para iniciar projetos de ML que realmente entregam valor ao negócio.

    Tecnologia e Inovação

    1. Escolhendo o modelo certo para o problema de negócio

    Os problemas empresariais costumam se enquadrar em três categorias principais:

    Tipo de problemaExemplo de negócioAlgoritmos típicos
    ClassificaçãoDetectar fraude em transaçõesRegressão logística, árvores de decisão, Gradient Boosting, Redes Neurais
    RegressãoPrever demanda de estoqueRegressão linear, Random Forest Regressor, XGBoost
    AgrupamentoSegmentar clientes por comportamentoK‑means, DBSCAN, Agglomerative Clustering

    1.1. Quando usar regressão logística vs. árvore de decisão

    • Regressão logística: ideal quando a relação entre variáveis independentes e a probabilidade do evento é aproximadamente linear. Produz probabilidades bem calibradas e é interpretável.
    • Árvore de decisão: captura interações não lineares e regras de decisão simples de entender (“se receita > R$ 10 mil, então…”). Porém, pode ser mais propensa a overfitting sem poda.

    1.2. Ferramentas de apoio à escolha

    O Scikit‑learn oferece a classe GridSearchCV, que permite testar combinações de hiperparâmetros e comparar modelos usando validação cruzada (cross‑validation). Abaixo, um snippet que compara dois classificadores para um problema de churn:

    # -- coding: utf-8 --
    

    import pandas as pd from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import roc_auc_score

    Carrega dataset fictício

    df = pd.read_csv('churn.csv') X = df.drop('churn', axis=1) y = df['churn']

    Divisão treino / teste

    X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42, stratify=y )

    Padronização (necessária para regressão logística)

    scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test)

    Definição de grades de hiperparâmetros

    param_grid_lr = {'C': [0.01, 0.1, 1, 10]} param_grid_dt = {'max_depth': [3, 5, 7, None], 'min_samples_split': [2, 5, 10]}

    Busca em grade para cada modelo

    grid_lr = GridSearchCV(LogisticRegression(solver='lbfgs', max_iter=500), param_grid_lr, cv=5, scoring='roc_auc') grid_dt = GridSearchCV(DecisionTreeClassifier(), param_grid_dt, cv=5, scoring='roc_auc')

    grid_lr.fit(X_train_scaled, y_train) grid_dt.fit(X_train, y_train) # Árvores não precisam de escala

    print('Melhor AUC (LogReg):', grid_lr.best_score_) print('Melhor AUC (Árvore):', grid_dt.best_score_)

    O código acima demonstra como:

    • Separar dados em treino e teste de forma estratificada;
    • Escalar atributos numéricos apenas quando necessário;
    • Avaliar modelos usando a métrica AUC‑ROC (ver seção 3).


    2. Preparação de dados e engenharia de atributos

    A qualidade dos dados determina a qualidade do modelo. Mesmo o algoritmo mais sofisticado falhará se alimentado por informações incompletas ou ruidosas.

    2.1. Tratamento de valores ausentes

    import numpy as np
    

    Exemplo de preenchimento simples

    df['idade'].fillna(df['idade'].median(), inplace=True)

    Estratégia avançada: imputação por KNN

    from sklearn.impute import KNNImputer imputer = KNNImputer(n_neighbors=5) df_numeric = df.select_dtypes(include=[np.number]) df_imputed = pd.DataFrame(imputer.fit_transform(df_numeric), columns=df_numeric.columns)

    2.2. Codificação de variáveis categóricas

    Para algoritmos que exigem entrada numérica, converta categorias em vetores binários (one‑hot) ou em valores inteiros (label encoding). O Pandas get_dummies simplifica o processo:

    categorical_cols = ['cidade', 'plano']
    

    df_encoded = pd.get_dummies(df, columns=categorical_cols, drop_first=True)

    2.3. Criação de atributos (feature engineering)

    A arte de feature engineering consiste em transformar variáveis brutas em informações que o modelo consiga explorar. Exemplos comuns:

    • Tempo de relacionamento: dias_cliente = (data_atual - data_adesão).days
    • Relação entre duas colunas: ratio_gasto = gasto_total / numero_transacoes
    • Agrupamento de categorias raras: agrupar cidades com menos de 100 clientes em “Outros”.

    # Criação de atributo de tempo de relacionamento
    

    df['data_adesão'] = pd.to_datetime(df['data_adesão']) df['dias_cliente'] = (pd.Timestamp('today') - df['data_adesão']).dt.days

    Razão gasto / transações

    df['ratio_gasto'] = df['gasto_total'] / df['numero_transacoes'].replace(0, np.nan) df['ratio_gasto'].fillna(0, inplace=True)

    2.4. Normalização e padronização

    Algoritmos baseados em distância (KNN, SVM) são sensíveis à escala dos atributos. Use StandardScaler ou MinMaxScaler para garantir que todas as variáveis contribuam igualmente.

    from sklearn.preprocessing import MinMaxScaler
    

    scaler = MinMaxScaler() scaled_features = scaler.fit_transform(df_encoded)


    3. Métricas de avaliação alinhadas ao objetivo de negócio

    A escolha da métrica deve refletir o custo real de erros para a empresa. Algumas situações típicas:

    | Problema | Métrica recomendada | Por quê | |----------|---------------------|---------| |

    Artigos relacionados