• 机器学习实战基础(六):创建岭回归器


    简介

    线性回归的主要问题是对异常值敏感。在真实世界的数据收集过程中,经常会遇到错误的度量结果。而线性回归使用的普通最小二乘法,其目标是使平方误差最小化。这时,由于异常值误差的绝对值很大,因此会引起问题,从而破坏整个模型。

    准备工作 

     

    右下角的两个数据点明显是异常值,但是这个模型需要拟合所有的数据点,因此导致整个模型都错了。仅凭直觉观察,我们就会觉得如图1-5的拟合结果更好。

    普通最小二乘法在建模时会考虑每个数据点的影响,因此,最终模型就会像图1-4显示的直线那样。显然,我们发现这个模型不是最优的。
    为了避免这个问题,我们引入正则化项的系数作为阈值来消除异常值的影响。这个方法被称为岭回归。

    详细步骤 

    (1) 你可以从data_multi_variable.txt文件中加载数据。这个文件的每一行都包含多个数值。除了最后一个数值外,前面的所有数值构成输入特征向量。
    (2) 把下面的代码加入regressor.py文件中。我们用一些参数初始化岭回归器:

    ridge_regressor = linear_model.Ridge(alpha=0.01, fit_ intercept=True, 
    max_iter=10000) 

    (3) alpha参数控制回归器的复杂程度。当alpha趋于0时,岭回归器就是用普通最小二乘法的线性回归器。因此,如果你希望模型对异常值不那么敏感,就需要设置一个较大的alpha值。这里把alpha值设置为0.01。

    (4) 下面让我们来训练岭回归器。 

    ridge_regressor.fit(X_train, y_train)  
    y_test_pred_ridge = ridge_regressor.predict(X_test) 
    print "Mean absolute error =", round(sm.mean_absolute_error 
        (y_ test, y_test_pred_ridge), 2) 
    print "Mean squared error =", round(sm.mean_squared_error 
        (y_test, y_test_pred_ridge), 2) 
    print "Median absolute error =", round(sm.median_absolute_error 
        (y_ test, y_test_pred_ridge), 2) 
    print "Explain variance score =", round(sm.explained_variance_ score 
        (y_test, y_test_pred_ridge), 2) 
    print "R2 score =", round(sm.r2_score(y_test, y_test_pred_ridge), 2) 

    运行代码检查误差指标。可以用同样的数据建立一个线性回归器,并与岭回归器的结果进行比较,看看把正则化引入回归模型之后的效果如何。

  • 相关阅读:
    设计模式之 原型模式
    设计模式之 策略模式
    设计模式之 单例模式
    使用IntelliJ IDEA 15和Maven创建Java Web项目(转)
    Java 内存分配全面浅析(转)
    java常量池概念 (转)
    java基本类型和包装类的区别(转)
    JAVA数据类型(转)
    SQL SERVER 2008 服务器登录名、角色、数据库用户、角色、架构的关系(转)
    视图的好处(转)
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12979243.html
Copyright © 2020-2023  润新知