20171028机器学习之线性回归过拟合问题的解决方案

Ootori Ootori     2022-09-24     543

关键词:

在函数中加入一个正则项:

 

三种方式:

一、Ridge回归(岭回归):

  优点:具有较高的准确性、鲁棒性以及稳定性

  缺点:求解速度慢

二、Lasso回归:

  优点:求解速度快(原理降维计算,把数据维度中存在的噪音和冗余去除)

  缺点:相比Ridge回归没有较高的准确性、鲁棒性以及稳定性

三、弹性网络:

  特点:综合了以上两种回归算法的特性。计算效率以及鲁棒性兼备。

 

 

几种回归解决拟合问题的综合比较:

GIthub:代码

https://github.com/chenjunhaolefa/AI/blob/master/MachineLearning/LinearRegression03.py

# coding=utf-8
'''
下面的代码是用一个小例子解决线性回归过拟合问题
'''
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
import warnings
import sklearn
from sklearn.linear_model import LinearRegression, LassoCV, RidgeCV, ElasticNetCV
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.linear_model.coordinate_descent import ConvergenceWarning

#解决画图产生的中文乱码问题
mpl.rcParams['font.sans-serif']=[u'simHei']
mpl.rcParams['axes.unicode_minus']=False

#生成一段数据来测试一下拟合问题
np.random.seed(100)
np.set_printoptions(linewidth=1000, suppress=True)
N = 10
x = np.linspace(0, 6, N) + np.random.randn(N)
y = 1.8*x**3 + x**2 - 14*x - 7 + np.random.randn(N)
x.shape = -1, 1
y.shape = -1, 1

#模型
models = [
    Pipeline([
            ('Poly', PolynomialFeatures()),
            ('Linear', LinearRegression(fit_intercept=False))
        ]),
    Pipeline([
            ('Poly', PolynomialFeatures()),
            ('Linear', RidgeCV(alphas=np.logspace(-3,2,50), fit_intercept=False))
        ]),
    Pipeline([
            ('Poly', PolynomialFeatures()),
            ('Linear', LassoCV(alphas=np.logspace(-3,2,50), fit_intercept=False))
        ]),
    Pipeline([
            ('Poly', PolynomialFeatures()),
            ('Linear', ElasticNetCV(alphas=np.logspace(-3,2,50), l1_ratio=[.1, .5, .7, .9, .95, 1], fit_intercept=False))
        ])
]

plt.figure(facecolor='W')
degree = np.arange (1, N, 2)  # 定义函数的阶数  X^2代表2阶函数 N表示N阶
dm = degree.size
colors = []  # 颜色
for c in np.linspace (16711680, 255, dm):
    colors.append ('#%06x' % c)
titles = [u'线性回归', u'Ridge回归', u'Lasso回归', u'ElasticNet']

for t in range(4):
    model = models[t]
    plt.subplot(2, 2, t + 1)
    plt.plot(x, y, 'ro', ms=5, zorder=N)

    for i, d in enumerate(degree):
        model.set_params(Poly__degree=d)

        model.fit(x, y.ravel())

        lin = model.get_params('Linear')['Linear']

        output = u'%s:%d阶,系数为:' % (titles[t], d)
        print output, lin.coef_.ravel()

        x_hat = np.linspace(x.min(), x.max(), num=100)
        x_hat.shape = -1, 1

        y_hat = model.predict(x_hat)

        s = model.score(x, y)

        z = N - 1 if (d == 2) else 0
        label = u'%d阶, 正确率=%.3f' % (d, s)
        plt.plot(x_hat, y_hat, color=colors[i], lw=2, alpha=0.75, label=label, zorder=z)

    plt.legend(loc='upper left')
    plt.grid(True)
    plt.title(titles[t])
    plt.xlabel('X', fontsize=16)
    plt.ylabel('Y', fontsize=16)

plt.tight_layout(1, rect=(0, 0, 1, 0.95))
plt.suptitle(u'各种不同线性回归过拟合显示', fontsize=22)
plt.show()

  

 

机器学习之逻辑回归

1.用自己的话描述一下,什么是逻辑回归,与线性回归对比,有什么不同?逻辑回归又称逻辑回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域;与线性回归相比大致有两大不同:①... 查看详情

机器学习之线性回归

1、线性回归y=θx+ε,其中y=[y1,y2,y3,...,yn]T,θ=[θ1,θ2,...],x=[x1,x2,x3,...,xn]T,ε(残差)符合正态分布那么对于该模型,就是在损失函数最小的前提条件下,寻找θ取值的过程。其中,损失函数采用最小二乘的方法。2、对于求θ,有... 查看详情

