E se os seus dados forem realmente mais complexos do que uma simples reta? Surpreendentemente, pode realmente usar um modelo linear para ajustar dados não lineares. Uma maneira simples de fazer isso é adicionar poderes de cada recurso como novos recursos e, em seguida, treinar um modelo linear sobre esse conjunto estendido de recursos. Esta técnica é chamada de Regressão Polinomial.

Regressão Polinomial é um algoritmo de regressão que modela a relação entre uma variável dependente(y) e independente(x) como polinômio de nono grau. A equação de Regressão Polinomial é dada abaixo:

\(y= β_0+β_1x_1^1+ β_2x_1^2+ β_3x_1^3+...... β_nx_1^n\)

É também chamado de caso especial de Regressão Linear Múltipla em ML. Porque adicionamos alguns termos polinomiais à equação de regressão linear múltipla para convertê-la em regressão polinomial.

É um modelo linear com algumas modificações a fim de aumentar a precisão.

O conjunto de dados utilizado na regressão polinomial para treinamento é de natureza não linear.

Ele faz uso de um modelo de regressão linear para ajustar as funções e conjuntos de dados complicados e não lineares.

Assim, "Na regressão polinomial, as características originais são convertidas em características polinomiais de grau requerido (2,3,..,n) e, em seguida, modeladas usando um modelo linear."

A necessidade de Regressão Polinomial em ML pode ser entendida nas seguintes situações:

  • Se aplicarmos um modelo linear a um conjunto de dados linear, ele fornece-nos um bom resultado, como vimos na Regressão Linear Simples, mas se aplicarmos o mesmo modelo sem qualquer modificação em um conjunto de dados não linear, então ele produzirá uma saída drástica. Devido ao qual a função de perda aumentará, a taxa de erro será alta e a precisão será diminuída.
  • Portanto, para esses casos, onde os pontos de dados são organizados de forma não linear, precisamos do modelo de Regressão Polinomial. Podemos entendê-lo de uma maneira melhor usando o diagrama de comparação abaixo do conjunto de dados linear e do conjunto de dados não linear.
  • Na imagem acima, tomamos um conjunto de dados que está organizado de forma não linear. Então, se tentarmos cobri-lo com um modelo linear, podemos ver claramente que ele quase não cobre qualquer ponto de dados. Por outro lado, uma curva é adequada para cobrir a maioria dos pontos de dados, que é do modelo Polinomial.
  • Assim, se os conjuntos de dados são organizados de forma não linear, então devemos usar o modelo de Regressão Polinomial em vez de Regressão Linear Simples.

    Nota: Um algoritmo de Regressão Polinomial também é chamado de Regressão Linear Polinomial porque não depende das variáveis, em vez disso, depende dos coeficientes, que são organizados de forma linear.

Equação Regressão Linear Simples

\(y= β_0+β_1x_1\) 

Equação Regressão linear Múltipla

\(y= β_0+β_1x_1 + β_2x_2 + +...... β_nx_n\) 

Equação Regressão Polinomial \(y= β_0+β_1x_1^1 + β_2x_1^2 +...... β_nx_1^n\) 

Implementação de Regressão Polinomial utilizando Python:

Aqui vamos implementar a Regressão Polinomial usando Python. Vamos entendê-lo comparando o modelo de Regressão Polinomial com o modelo de Regressão Linear Simples. Então, primeiro, vamos entender o problema para o qual vamos construir o modelo.

Descrição do problema: Existe uma empresa de Recursos Humanos, que vai contratar um novo candidato. O candidato disse o seu salário anterior 160 mil por ano, e o RH tem que verificar se ele está dizendo a verdade ou não. Então, para verificar isso, eles têm apenas um conjunto de dados de sua empresa anterior em que os salários dos 10 primeiros cargos são mencionados com seus níveis. Ao verificar o conjunto de dados disponíveis, verificamos que existe uma relação não linear entre os níveis de Cargos e os salários. O nosso objetivo é construir um  modelo de regressão do detetor Bluffing, para que o RH possa contratar um candidato honesto. Abaixo estão os passos para construir tal modelo.

Etapas para Regressão Polinomial:

As principais etapas envolvidas na Regressão Polinomial são dadas abaixo:

  • Pré-processamento de dados
  • Crie um modelo de Regressão Linear e ajuste-o ao conjunto de dados
  • Crie um modelo de Regressão Polinomial e ajuste-o ao conjunto de dados
  • Visualize o resultado para o modelo de Regressão Linear e Regressão Polinomial.
  • Prevendo a saída.

Etapa de pré-processamento de dados:

A etapa de pré-processamento de dados permanecerá a mesma dos modelos de regressão anteriores, exceto por algumas alterações. No modelo de Regressão Polinomial, não usaremos dimensionamento de recursos e também não dividiremos nosso conjunto de dados em conjunto de treinamento e teste. Tem duas razões:

  • O conjunto de dados contém muito menos informações que não são adequadas para dividi-lo em um conjunto de teste e treinamento, caso contrário, nosso modelo não será capaz de encontrar as correlações entre os salários e níveis.
  • Neste modelo, queremos previsões muito precisas para o salário, por isso o modelo deve ter informações suficientes.

O código para a etapa de pré-processamento é dado abaixo:

# importing libraries  
import numpy as nm  
import matplotlib.pyplot as mtp  
import pandas as pd  
  
#importing datasets  
data_set= pd.read_csv('Position_Salaries.csv')  
  
