算法梳理(一)线性回归

1. 机器学习的一些概念

1.1 机器学习的概念

计算机程序利用经验 E 学习任务 T,性能是 P,如果针对任务 T 的性能 P 随着经验 E 不断增长,则称为机器学习。

机器学习教计算机执行人和动物与生俱来的活动:从经验中学习。机器学习算法使用计算方法直接从数据中“学习”信息,而不依赖于预定方程模型。当可用于学习的样本数量增加时,这些算法可自适应提高性能。

主要任务:

  • 分类(classification):将实例数据划分到合适的类别中。
    应用实例:判断网站是否被黑客入侵(二分类 ),手写数字的自动识别(多分类)
  • 回归(regression):主要用于预测数值型数据。
    应用实例:股票价格波动的预测,房屋价格的预测等。
  • 聚类:在无监督学习中,将数据集分成由类似的对象组成多个类的过程称为聚类。

1.2 有监督学习

监督式学习算法接受已知的输入数据集和对数据的已知响应(输出),然后训练模型,让模型能够为新输入数据的响应生成合理的预测。

监督式学习采用分类回归技术开发预测模型。

1.3 无监督学习

无监督学习的问题是,在未加标签的数据中,试图找到隐藏的结构。

聚类是一种最常用的无监督学习技术。

1.4 半监督学习

所给的数据有的是有标签的,而有的是没有标签的。常见的两种半监督的学习方式是直推学习(Transductive learning)和归纳学习(Inductive learning)。

1.5 强化学习

强化学习(Reinforcement Learning,简称RL)是机器学习的一个重要分支,前段时间人机大战的主角AlphaGo正是以强化学习为核心技术。在强化学习中,包含两种基本的元素:状态与动作,在某个状态下执行某种动作,这便是一种策略,学习器要做的就是通过不断地探索学习,从而获得一个好的策略。

1.6 泛化能力

泛化能力(generalization ability)是指一个机器学习算法对于没有见过的样本的识别能力。我们也叫做举一反三的能力,或者叫做学以致用的能力。

1.7 过拟合

过拟合(over-fitting)其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。

过拟合问题,根本的原因则是特征维度过多,导致拟合的函数完美的经过训练集,但是对新数据的预测结果则较差。解决过拟合问题,则有2个途径:

  • 减少特征维度; 可以人工选择保留的特征,或者模型选择算法
  • 正则化; 保留所有的特征,通过降低参数θ的值,来影响模型

1.8 欠拟合

欠拟合(under-fitting)指的是模型在训练和预测时表现都不好的情况。

欠拟合问题,根本的原因是特征维度过少,导致拟合的函数无法满足训练集,误差较大。
欠拟合问题可以通过增加特征维度来解决。
在这里插入图片描述

1.9 常见模型指标

分类模型指标:正确率,召回率,F值。
回归模型指标:误差。
聚类模型指标:簇内距离 和 簇间距离。

1.10 交叉验证

交叉验证(Cross Validation)是在机器学习建立模型和验证模型参数时常用的办法。基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set),首先用训练集对分类器进行训练,在利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

常见的交叉验证有:简单交叉验证、K-折交叉验证、留一交叉验证。

2. 线性回归

2.1 线性回归的原理

线性回归使用最佳的拟合直线在因变量和一个或多个自变量之间建立一种关系。

2.2 线性回归的目标函数、损失函数

目标函数:
在这里插入图片描述
线性回归我们一般用均方误差作为损失函数。
在这里插入图片描述
接下来的目标就是找到一组参数值,使得损失函数值最小。

2.3 优化方法

(1)梯度下降法

梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。

  • 批量梯度下降:最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。
  • 随机梯度下降:最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。

(2)牛顿法

牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数f (x)的泰勒级数的前面几项来寻找方程f (x) = 0的根。牛顿法最大的特点就在于它的收敛速度很快。

牛顿法的优缺点总结:
  优点:二阶收敛,收敛速度快;
  缺点:牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。
  
(3)拟牛顿法

拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。

2.4 线性回归的评估指标

均方误差(MSE)
在这里插入图片描述
均方根误差(RMSE)
在这里插入图片描述
MAE(平均绝对误差)
在这里插入图片描述
R-Squared

2.5 sklearn参数详解

sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)

参数:

  • fit_intercept : 布尔型,默认为true
    说明:是否对训练数据进行中心化。如果该变量为false,则表明输入的数据已经进行了中心化,在下面的过程里不进行中心化处理;否则,对输入的训练数据进行中心化处理
  • normalize :布尔型,默认为false
    说明:是否对数据进行标准化处理
  • copy_X: 布尔型,默认为true
    说明:是否对X复制,如果选择false,则直接对原数据进行覆盖。(即经过中心化,标准化后,是否把新数据覆盖到原数据上)
  • n_jobs : 整型, 默认为1
    说明:计算时设置的任务个数(number of jobs)。如果选择-1则代表使用所有的CPU。这一参数的对于目标个数>1(n_targets>1)且足够大规模的问题有加速作用。

返回值:

  • coef_ : 数组型变量, 形状为(n_features,)或(n_targets, n_features)
    说明:对于线性回归问题计算得到的feature的系数。如果输入的是多目标问题,则返回一个二维数组(n_targets, n_features);如果是单目标问题,返回一个一维数组 (n_features,)。
  • intercept_ : 数组型变量
    说明:线性模型中的独立项。

例子:

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
>>> X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
>>> # y = 1 * x_0 + 2 * x_1 + 3
>>> y = np.dot(X, np.array([1, 2])) + 3
>>> reg = LinearRegression().fit(X, y)
>>> reg.score(X, y)
1.0
>>> reg.coef_
array([1., 2.])
>>> reg.intercept_ 
3.0000...
>>> reg.predict(np.array([[3, 5]]))
array([16.])
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值