机器学习之线性回归(挺全乎的,想看的可以看一看)
1【理解】线性回归
线性回归(Linear regression)是利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。
注意事项:
1 为什么叫线性模型?因为求解的w,都是w的零次幂(常数项)所以叫成线性模型
2 在线性回归中,从数据中获取的规律其实就是学习权重系数w
3 某一个权重值w越大,说明这个权重的数据对房子价格影响越大
1.1【知道】线性回归分类
1 :一元线性回归
y = kx +b
目标值只与一个因变量有关系
2 : 多元线性回归
目标值只与多个因变量有关系
1.2【知道】线性回归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 ='constant', eta0=0.01)
-
参数:loss(损失函数类型),fit_intercept(是否计算偏置)learning_rate (学习率)
-
属性:SGDRegressor.coef_ (回归系数)SGDRegressor.intercept_ (偏置)
1.3 回归性能评估
均方误差(Mean Squared Error, MSE)评价机制:
sklearn中的API:sklearn.metrics.mean_squared_error(y_true, y_pred)
-
均方误差回归损失
-
y_true:真实值
-
y_pred:预测值
-
return:浮点数结果
2【掌握】损失函数
误差概念:用预测值y – 真实值y就是误差
损失函数:衡量每个样本预测值与真实值效果的函数
2.1 回归的损失函数:
-
均方误差 (Mean-Square Error, MSE)

-
平均绝对误差 (**Mean Absolute Error , MAE**)

3 【了解】一元线性回归的解析解


4 梯度下降算法
4.1【掌握】梯度下降算法思想
什么是梯度下降法
求解函数极值还有更通用的方法就是梯度下降法。顾名思义:沿着梯度下降的方向求解极小值 • 举个例子:坡度最陡下山法

-
输入:初始化位置S;每步距离为a 。输出:从位置S到达山底
-
步骤1:令初始化位置为山的任意位置S
-
步骤2:在当前位置环顾四周,如果四周都比S高返回S;否则执行步骤3
-
步骤3: 在当前位置环顾四周,寻找坡度最陡的方向,令其为x方向
-
步骤4:沿着x方向往下走,长度为a,到达新的位置S‘
-
步骤5:在S‘位置环顾四周,如果四周都比S‘高,则返回S‘。否则转到步骤3
小结:通过循环迭代的方法不断更新位置S (相当于不断更新权重参数w)
最终找到最优解 这个方法可用来求损失函数最优解, 比正规方程更通用




4.2【了解】梯度下降算法分类


4.3【理解】正规方程和梯度下降算法的对比

4 回归评估方法
4.1【知道】平均绝对误差 Mean Absolute Error (MAE)
-
MAE 越小模型预测约准确
-
Sklearn 中MAE的API
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_test,y_predict)
4.2【知道】均方误差 Mean Squared Error (MSE)
-
MSE 越小模型预测约准确
-
Sklearn 中MSE的API
from sklearn.metrics import mean_squared_error
mean_squared_error(y_test,y_predict)
4.3【知道】 均方根误差 Root Mean Squared Error (RMSE)
-
RMSE 越小模型预测约准确
4.4 误差对比
MAE 和 RMSE 非常接近,都表明模型的误差很低(MAE 或 RMSE 越小,误差越小!)。
但MSE误差很大
-
对比MAE 和 RMSE的公式,RMSE的计算公式中有一个平方项,因此:大的误差将被平方,因此会增加 RMSE 的值
-
可以得出结论,RMSE 会放大预测误差较大的样本对结果的影响,而 MAE 只是给出了平均误差
-
由于 RMSE 对误差的 平方和求平均 再开根号,大多数情况下RMSE>MAE
5 正则化
5.1【理解】 欠拟合与过拟合
过拟合:一个假设 在训练数据上能够获得比其他假设更好的拟合, 但是在测试数据集上却不能很好地拟合数据 (体现在准确率下降),此时认为这个假设出现了过拟合的现象。(模型过于复杂)
欠拟合:一个假设 在训练数据上不能获得更好的拟合,并且在测试数据集上也不能很好地拟合数据 ,此时认为这个假设出现了欠拟合的现象。(模型过于简单)
5.2 过拟合和欠拟合的区别

欠拟合在训练集和测试集上的误差都较大
过拟合在训练集上误差较小,而测试集上误差较大
5.3【理解】 原因以及解决办法
欠拟合产生原因: 学习到数据的特征过少
解决办法:
1)添加其他特征项,有时出现欠拟合是因为特征项不够导致的,可以添加其他特征项来解决
2)添加多项式特征,模型过于简单时的常用套路,例如将线性模型通过添加二次项或三次项使模型泛化能力更强
过拟合产生原因: 原始特征过多,存在一些嘈杂特征, 模型过于复杂是因为模型尝试去兼顾所有测试样本
解决办法:
1)重新清洗数据,导致过拟合的一个原因有可能是数据不纯,如果出现了过拟合就需要重新清洗数据。
2)增大数据的训练量,还有一个原因就是我们用于训练的数据量太小导致的,训练数据占总数据的比例过小。
3)正则化
4)减少特征维度
5.4【理解】正则化
在解决回归过拟合中,我们选择正则化。但是对于其他机器学习算法如分类算法来说也会出现这样的问题,除了一些算法本身作用之外(决策树、神经网络),我们更多的也是去自己做特征选择,包括之前说的删除、合并一些特征
在学习的时候,数据提供的特征有些影响模型复杂度或者这个特征的数据点异常较多,所以算法在学习的时候尽量减少这个特征的影响(甚至删除某个特征的影响),这就是正则化
注:调整时候,算法并不知道某个特征影响,而是去调整参数得出优化的结
5.4.1 L1正则化
作用:用来进行特征选择,主要原因在于L1正则化会使得较多的参数为0,从而产生稀疏解,可以将0对应的特征遗弃,进而用来选择特征。一定程度上L1正则也可以防止模型过拟合。
LASSO回归: from sklearn.linear_model import Lasso
5.4.2 L2正则化
作用:主要用来防止模型过拟合,可以减小特征的权重
优点:越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象
Ridge回归: from sklearn.linear_model import Ridge
更多推荐

所有评论(0)