一、何谓监督学习

要给出监督学习准确的定义并不容易,因为每本参考资料中都给出了不同的解释,虽然核心的思想是相同的,但是再
写博客的时候,总得选择自己满意的定义。在监督学习这个概念上,我选择以李航老师的统计学习方法中的定义作为
标准,监督学习(supervisedlearning)的任务是一个学习模型,使模型能够对任意给定的输入,对其相应的输出做出
一个好的预测(注意:这里的输入何输出,是指某个系统的输入、输出,与学习的输入、输出不同)。

1 通用线性模型

首先我们要介绍的是一组用于回归的方法,“回归”一词源于最佳拟合,表示要找到最佳拟合参数集。在回归方法中,目标值被估计为输入变量的线性组合。在数学概念中,被称为估计值(predicted value)。线性的回归方程:

称为回归系数,称为截距。

1.1 普通最小二乘

线性回归(LinearRegression)模型的目标是拟合一个系数为的线性模型,使得观测变量的值与目标值之间的残差尽可能小。在数学中,它主要解决以下形式的问题:

线性回归把数组X,y的你和系数存储在成员变量coef_中:

[python] view plaincopy
  1. >>> from sklearn import linear_model
  2. >>> clf = linear_model.LinearRegression()
  3. >>> clf.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
  4. LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
  5. >>> clf.coef_
  6. array([ 0.5,  0.5])

然而,最小普通二乘系数的估计和模型的独立性相关,输入矩阵X的列有近似的线性关系时,最小普通二乘对观察到的数据的随错误估计非常敏感,这种情况下会产生较大的方差。

例子:

  • Linear Regression Example

下面的例子仅仅使用了diabetes数据集中的第一特征,目的只是为了表明线性回归技术的二维的拟合图,从图中可以看出线性回归尽可能使数据集中观察到数据与预测数据之间的残差的平方最小。

回归系数、残差平方、 Variance score的计算如下:

[plain] view plaincopy
  1. 输出:
  2. Coefficients:
  3. [ 938.23786125]
  4. Residual sum of squares: 2548.07
  5. Variance score: 0.47
[python] view plaincopy
  1. print(__doc__)
  2. # Code source: Jaques Grobler
  3. # License: BSD 3 clause
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. from sklearn import datasets, linear_model
  7. # Load the diabetes dataset
  8. diabetes = datasets.load_diabetes()
  9. # Use only one feature
  10. diabetes_X = diabetes.data[:, np.newaxis]
  11. diabetes_X_temp = diabetes_X[:, :, 2]
  12. # Split the data into training/testing sets
  13. diabetes_X_train = diabetes_X_temp[:-20]
  14. diabetes_X_test = diabetes_X_temp[-20:]
  15. # Split the targets into training/testing sets
  16. diabetes_y_train = diabetes.target[:-20]
  17. diabetes_y_test = diabetes.target[-20:]
  18. # Create linear regression object
  19. regr = linear_model.LinearRegression()
  20. # Train the model using the training sets
  21. regr.fit(diabetes_X_train, diabetes_y_train)
  22. # The coefficients
  23. print('Coefficients: \n', regr.coef_)
  24. # The mean square error
  25. print("Residual sum of squares: %.2f"
  26. % np.mean((regr.predict(diabetes_X_test) - diabetes_y_test) ** 2))
  27. # Explained variance score: 1 is perfect prediction
  28. print('Variance score: %.2f' % regr.score(diabetes_X_test, diabetes_y_test))
  29. # Plot outputs
  30. plt.scatter(diabetes_X_test, diabetes_y_test,  color='black')
  31. plt.plot(diabetes_X_test, regr.predict(diabetes_X_test), color='blue',
  32. linewidth=3)
  33. plt.xticks(())
  34. plt.yticks(())
  35. plt.show()

如果X是一个大小为n行p列的矩阵,假设n>=p,则线性回归的普通最小二乘的算法复杂度为

1.2 岭回归(Ridge regression)

岭回归通过对回归系数增加一个惩罚因子解决了如下形式的普通最小二乘问题,岭回归系数使得残差平方和最小:

是一个控制收缩率大小的参数:越大,收缩率就越大,因此,回归线数的共线性就越健壮,图1给出了和权重weights之间的关系。

同其他线性模型一样,岭回归把数组X,y的你和系数存储在成员变量coef_中:

[python] view plaincopy
  1. >>> from sklearn import linear_model
  2. >>> clf = linear_model.Ridge (alpha = .5)
  3. >>> clf.fit ([[0, 0], [0, 0], [1, 1]], [0, .1, 1])
  4. Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None,
  5. normalize=False, solver='auto', tol=0.001)
  6. >>> clf.coef_
  7. array([ 0.34545455,  0.34545455])
  8. >>> clf.intercept_
  9. 0.13636...
  • Plot Ridge coefficients as a function of the regularization
  • Classification of text documents using sparse features

岭回归的复杂度与线性回归复杂度一样。

1.2.1 设置正则化的参数:广义交叉验证

RidgeCV 的岭回归中实现了参数alpha的交叉验证。RidgeCV与GridSearchCV的实现原理一样,只是RidgeCV用的方法是广义交叉验证(GCV),而GridSearchCV则用的是一对一交叉验证(leave-one-out cross-validation)。

1.3 Lasso

