目录
线性回归
1 线性回归应⽤场景
房价预测
销售额度预测
贷款额度预测
2 什么是线性回归
2.1 定义与公式
线性回归(Linear regression)是利⽤回归⽅程(函数)对⼀个或多个⾃变量(特征值)和因变量(⽬标值)之间关系进⾏建模的
⼀种分析⽅式。
特点:只有⼀个⾃变量的情况称为单变量回归,多于⼀个⾃变量情况的叫做多元回归
线性回归⽤矩阵表示举例
特征值与⽬标值之间建⽴了⼀个关系,这个关系可以理解为线性模型
2.2 线性回归的特征与⽬标的关系分析
线性回归当中主要有两种模型,⼀种是线性关系,另⼀种是⾮线性关系。在这⾥我们只能画⼀个平⾯更好去理解,所以
都⽤单个特征或两个特征举例⼦。
线性关系
单变量线性关系:
多变量线性关系
⾮线性关系
2.2 线性回归api初步使⽤
1 线性回归API
sklearn.linear_model.LinearRegression()
LinearRegression.coef_:回归系数
结果
2.4 线性回归的损失和优化
1 损失函数
总损失定义为:
y 为第i个训练样本的真实值
h(x )为第i个训练样本特征值组合预测函数
⼜称最⼩⼆乘法
2 优化算法
如何去求模型当中的W,使得损失最⼩?(⽬的是找到最⼩损失对应的W值)
线性回归经常使⽤的两种优化算法
正规⽅程
梯度下降法
2.1 正规⽅程
2.1.1 什么是正规⽅程
2.2 梯度下降(Gradient Descent)
2.2.1 什么是梯度下降
梯度下降法的基本思想可以类⽐为⼀个下⼭的过程。
假设这样⼀个场景:
⼀个⼈被困在⼭上,需要从⼭上下来(i.e. 找到⼭的最低点,也就是⼭⾕)。但此时⼭上的浓雾很⼤,导致可视度很低。
因此,下⼭的路径就⽆法确定,他必须利⽤⾃⼰周围的信息去找到下⼭的路径。这个时候,他就可以利⽤梯度下降算法
来帮助⾃⼰下⼭。
具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地⽅,然后朝着⼭的⾼度下降的地⽅⾛,(同
理,如果我们的⽬标是上⼭,也就是爬到⼭顶,那么此时应该是朝着最陡峭的⽅向往上⾛)。然后每⾛⼀段距离,都反
复采⽤同⼀个⽅法,最后就能成功的抵达⼭⾕。
2.2.2 梯度的概念
梯度是微积分中⼀个很重要的概念
在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率;
在多变量函数中,梯度是⼀个向量,向量有⽅向,梯度的⽅向就指出了函数在给定点的上升最快的⽅向;
在微积分⾥⾯,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。
2.2.4 梯度下降(Gradient Descent)公式
4 ⼩结
损失函数【知道】
最⼩⼆乘法
线性回归优化⽅法【知道】
正规⽅程
梯度下降法
正规⽅程 -- ⼀蹴⽽就【知道】
利⽤矩阵的逆,转置进⾏⼀步求解
只是适合样本和特征⽐较少的情况
梯度下降法 — 循序渐进【知道】
梯度的概念
单变量 -- 切线
多变量 -- 向量
梯度下降法中关注的两个参数
α -- 就是步⻓
步⻓太⼩ -- 下⼭太慢
步⻓太⼤ -- 容易跳过极⼩值点(*)
为什么梯度要加⼀个负号
梯度⽅向是上升最快⽅向,负号就是下降最快⽅向
梯度下降法和正规⽅程选择依据【知道】
⼩规模数据:
正规⽅程:LinearRegression(不能解决拟合问题)
岭回归
⼤规模数据:
梯度下降法:SGDRegressor
2.5 梯度下降⽅法介绍
相关概念:
线性回归api:
sklearn.linear_model.LinearRegression(fit_intercept=True)
通过正规⽅程优化
参数
fit_intercept:是否计算偏置
属性
LinearRegression.coef_:回归系数
LinearRegression.intercept_:偏置
sklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate ='invscaling',
eta0=0.01)
SGDRegressor类实现了随机梯度下降学习,它⽀持不同的loss函数和正则化惩罚项来拟合线性回归模型。
参数:
loss:损失类型
loss=”squared_loss”: 普通最⼩⼆乘法
fit_intercept:是否计算偏置
learning_rate : string, optional
学习率填充
'constant': eta = eta0
'optimal': eta = 1.0 / (alpha * (t + t0)) [default]
'invscaling': eta = eta0 / pow(t, power_t)
power_t=0.25:存在⽗类当中
对于⼀个常数值的学习率来说,可以使⽤learning_rate=’constant’ ,并使⽤eta0来指定学习率。
属性:
SGDRegressor.coef_:回归系数
SGDRegressor.intercept_:偏置
sklearn提供给我们两种实现的API, 可以根据选择使⽤
注:y 为预测值, 为真实值
思考:MSE和最⼩⼆乘法的区别是?
sklearn.metrics.mean_squared_error(y_true, y_pred)
均⽅误差回归损失
y_true:真实值
y_pred:预测值
return:浮点数结果
案例:波士顿房价预测:
2 案例分析
回归当中的数据⼤⼩不⼀致,是否会导致结果影响较⼤。所以需要做标准化处理。
数据分割与标准化处理
回归预测
线性回归的算法效果评估
正规方程:
梯度下降法:
2.8 ⽋拟合和过拟合
1 定义
过拟合:⼀个假设在训练数据上能够获得⽐其他假设更好的拟合, 但是在测试数据集上却不能很好地拟合数据,
此时认为这个假设出现了过拟合的现象。(模型过于复杂)
⽋拟合:⼀个假设在训练数据上不能获得更好的拟合,并且在测试数据集上也不能很好地拟合数据,此时认为这个
假设出现了⽋拟合的现象。(模型过于简单)
2 原因以及解决办法
⽋拟合原因以及解决办法
原因:学习到数据的特征过少
解决办法:
1)添加其他特征项,有时候我们模型出现⽋拟合的时候是因为特征项不够导致的,可以添加其他特征项
来很好地解决。例如,“组合”、“泛化”、“相关性”三类特征是特征添加的重要⼿段,⽆论在什么场景,都可以照葫芦画瓢,总会得到意想不到的效果。除上⾯的特征之外,“上下⽂特征”、“平台特征”等等,都可以
作为特征添加的⾸选项。
2)添加多项式特征,这个在机器学习算法⾥⾯⽤的很普遍,例如将线性模型通过添加⼆次项或者三次项
使模型泛化能⼒更强。
过拟合原因以及解决办法
原因:原始特征过多,存在⼀些嘈杂特征, 模型过于复杂是因为模型尝试去兼顾各个测试数据点
解决办法:
1)重新清洗数据,导致过拟合的⼀个原因也有可能是数据不纯导致的,如果出现了过拟合就需要我们重
新清洗数据。
2)增⼤数据的训练量,还有⼀个原因就是我们⽤于训练的数据量太⼩导致的,训练数据占总数据的⽐例
过⼩。
3)正则化
4)减少特征维度,防⽌维灾难
3 正则化
3.1 什么是正则化
在解决回归过拟合中,我们选择正则化。但是对于其他机器学习算法如分类算法来说也会出现这样的问题,除了⼀些算
法本身作⽤之外(决策树、神经⽹络),我们更多的也是去⾃⼰做特征选择,包括之前说的删除、合并⼀些特征
在学习的时候,数据提供的特征有些影响模型复杂度或者这个特征的数据点异常较多,所以算法在学习的时候尽量减少
这个特征的影响(甚⾄删除某个特征的影响),这就是正则化
3.2 正则化类别
L2正则化
作⽤:可以使得其中⼀些W的都很⼩,都接近于0,削弱某个特征的影响
优点:越⼩的参数说明模型越简单,越简单的模型则越不容易产⽣过拟合现象
Ridge回归
L1正则化
作⽤:可以使得其中⼀些W的值直接为0,删除这个特征的影响
LASSO回归
2.9 正则化线性模型
1 Ridge Regression (岭回归,⼜名 Tikhonov regularization)
岭回归api
正则化⼒度越⼤,权重系数会越⼩
正则化⼒度越⼩,权重系数会越⼤
2.11 模型的保存和加载
1 sklearn模型的保存和加载API
from sklearn.externals import joblib
保存:joblib.dump(estimator, 'test.pkl')
加载:estimator = joblib.load('test.pkl')
2.案例
逻辑回归
1 逻辑回归的应⽤场景
⼴告点击率
是否为垃圾邮件
是否患病
⾦融诈骗
虚假账号
都属于两个类别之间的判断。逻辑回归就是解决⼆分类问题的
2 逻辑回归的原理
要想掌握逻辑回归,必须掌握两点:
逻辑回归中,其输⼊值是什么
如何判断逻辑回归的输出
逻辑回归最终的分类是通过属于某个类别的概率值来判断是否属于某个类别,并且这个类别默认标记为1(正例),
另外的⼀个类别会标记为0(反例)。(⽅便损失计算)
逻辑回归api介绍