#Extracting Independent and dependent Variable  
x= data_set.iloc[:, 1:2].values  
y= data_set.iloc[:, 2].values  

Construindo o modelo de regressão linear:

Agora, vamos construir e ajustar o modelo de regressão linear ao conjunto de dados. Na construção da regressão polinomial, tomaremos como referência o modelo de regressão linear e compararemos ambos os resultados. O código é dado abaixo:

#Fitting the Linear Regression to the dataset  
from sklearn.linear_model import LinearRegression  
lin_regs= LinearRegression()  
lin_regs.fit(x,y)  

No código acima, criamos o modelo Simple Linear usando lin_regs objeto da  classe LinearRegression e o ajustamos às variáveis do conjunto de dados (x e y).

Output: 
Out[5]: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
 

Construindo o modelo de regressão polinomial:

Agora vamos construir o modelo de Regressão Polinomial, mas será um pouco diferente do modelo Linear Simples. Porque aqui vamos usar PolynomialFeatures classe de biblioteca de pré-processamento. Estamos usando essa classe para adicionar alguns recursos extras ao nosso conjunto de dados.

#Fitting the Polynomial regression to the dataset  
from sklearn.preprocessing import PolynomialFeatures  
poly_regs= PolynomialFeatures(degree= 2)  
x_poly= poly_regs.fit_transform(x)  
lin_reg_2 =LinearRegression()  
lin_reg_2.fit(x_poly, y)  

Nas linhas de código acima, usamos poly_regs.fit_transform(x), porque primeiro estamos convertendo nossa matriz de feição em matriz de feição polinomial e, em seguida, ajustando-a ao modelo de regressão polinomial. O valor do parâmetro (grau= 2) depende da nossa escolha. Podemos escolhê-lo de acordo com as nossas características polinomiais.

Depois de executar o código, obteremos outra matriz x_poly, que pode ser vista na opção explorador de variáveis:

Em seguida, usamos outro objeto LinearRegression, ou seja, lin_reg_2, para ajustar nosso  vetor x_poly ao modelo linear.

Output:

Out[11]: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

Visualizando o resultado da regressão linear:

Agora vamos visualizar o resultado para o modelo de Regressão Linear como fizemos em Regressão Linear Simples. Abaixo está o código para ele:

#Visulaizing the result for Linear Regression model  
mtp.scatter(x,y,color="blue")  
mtp.plot(x,lin_regs.predict(x), color="red")  
mtp.title("Bluff detection model(Linear Regression)")  
mtp.xlabel("Position Levels")  
mtp.ylabel("Salary")  
mtp.show()  

Na imagem de saída acima, podemos ver claramente que a linha de regressão está tão longe dos conjuntos de dados. As previsões estão em uma linha reta vermelha, e os pontos azuis são valores reais. Se considerarmos esta saída para prever o valor do CEO, dará um salário de aprox. 600000$, o que está longe do valor real.

Portanto, precisamos de um modelo curvo para ajustar o conjunto de dados que não seja uma linha reta.

Visualizando o resultado da Regressão Polinomial

Aqui vamos visualizar o resultado do modelo de regressão polinomial, cujo código é pouco diferente do modelo acima.

O código para isso é dado abaixo:

#Visulaizing the result for Polynomial Regression  
mtp.scatter(x,y,color="blue")  
mtp.plot(x, lin_reg_2.predict(poly_regs.fit_transform(x)), color="red")  
mtp.title("Bluff detection model(Polynomial Regression)")  
mtp.xlabel("Position Levels")  
mtp.ylabel("Salary")  
mtp.show()  

No código acima, tomamos lin_reg_2.predict(poly_regs.fit_transform(x), em vez de x_poly, porque queremos um objeto Linear regressor para prever a matriz de características polinomiais.

Como podemos ver na imagem de saída acima, as previsões estão próximas dos valores reais. O gráfico acima irá variar como vamos mudar o grau.

Para o degree= 3:

Se mudarmos o grau = 3, então daremos um gráfico mais preciso, como mostrado na imagem abaixo.

Então, como podemos ver aqui na imagem de saída acima, o salário previsto para o nível 6.5 está perto de 170K$-190k$, o que parece que o futuro funcionário está dizendo a verdade sobre seu salário.

Grau= 4: Vamos novamente mudar o grau para 4, e agora obteremos o gráfico mais preciso. Assim, podemos obter resultados mais precisos aumentando o grau de Polinômio.

Prevendo o resultado final com o modelo de Regressão Linear:

Agora, vamos prever a saída final usando o modelo de regressão linear para ver se um funcionário está dizendo verdade ou blefe. Então, para isso, usaremos o  método predict() e passaremos o valor 6.5. Abaixo está o código para ele:

lin_pred = lin_regs.predict([[6.5]])  
print(lin_pred)

Output:

[330378.78787879]

Prevendo o resultado final com o modelo de Regressão Polinomial:

Agora, vamos prever a saída final usando o modelo de Regressão Polinomial para comparar com o modelo Linear. Abaixo está o código para ele:

poly_pred = lin_reg_2.predict(poly_regs.fit_transform([[6.5]]))  
print(poly_pred)  

Output:

[158862.45265153]

Como podemos ver, a saída prevista para a Regressão Polinomial é [158862.45265153], o que é muito mais próximo do valor real, portanto, podemos dizer que o futuro funcionário está dizendo verdade.

Last modified: Saturday, 21 June 2025, 5:37 PM