O que são Modelos Paramétricos e Não Paramétricos em machine learning

O que são Modelos Não Paramétricos?

Comparação direta:

CaracterísticaModelos ParamétricosModelos Não Paramétricos
SuposiçõesFortes suposições sobre a distribuição dos dadosPoucas ou nenhuma suposição sobre a distribuição dos dados
ComplexidadeFixa, definida por um número fixo de parâmetrosVaria com a quantidade de dados
EficiênciaMais eficientes quando as suposições são válidasMenos eficientes em termos de dados e computação, geralmente
FlexibilidadeMenos flexíveisMais flexíveis
Robustez a outliersMais sensíveis a outliers e violações das suposiçõesMais robustos a outliers e violações das suposições
Dados NecessáriosMenos dados, geralmenteMais dados, geralmente

Quando usar qual tipo de modelo?

Exemplo prático e didático: Prevendo a altura de pessoas

Passo 1: Visualizando os Dados

import numpy as np
import matplotlib.pyplot as plt

# Dados de exemplo
idade = np.array([5, 10, 15, 20, 25, 30, 40, 45])
altura = np.array([110, 140, 165, 175, 178, 178, 178, 178])

# Plot
plt.scatter(idade, altura, color='blue', label='Dados Observados')
plt.xlabel('Idade (anos)')
plt.ylabel('Altura (cm)')
plt.title('Altura vs Idade')
plt.legend()
plt.show()

Passo 2: Modelo Paramétrico (Regressão Linear)

from sklearn.linear_model import LinearRegression

# Regressão Linear
idade = idade.reshape(-1, 1)  # Transformando para matriz
modelo_parametrico = LinearRegression()
modelo_parametrico.fit(idade, altura)

# Previsão
idade_teste = np.array([8, 18, 25, 30, 40, 45]).reshape(-1, 1)  # Testando idades fora da amostra
previsoes_parametricas = modelo_parametrico.predict(idade_teste)

# Plot
plt.scatter(idade, altura, color='blue', label='Dados Observados')
plt.plot(idade, modelo_parametrico.predict(idade), color='red', label='Regressão Linear')
plt.scatter(idade_teste, previsoes_parametricas, color='green', label='Previsões')
plt.xlabel('Idade (anos)')
plt.ylabel('Altura (cm)')
plt.title('Modelo Paramétrico - Regressão Linear')
plt.legend()
plt.show()

Passo 3: Modelo Não Paramétrico (KNN)

from sklearn.neighbors import KNeighborsRegressor

# KNN
modelo_nao_parametrico = KNeighborsRegressor(n_neighbors=2)  # Usando 2 vizinhos
modelo_nao_parametrico.fit(idade, altura)

# Previsão
previsoes_nao_parametricas = modelo_nao_parametrico.predict(idade_teste)

# Plot
plt.scatter(idade, altura, color='blue', label='Dados Observados')
plt.scatter(idade_teste, previsoes_nao_parametricas, color='orange', label='Previsões')
plt.xlabel('Idade (anos)')
plt.ylabel('Altura (cm)')
plt.title('Modelo Não Paramétrico - KNN')
plt.legend()
plt.show()

Conclusão

  1. Mãos à obra aprendizado de máquina com Scikit-Learn, Keras & TensorFlow: conceitos, ferramentas e técnicas para a construção de sistemas inteligentes.
  2. Python para análise de dados
  3. Estatística Prática Para Cientistas de Dados: 50 Conceitos Essenciais
  4. An Introduction to Statistical Learning (Python e R)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima
×