机器学习之线性回归

1.线性回归简述在统计学中,线性回归(LinearRegression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合(自变... 查看详情

机器学习之线性回归概念总结速记

目录线性回归简介线性回归应用场景线性回归定义线性回归模型线性回归初步使用步骤分析代码过程线性回归的损失和优化损失函数优化算法正规方程梯度下降梯度的概念梯度下降和正规方程的对比算法选择依据欠拟合和过拟合... 查看详情

机器学习之线性回归(代码片段)

目录预测数值型数据:回归用线性回归找到最佳拟合直线程序8-1标准回归函数和数据导入函数程序8-2基于程序8-1绘图图片8-1ex0的数据集和它的最佳拟合直线局部加权线性回归图片8-2参数k与权重的关系程序8-3局部加权线性回归函... 查看详情

机器学习线性回归——岭回归解决过拟合问题(理论+图解+公式推导)

查看详情

机器学习之线性回归(代码片段)

以kaggle上的HousePrices:AdvancedRegressionTechniques为例讲述线性回归fromsklearn.linear_modelimportLinearRegression,RidgeCV,LassoCV,ElasticNetCV1、回归模型(1)一般线性回归:LinearRegressionwithoutregularizationfromsklearn.linear_modelimportLinearRegressionlr=LinearRegression... 查看详情

机器学习之回归简介

线性回归综述目的是找到一个映射,最能反映二者之间的关系。用来预测当有新的样本输入的时候,输入的结果线性回归处理的变量必须是连续的。欠拟合&过拟合过拟合跟欠拟合是ml算法表现差的两大原因欠拟合:... 查看详情

机器学习之线性回归---logistic回归---softmax回归

1摘要     本报告是在学习斯坦福大学机器学习课程前四节加上配套的讲义后的总结与认识。前四节主要讲述了回归问题,回归属于有监督学习中的一种方法。该方法的核心思想是从连续型统计数据中得到数学... 查看详情

机器学习之线性回归算法

...回归算法总结:  回归是统计学中最有力的工具之一。机器习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型、连续性而定义的。回归算法用于连续型分布预测,针对的是数值型的样本,... 查看详情

机器学习之拟合和过拟合问题

过拟合:当某个模型过度的学习训练数据中的细节和噪音,以至于模型在新的数据上表现很差,我们称过拟合发生了,通俗点就是:模型在训练集中测试的准确度远远高于在测试集中的准确度。过拟合问题通常发生在变量特征过... 查看详情

机器学习之线性回归(代码片段)

文章目录评价方法一元线性回归np.polyfit求解带入公式求解化简公式求解lstsq求解多元线性回归代码实现一元多项式回归代码实现参考评价方法回归问题有很多的评价方法。这里主要想写一下R^2的计算方法。需要计算R^2需要先弄清... 查看详情

机器学习之逻辑回归

1、逻辑回归其实可以称之为广义的线性回归,采用和线性回归类似的模型。但是逻辑回归解决的是一个分类问题,因此会对求出的y值做一个sigmod函数映射,然后根据预先设定的阈值进行标签处理。其中,使用sigmod函数将θTx映射... 查看详情

机器学习之线性回归以及logistic回归

1、线性回归回归的目的是预测数值型数据的目标值。目标值的计算是通过一个线性方程得到的,这个方程称为回归方程,各未知量(特征)前的系数为回归系数,求这些系数的过程就是回归。对于普通线性回归使用的损失函数... 查看详情

4.机器学习之逻辑回归算法

理论上讲线性回归模型既可以用于回归,也可以用于分类。解决回归问题,可以用于连续目标值的预测。但是针对分类问题,该方法则有点不适应,因为线性回归的输出值是不确定范围的,无法很好的一一对应到我们的若干分类... 查看详情

机器学习之线性回归选择题总结

...数据的特征过少B学习到数据的特征过多C学习到错误数据D机器运算错误答案:A3、线性回归的核心是()A.构建模型B.距离度量C.参数学习D.特征提取答案:C4、在估计线性回归模型时,可以将总平方和分解为回... 查看详情

深度学习之线性回归+基础优化(代码片段)

线性回归可以看作一个最简单的神经网络模型损失函数在我们开始考虑如何用模型拟合(fit)数据之前,我们需要确定一个拟合程度的度量。损失函数(lossfunction)能够量化目标的实际值与预测值之间的差距... 查看详情

javascript机器学习之线性回归

译者按:AI时代,不会机器学习的JavaScript开发者不是好的前端工程师。原文:MachineLearningwithJavaScript:Part1译者:Fundebug为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。使用JavaScript做机器学... 查看详情