Lasso是估计稀疏系数的线性模型。Lasso总是倾向于解决参数较少的问题,并可以有效的减少解决方案依赖的变量参数。为此,Lasso及其变形
是压缩感知领域的基础,在特定的情况下,Lasso可以恢复非零权重的准确集合。
Lasso是由正则化参数组成的线性模型,目标函数为:
为常数,范数为参数向量的主题。
 Lasso使用梯度下降法拟合系数,另一种实现方法参考 Least Angle Regression 。
>>> from sklearn import linear_model
>>> reg = linear_model.Lasso(alpha = 0.1)
>>> reg.fit([[0, 0], [1, 1]], [0, 1])
Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,
   normalize=False, positive=False, precompute=False, random_state=None,
   selection='cyclic', tol=0.0001, warm_start=False)
>>> reg.predict([[1, 1]])
array([ 0.8])

例子:

  • Lasso and Elastic Net for Sparse Signals
  • Compressive sensing: tomography reconstruction with L1 prior (Lasso)

注意 使用Lasso进行特征选择

由于Lasso能够处理稀疏的线性模型,因此Lasso可以用做特征选择 ,详细请参见 L1-based feature selection。

监督学习——通用线性模型相关推荐

  1. Facebook新AI模型SEER实现自监督学习,LeCun大赞最有前途

    Fly-AI竞赛服务平台 flyai.com 在开始学习之前推荐大家可以多在FlyAI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力.FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站 ...

  2. 详细解读神经网络十大误解,再也不会弄错它的工作原理

    来源:http://www.cstor.cn/textdetail_10544.html_biz=MjM5OTA1MDUyMA==&mid=407358558&idx=2&sn ...

  3. 机器学习思维导图(更新中)

    机器学习思维导图 此思维导图可以作为机器学习的参考,让学习者可以有一个整体的观念 #mermaid-svg-vLrM5cuai4INm1Sm .label{font-family:'trebuchet ...

  4. 解读神经网络十大误解

    神经网络是机器学习算法中最流行和最强大的一类.在计量金融中,神经网络常被用于时间序列预测.构建专用指标.算法交易.证券分类和信用风险建模.它们也被用于构建随机过程模型和价格衍生品.尽管神经网络有这些用 ...

  5. 现代机器学习算法的优缺点

    原文地址:https://elitedatascience.com/machine-learning-algorithms 在本指南中,我们将通过现代机器学习算法进行实用,简洁的介绍.虽然存在其他类似 ...

  6. Image-to-Image的论文汇总

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 图像生成一直是计算机视觉领域非常有意思的方向,图像到图像的变换是其 ...

  7. 深度学习CTR模型最全演化图谱 [王喆观点]

    毕业于清华大学计算机系的王喆学长回顾了近3年来的所有主流深度学习CTR (click through rate) 模型,并梳理推荐系统.计算广告领域在深度学习方面的前沿进展.内容来源:https:// ...

  8. 盘点最重要的7个Python库

    导读:对于那些对Python数据生态系统不太熟悉的人士,我将简要地介绍一部分重要的库. 作者:韦斯·麦金尼(Wes McKinney) 译者:徐敬一 来源:大数据DT(ID:hzdashuju) 01 ...

  9. SPSS统计功能与模块对照表

    SPSS统计功能 - 应用速查表第一列为统计方法,中间为统计功能,最后一列为所在模块 1 ANOVA Models(单因素方差分析:简单因子) : 摘要 描述 方差 轮廓 - SPSS Base 2 ...

最新文章

  1. Windows server 2003 R2之三:通过域对统一部署客户端软件
  2. R语言ggplot2可视化:使用堆叠的条形图(Stacked Barplot)可视化每个数据行(row)的缺失值的情况(Visualizing missing data counts in rows)
  3. sqlserver2008 R2中查找未使用过的索引
  4. Android 显示、隐藏状态栏和导航栏
  5. FindFileByContent
  6. IoT Architecture
  7. GCD HDU - 1695
  8. [转]CSS浏览器兼容问题总结
  9. 【AI视野·今日Robot 机器人论文速览 第十九期】Mon, 5 Jul 2021
  10. 【华为云技术分享】《跟唐老师学习云网络》— Ping喂报文
  11. 互联网金融又任性撒钱了
  12. mysql connections
  13. 玩转spring boot——结合AngularJs和JDBC
  14. 初入职场的程序员,不想被时代淘汰?那你必须迈过这个坎!
  15. 最低生活保障数据采集(民政部门)Excel到数据库满足审计部门需要 源代码
  16. CVPR2021 | 视频超分辨率中时空蒸馏方案
  17. S-MJLs和网络动态系统的分析与综合
  18. Valve在Game Dev Conference上,OUYA上的1000场比赛等等
  19. 看过无数Java GC文章,这5个问题你也未必知道!
  20. Table 类 - Google Guava

热门文章

  1. Ajax中文乱码问题解决方法(服务器端用servlet)
  2. 解决IDEA2020控制台乱码的方法(亲测)
  3. 从Zipkin到Jaeger,Uber的分布式追踪之道tchannel
  4. MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
  5. php通过Mysqli和PDO连接mysql数据详解
  6. linux crontab 每隔10秒执行一次
  7. promise异步请求串行异步then并行异步all竞争异步race 传递参数resolve(then)reject(catch)
  8. Bootstrap的栅格布局
  9. Jquery常用标签
  10. wxpython动态实时绘图_wxPython: 简单的绘图例子