1、Machine Learning with Python9.1目 录9.3回归分析原理多元线性回归不同回归算法的分析对比9.29.49.5正则化回归分析本章小结回归分析原理回归分析(Regression Analysis)是一个监督学习过程它是一个统计预测模型,用以描述和评估因变量与一个或多个自变量之间的关系9.13 9.1 回归分析原理 1.基本概念回归分析是处理多变量间相关关系的一种数学方法。相关关系不同于函数关系,后者反映变量间的严格依存性,而前者则表现出一定程度的波动性或随机性,对自变量的每一个取值,因变量可以有多个数值与之相对应。在统计学上,研究相关关系可以运用回归分析和相关分析(C
2、orrelation Analysis)。 2.可解决的问题通过回归分析,可以解决以下问题:1)建立变量间的数学表达式,通常称为经验公式。2)利用概率统计基础知识进行分析,从而判断所建立的经验公式的有效性。3)进行因素分析,确定影响某一变量的若干变量(因素)中,何者为主要,何者为次要,以及它们之间的关系。具有相关关系的变量之间虽然具有某种不确定性,但是通过对现象的不断观察可以探索出它们之间的统计规律,这类统计规律称为回归关系。有回归关系的理论、计算和分析称为回归分析。4 9.1 回归分析原理 3.回归分析的一般方法1)收集数据:采用任意方法收集数据。2)准备数据:回归需要数值型数据,标称型数据
3、将被转成二值型数据。3)分析数据:绘出数据的可视化二维图将有助于对数据做出理解和分析,在采用缩减法求得新回归系数之后,可以将新拟合线绘在图上作为对比。4)训练算法:找到回归系数。5)测试算法:使用预测值和数据的拟合度,来分析模型的效果。6)使用算法:使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。多元线性回归本节主要介绍线性回归的算法,原理及参数9.26 9.2.1 多元线性回归算法其中,Y为因变量,a为截距,b为相关系数,X为自变量。7 9.2.1 多元线性回归算法由于只有一个预测变量X,预测变量和目标形成了一个二维空间
4、。在此空间中,模型需要拟合一条距离所有数据点最近的直线,接近度的测量方式为直线与所有数据点的垂直距离平方和,如图9-1所示。如果有两个预测变量和,则空间增长到三维,现在模型需要拟合最接近三维空间中所有点的平面,如图9-2所示。而当有了两个以上的特征,模型拟合的就变成了较为抽象的超平面。图9-1 2D空间模型图图9-2 3D空间模型图8 9.2.1 多元线性回归算法9 9.2.1 多元线性回归算法10 10 9.2.1 多元线性回归算法11 11 9.2.1 多元线性回归算法12 12 9.2.1 多元线性回归算法13 9.2.2 实现及参数14 9.2.2 实现及参数正则化回归分析本节主要介绍
5、岭回归,Lasso回归,ElasticNet回归,并将他们的算法进行对比9.316 9.3 正则化回归分析17 9.3.1 岭回归18 9.3.1 岭回归19 9.3.1 岭回归 5)copy_X:是否复制X。数据类型为布尔型,若不指定该参数值,则自动使用默认参数值True,会复制X。 6)solver:指定求解最优化问题的算法。数据类型为字符串型,若不指定该参数值,则自动使用默认参数值auto。其可选值如下: auto:根据数据集自动选择算法。 svd:使用奇异值分解来计算回归系数。 cholesky:使用scipy.linalg.solve函数来求解。 sparse_cg:使用scipy.
6、sparse.linalg.cg函数来求解。 1sqr:使用scipy.sparse.linalg.lsqr函数来求解。它运算速度最快,但是可能老版本的scipy不支持。 sag:使用Stochastic Average Gradient Descent算法,求解最优化问题。 7)tol:指定判断迭代收敛与否的阈值。数据类型为浮点型,若不指定该参数值,则自动使用默认参数值0.001。20 9.3.1 岭回归 8)random_state:用于设置随机数产生的方式。若不指定该参数值,则自动使用默认参数值None。其可选值如下: 整数:该值会被作为随机数发生器的种子。 RandomState实例:
7、指定随机数发生器。 None:使用默认的随机数发生器。 其主要属性如下: 1)coef_:权重向量。 2)intercept_:b值。 3)n_iter_:实际迭代次数。 其主要方法为: 1)fit(X,y, sample_weight):训练模型。 2)predict(X):用模型进行预测,返回预测值。 3)score(X,y,sample_weight):返回预测性能得分。21 9.3.2 Lasso回归22 9.3.2 Lasso回归23 9.3.2 Lasso回归 7)tol:指定判断迭代收敛与否的阈值。数据类型为浮点型,与岭回归相同。 8)random_state:用于设置随机数产生
8、的方式,与岭回归相同。 9)precompute:决定是否提前计算Gram矩阵来加速计算。数据类型为布尔型,若不指定该参数值,则自动使用默认参数值False,即不提前计算Gram矩阵来加速计算。 10)warm_start:是否使用前一次训练结果继续训练。数据类型为布尔型,若不指定该参数值,则自动使用默认参数值False,即重新开始训练。 11)positive:是否强制要求权重向量的分量都为正数。数据类型为布尔型,若不指定该参数值,则自动使用默认参数值False,即不要求权重向量的分量都为正数。 其主要属性如下: 1)coef_:权重向量。 2)intercept_:b值。 3)n_iter
9、_:实际迭代次数。其主要方法为:1)fit(X,y, sample_weight):训练模型。2)predict(X):用模型进行预测,返回预测值。3)score(X,y,sample_weight):返回预测性能得分。具体用法如下所示。24 9.3.3 ElasticNet回归25 9.3.3 ElasticNet回归26 9.3.3 ElasticNet回归 6)copy_X:是否复制X。数据类型为布尔型,与Lasso回归相同。 7)selection:指定每轮迭代时,选择权重向量的哪个分量来更新,与Lasso回归相同。 8)tol:指定判断迭代收敛与否的阈值。数据类型为浮点型,与Lass
10、o回归相同。 9)random_state:用于设置随机数产生的方式,与Lasso回归相同。 10)precompute:决定是否提前计算Gram矩阵来加速计算。数据类型为布尔型,与Lasso回归相同。 11)warm_start:是否使用前一次训练结果继续训练。数据类型为布尔型,与Lasso回归相同。 12)positive:是否强制要求权重向量的分量都为正数。数据类型为布尔型,与Lasso回归相同。 其主要属性为: 1)coef_:权重向量。 2)intercept_:b值。 3)n_iter_:实际迭代次数。其主要方法为:1)fit(X,y, sample_weight):训练模型。2)
11、predict(X):用模型进行预测,返回预测值。3)score(X,y, sample_weight):返回预测性能得分。不同回归算法的分析对比 9.4本案例使用4种回归方法对波士顿房价数据集进行分析,进一步加深对线性回归算法的认识。28 9.4 不同回归算法的分析对比参考程序如下: import matplotlib.pyplot as plt import numpy as np # 导入数据集模块 from sklearn import datasets # 导入sklearn中的线性模型类和模型验证类 from sklearn import linear_model, model_s
12、election # 读取波士顿房价数据集 boston = datasets.load_boston() # 使用train_test_split函数自动随机划分训练集与测试集,其中: # test_size为测试集所占比例, # random_state为随机数种子,相同的种子值在每次运行中的划分结果相同,如不设置则以系统当前时间为种子 x_train, x_test, y_train, y_test = model_selection.train_test_split(boston.data,boston.target, test_size=0.3,random_state=1)29 9
13、.4 不同回归算法的分析对比 # 定义各种线性回归对象 lr = linear_model.LinearRegression() rd = linear_model.Ridge() ls = linear_model.Lasso() en = linear_model.ElasticNet() models = lr, rd, ls, en names = Linear, Ridge, Lasso, Elastic Net # 分别训练模型并进行回归,计算残差平方和及准确率 for model, name in zip(models, names): model.fit(x_train, y_
14、train) y_predict = model.predict(x_test) score = model.score(x_test, y_test) print(Residual sum of squares of %s: %.2f %(name, np.mean(y_predict-y_test)*2) print(Accuracy of %s: %.2f %(name, score)30 9.4 不同回归算法的分析对比 # 测试alpha在不同取值下的回归效果 scores = Alphas=0.0001,0.0005,0.001,0.005,0.01,0.05,0.1,0.5,1,5
15、,10,50 for index, model in enumerate(models): scores.append() for alpha in alphas: if index0: model.alpha = alpha model.fit(x_train, y_train) scoresindex.append(model.score(x_test, y_test) # 绘制结果图 fig = plt.figure(figsize=(10,7) for i, name in enumerate(names): plt.subplot(2,2,i+1) plt.plot(range(le
16、n(alphas), scoresi) plt.title(name) print(Max accuracy of %s: %.2f %(name, max(scoresi) plt.show()31 9.4 不同回归算法的分析对比程序运行结果如下,绘制的结果如图9-6所示。 Residual sum of squares of Linear: 19.83 Accuracy of Linear: 0.78 Residual sum of squares of Ridge: 19.33 Accuracy of Ridge: 0.79 Residual sum of squares of Lass
17、o: 30.29 Accuracy of Lasso: 0.67 Residual sum of squares of Elastic Net: 27.51 Accuracy of Elastic Net: 0.70 Max accuracy of Linear: 0.78 Max accuracy of Ridge: 0.79 Max accuracy of Lasso: 0.79 Max accuracy of Elastic Net: 0.7932 9.4 不同回归算法的分析对比图9-6 不同算法在乳腺癌数据集的回归效果对比图33 9.4 不同回归算法的分析对比 在使用默认参数的情况下,4种回归算法的准确率在67%至79%之间,其中岭回归给出了最高的准确率79%。但在对3种正则化回归算法的alpha参数进行调整后,这3种算法最高均可达到79%的准确率,高于简单线性回归的78%。此外,可以观察到,较大的alpha参数会导致模型的复杂度下降,预测的准确度也随之下降。本章小结9.5 本章主要介绍了回归分析的基本概念。从简单多元线性回归出发,对原理进行了详细的讲解,并在简单线性回归的基础上了讲解了岭回归、Lasso回归与ElasticNet回归,并分别给出了具体实现案例。最后给出了多种回归算法在分析波士顿房价数据集时的效果比较。35 9.5 本章小结
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。