写点什么

机器学习 - 回归分析

  • 2022 年 7 月 10 日
  • 本文字数:1633 字

    阅读完需:约 5 分钟

机器学习-回归分析

1.什么是回归分析


  • 回归(regression)是一个监督学习

  • 回归用于预测输入和输出变量的关系,回归问题等价于函数拟合

  • 回归分为学习和预测过程,学习样本规律构建 model,预测系统验证学习的 model


回归的起源:

出自高尔顿种豆子的实验,通过大量数据统计,他发现个体小的豆子往往倾向于产生比其更大的子代,而个体大的豆子则倾向于产生比其小的子代,然后高尔顿认为这是由于新个体在向这种豆子的平均尺寸“回归”,大概的意思就是事物总是倾向于朝着某种“平均”发展,也可以说是回归于事物本来的面目。


2. 线性回归

对于数据集(x,y), x 为自变量,y 为因变量。拟合线性方程


计算截距 w0 和系数

使得




最优的求解方法有梯度下降法和最小二乘法。



import matplotlib.pyplot as pltimport numpy as npfrom sklearn import datasets, linear_modelfrom sklearn.metrics import mean_squared_error, r2_score
# 加载数据集合diabetes = datasets.load_diabetes()

# 回归数据diabetes_X = diabetes.data[:, np.newaxis, 2]
# 区分训练集合和测试集合(自变量)diabetes_X_train = diabetes_X[:-20]diabetes_X_test = diabetes_X[-20:]
# 区分训练集合和测试集合(因变量)diabetes_y_train = diabetes.target[:-20]diabetes_y_test = diabetes.target[-20:]
# 线性规划模型regr = linear_model.LinearRegression()regr.fit(diabetes_X_train, diabetes_y_train)
# 预测diabetes_y_pred = regr.predict(diabetes_X_test)
# 回归系数print('Coefficients: \n', regr.coef_)
# 平方误差(模型评估)print("Mean squared error: %.2f" % mean_squared_error(diabetes_y_test, diabetes_y_pred))
复制代码

3.岭回归


对于有 n 个数据量 p 个特征的数据集来说,线性回归模型准确性和 数据量 n 的大小,以及参与回归的特征相关。

  • 如果参与回归的特征存在相关性,模型的精确性就会下降。系数变更很不稳定,模型偏差比较大。主要是因为系数矩阵 X 与它的转置矩阵相乘得到的矩阵不能求得其逆矩阵

  • 如果特征数 p 的数量很大时候。回归模型就会出现过拟合的现象


岭回归(Ridge)就是为了解决这个问题。


岭回归的思路就是在原始回归基础上增加惩罚项(正则化)。通过引入该惩罚项,能够减少不重要的参数。这个技术在统计学上也叫作缩减(shrinkage)。简单的说就是对回归系数做约束,不会使得系数波动太大。





from sklearn.linear_model import Ridgeimport numpy as npn_samples, n_features = 10, 5np.random.seed(0)y = np.random.randn(n_samples)X = np.random.randn(n_samples, n_features)clf = Ridge(alpha=1.0)clf.fit(X, y)
复制代码


重要参数说明:alpha 正则项系数,大于 0。不同 alpha,有不同的回归系数。

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html#sklearn.linear_model.Ridge


4.Lasso 回归

Ridge regression,对 w 系数做 L2 范式约束,就是把解约束在一个球半径里面,放缩是对球的半径放缩,因此 w 的每一个维度都在以同一个系数放缩,通过放缩不会产生稀疏的解——即某些 w 的维度是 0。而实际应用中,数据的维度中是存在噪音和冗余的,稀疏的解可以找到有用的维度并且减少冗余,提高回归预测的准确性和鲁棒性(减少了 overfitting)。


Lasso 回归加入 L1 正则项,允许某些系数为 0,可以起到特征选择的作用,同时解决了过拟合的情况。



from sklearn import linear_modelclf = linear_model.Lasso(alpha=0.1)clf.fit([[0,0], [1, 1], [2, 2]], [0, 1, 2])


print(clf.coef_)
print(clf.intercept_)
复制代码

重要参数说明:alpha 正则项系数,大于 0。不同 alpha,有不同的回归系数。 http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html#sklearn.linear_model.Lasso


5.结语

本文和大家一起梳理了三种回归方式:一般回归,Ridge 回归和 lasso 回归。

总结一下:

  • Ridge 回归和 lasso 回归是在一般回归基础上加上 L2 正则项和 L1 正则项

  • 同时 lasso 与 Ridge 的不同是,lasso 可以进行特征选择,进行特征稀疏




发布于: 刚刚阅读数: 4
用户头像

公众号:人工智能微客(weker) 2019.11.21 加入

人工智能微客(weker)长期跟踪和分享人工智能前沿技术、应用、领域知识,不定期的发布相关产品和应用,欢迎关注和转发

评论

发布
暂无评论
机器学习-回归分析_机器学习_AIWeker-人工智能微客_InfoQ写作社区