Em Machine Learning, Usamos vários tipos de algoritmos para permitir que as máquinas aprendam as relações dentro dos dados fornecidos e façam previsões baseadas em padrões ou regras identificadas no conjunto de dados.. Então, Regressão é uma técnica de aprendizado de máquina onde o modelo prevê a produção como um valor numérico contínuo.
Fonte: https://www.hindish.com
A análise de regressão é frequentemente usada nas finanças, investimentos e outros, e descobrir a relação entre uma única variável dependente (variável alvo) que depende de vários independentes. Por exemplo, Prever o preço da habitação, o mercado de ações ou o salário de um funcionário, etc.são os mais comuns
problemas de regressão.
Os algoritmos que vamos cobrir são:
1. Regressão linear
2. Árvore de decisão
3. Suporte à regressão vetorial
4. Regressão de loop
5. Floresta aleatória
1. Regressão linear
Regressão linear é um algoritmo de aprendizado de máquina usado para aprendizado supervisionado. A regressão linear realiza a tarefa de prever uma variável dependente (objetivo) dependendo das variáveis independentes dadas. Então, Esta técnica de regressão encontra uma relação linear entre uma variável dependente e as outras variáveis independentes.. Portanto, o nome deste algoritmo é Regressão Linear.
Na figura acima, no eixo X é a variável independente e no eixo y é a saída. A linha de regressão é a linha que melhor se encaixa em um modelo. E nosso principal objetivo neste algoritmo é encontrar a linha que melhor se encaixa..
Prós:
- Regressão linear é simples de implementar.
- Menos complexidade em comparação com outros algoritmos.
- Regressão linear pode causar superequiptação, Mas pode ser evitado usando algumas técnicas de redução de dimensionalidade, Técnicas de regularização e validação cruzada.
Contras:
- Outliers afetam severamente este algoritmo.
- Simplifica demais os problemas do mundo real ao assumir uma relação linear entre variáveis, por isso não recomendado para casos de uso prático.
Implementação
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([[2, 1], [3, 2], [4, 2], [5, 3]])
# y = 1 * x_0 + 2 * x_1 + 3
y = np.dot(X, np.array([1, 2])) + 3
lr = LinearRegression().ajuste(X, e)
Lr.predict(np.array([[1, 5]]))
Saída
variedade([14.])
2. Árvore de decisão
Modelos de árvore de decisão podem ser aplicados a todos os dados que contenham características numéricas e características categóricas. As árvores de decisão são boas para capturar a interação não linear entre características e a variável alvo. As árvores de decisão coincidem de alguma forma com o pensamento no nível humano, por isso é muito intuitivo entender os dados.
Fonte: https://dinhanhthi.com
Por exemplo, Se estamos resolvendo quantas horas uma criança joga em um clima particular, A árvore de decisão se parece um pouco com isso na foto.
Então, em resumo, Uma árvore de decisão é uma árvore onde cada nó representa uma característica, Cada ramo representa uma decisão e cada folha representa um resultado (valor numérico para regressão).
Prós:
- Fácil de entender e interpretar, Visualmente intuitivo.
- Pode trabalhar com características numéricas e categóricas.
- Requer pouco processamento pré-dados: Não há necessidade de codificação one-hot, variáveis falsas, etc.
Contras:
- Tende a se curvar demais.
- Uma pequena mudança nos dados tende a fazer uma grande diferença na estrutura da árvore., o que causa instabilidade.
Implementação
import numpy as np from sklearn.tree import DecisionTreeRegressor rng = np.random.RandomState(1) X = np.sort(5 * rng.rand(80, 1), eixo = 0) y = np.sin(X).Ravel() e[::5] += 3 * (0.5 - rng.rand(16)) # Fit regression model regr = DecisionTreeRegressor(max_depth=2) regr.fit(X, e) # Predict X_test = np.arange(0.0, 5.0, 1)[:, por exemplo, newaxis] resultado = regr.predict(X_test) imprimir(resultado) Saída: [ 0.05236068 0.71382568 0.71382568 0.71382568 -0.86864256]
3. Suporte à regressão vetorial
Você deve ter ouvido falar de SVM, quer dizer, Máquina de vetores de suporte. SVR também usa a mesma ideia de SVM, mas aqui ele tenta prever os valores reais. Este algoritmo usa hiperplanos para segregar dados. Caso essa separação não seja possível, Em seguida, use o truque do kernel onde a dimensão aumenta e, em seguida, os pontos de dados tornam-se separáveis por um hiperplano.
Fonte: https://www.medium.com
Na figura acima, A Linha Azul é o Hiperplano; A linha vermelha é a linha de fronteira
Todos os pontos de dados estão dentro da linha de fronteira (Linha Vermelha). O principal objetivo do SVR é basicamente considerar os pontos que estão dentro da linha de fronteira..
Prós:
- Robusto para outliers.
- Excelente generalizabilidade
- Alta precisão de previsão.
Contras:
- Não é adequado para grandes conjuntos de dados.
- Eles não funcionam muito bem quando o conjunto de dados tem mais ruído.
Implementação
from sklearn.svm import SVR import numpy as np rng = np.random.RandomState(1) X = np.sort(5 * rng.rand(80, 1), eixo = 0) y = np.sin(X).Ravel() e[::5] += 3 * (0.5 - rng.rand(16)) # Fit regression model svr = SVR().ajuste(X, e) # Predict X_test = np.arange(0.0, 5.0, 1)[:, por exemplo, newaxis] svr.predict(X_test)
Saída: variedade([-0.07840308, 0.78077042, 0.81326895, 0.08638149, -0.6928019 ])
4. Regressão de loop
- LASSO significa Operador de Contração de Seleção Mínima Absoluta. A contração é basicamente definida como uma restrição de atributos ou parâmetros.
- O algoritmo funciona encontrando e aplicando uma restrição aos atributos do modelo que fazem com que os coeficientes de regressão de algumas variáveis sejam reduzidos a zero..
- Variáveis com coeficiente de regressão de zero são excluídas do modelo.
- Portanto, A análise de regressão de loop é basicamente um método de seleção variável e contração e ajuda a determinar quais dos preditores são mais importantes..
Prós:
Contras:
- O LASSO selecionará apenas um recurso de um grupo de recursos mapeados
- Os recursos selecionados podem ser fortemente tendenciosos.
Implementação
from sklearn import linear_model import numpy as np rng = np.random.RandomState(1) X = np.sort(5 * rng.rand(80, 1), eixo = 0) y = np.sin(X).Ravel() e[::5] += 3 * (0.5 - rng.rand(16)) # Fit regression model lassoReg = linear_model.Lasso(alfa=0,1) lassoReg.fit(X,e) # Predict X_test = np.arange(0.0, 5.0, 1)[:, por exemplo, newaxis] lassoReg.prever(X_test)
Saída: variedade([ 0.78305084, 0.49957596, 0.21610108, -0.0673738 , -0.35084868])
5. Regressor florestal aleatório
Florestas aleatórias são um conjunto (combinação) de árvores de decisão. É um algoritmo de aprendizagem supervisionado que é usado para classificação e regressão. Os dados de entrada são passados através de várias árvores de decisão. É executado construindo um número diferente de árvores de decisão no momento do treinamento e gerando a classe que é o modo das aulas (para classificação) o previsão média (para regressão) de árvores individuais.
Fonte: https://levelup.gitconnected.com
Prós:
- Bom para aprender relacionamentos complexos e não lineares
- Muito fácil de interpretar e entender.
Contras:
- São propensos a superequipar
- Usar matrizes florestais aleatórias maiores para alcançar maior desempenho diminui sua velocidade e, em seguida, eles também precisam de mais memória.
Implementação
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
X, y = make_regression(n_features=4, n_informative=2, random_state = 0, shuffle = False)
rfr = RandomForestRegressor(max_depth=3)
rfr.fit(X, e)
imprimir(rfr.predict([[0, 1, 0, 1]]))
Saída:
[33.2470716]
Notas finais
Aqui estão alguns algoritmos de regressão populares, Há muito mais e também algoritmos avançados. Explore-os também.. Você também pode seguir esses algoritmos de classificação para aumentar seu conhecimento de aprendizado de máquina..
Obrigado por ler se você chegou aqui 🙂
Vamos conectar LinkedIn
A mídia mostrada neste artigo não é propriedade da Analytics Vidhya e é usada a critério do autor.