开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2024.04.26陕西
大家好,咱们今天聊聊回归类算法~
今天的内容非常详细,大家可以先点赞收藏、慢慢学习!
回归类算法在机器学习中扮演着关键角色,通过分析输入变量与连续目标变量之间的关系,可预测未知数据的数值输出。它们广泛应用于预测、建模和优化问题中,例如房价预测、股票价格预测以及销售量预测等。其灵活性和广泛适用性使得回归算法成为实际问题中不可或缺的工具之一。
今天涉及到的算法有:
具体细节,一起来看看~
当谈到简单而又常用的回归算法时,线性回归是首选。它建立在一个简单而强大的假设上:自变量和因变量之间存在线性关系。
线性回归是一种用于建立自变量(特征)和因变量(目标)之间线性关系的统计模型。其基本形式是一个线性方程,可以用来预测连续型的因变量。在简单线性回归中,只有一个自变量,而在多元线性回归中,有多个自变量。
线性回归的核心思想是寻找最佳拟合直线(或超平面),使得预测值与实际值之间的残差(误差)最小化。这里的“最佳拟合”是通过最小化残差平方和来定义的,这种方法被称为最小二乘法。
给定一个简单线性回归模型:
其中:
我们的目标是通过拟合出最佳的和来最小化误差。
最小化残差平方和的核心公式是:
其中是实际观测值,是模型的预测值。
通过对对和求导并令导数等于0,可以得到最佳拟合的参数值。具体推导过程略。
代码中,首先构造了一些示例数据,然后使用Scikit-Learn的LinearRegression类来拟合数据,并打印出拟合的斜率和截距。最后,使用Matplotlib库绘制了原始数据和拟合的直线。
岭回归是一种线性回归的扩展,它通过引入L2范数的正则化项来解决普通线性回归中的过拟合问题。
岭回归是一种线性回归的改进算法,它通过在损失函数中添加一个正则化项来约束模型的复杂度。这个正则化项是L2范数(参数的平方和)的惩罚项,它可以防止模型过度拟合训练数据。
岭回归的核心思想是在普通线性回归的损失函数中加入一个惩罚项,使得模型的系数尽可能小,从而防止模型过拟合。这个惩罚项的大小由一个超参数控制,越大,正则化项的影响就越强,系数就越趋向于0。
我们的目标是最小化损失函数。
为了求解最优的,我们可以对损失函数进行求导,并令导数等于0,求解得到最优的参数。具体推导过程略。
Lasso回归是一种使用L1范数(参数绝对值的和)的正则化项来约束模型复杂度的线性回归方法。与岭回归不同,Lasso回归可以使得一些系数变为零,从而实现特征选择。
Lasso回归的核心思想是在普通线性回归的损失函数中加入一个L1范数的惩罚项,使得模型的系数尽可能小,并且有些系数会被压缩至零。这样可以有效地减少模型的复杂度,并提高模型的泛化能力。
给定一个Lasso回归模型:
使用Lasso类来拟合数据,并打印出拟合的系数。值得注意的是,为了更好地拟合数据,使用了多项式特征扩展。
弹性网络回归(ElasticNetRegression)是一种结合了岭回归(RidgeRegression)和Lasso回归(LassoRegression)的线性回归方法,它既有L1正则化项也有L2正则化项,能够克服它们各自的缺点。
弹性网络回归是一种线性回归的改进算法,它结合了L1和L2正则化项,同时具有Lasso回归和岭回归的优点。弹性网络回归在特征数量较多时可以稳健地处理共线性,并且可以实现特征选择。
弹性网络回归的核心思想是在损失函数中同时添加L1和L2正则化项,这样可以综合考虑两种正则化的优势,同时控制模型的复杂度和稀疏性。
给定一个弹性网络回归模型:$\min_\beta}\frac{1}{2n}|Y-X\beta||^2_2+\alpha\rho||\beta||_1+\frac{\alpha(1-\rho){2}||\beta||^2_2$
#导入必要的库importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.linear_modelimportElasticNetfromsklearn.preprocessingimportPolynomialFeatures#构造一些示例数据np.random.seed(0)X=np.sort(5*np.random.rand(40,1),axis=0)y=np.sin(X).ravel()y[::5]+=3*(0.5-np.random.rand(8))#创建弹性网络回归模型对象alpha=0.1#正则化参数l1_ratio=0.5#混合参数rhomodel=ElasticNet(alpha=alpha,l1_ratio=l1_ratio)#使用多项式特征扩展poly=PolynomialFeatures(degree=12,include_bias=False)X_poly=poly.fit_transform(X)#使用数据拟合模型model.fit(X_poly,y)#打印模型参数print('系数:',model.coef_)#绘制数据和拟合曲线plt.scatter(X,y,color='blue',label='Data')plt.plot(X,model.predict(X_poly),color='red',linewidth=2,label='ElasticNetRegression')plt.xlabel('X')plt.ylabel('y')plt.title('ElasticNetRegression')plt.legend()plt.show()后使用ElasticNet类来拟合数据,并打印出拟合的系数。
多项式回归(PolynomialRegression)是一种在线性回归的基础上,通过增加自变量的高次项来拟合非线性关系的方法。
多项式回归是一种简单而有效的非线性回归方法,它通过引入自变量的高次项来拟合数据中的非线性关系。通过将线性模型扩展到多项式空间,可以更灵活地适应复杂的数据模式。
多项式回归的核心思想是将原始的特征向量转换成包含多项式特征的新特征向量,然后使用线性模型对新特征向量进行拟合。这样,原本的线性回归模型就可以用来拟合非线性关系。
我们的目标是通过拟合出最佳的来最小化误差。
使用PolynomialFeatures类将特征扩展为二次多项式,并使用sklearn的LinearRegression类拟合数据。
决策树回归(DecisionTreeRegression)是一种基于树形结构的非参数回归方法,它通过将特征空间划分为多个矩形区域来逐步逼近数据的分布。
决策树回归是一种基于树形结构的回归方法,它通过在特征空间中划分出多个矩形区域来逼近数据的分布。每个叶子节点代表一个预测值,通过在特征空间中选择合适的划分来最小化预测值与真实值之间的误差。
决策树回归的核心思想是通过递归地将特征空间划分为多个矩形区域,并在每个区域内选择一个常数值作为预测值。划分的过程是通过选择最优的特征和切分点来最小化每个区域内样本的方差(或其他评价指标)。
给定一个决策树回归模型:
我们的目标是通过合适的划分来最小化每个区域内样本的方差,具体的划分方法和优化算法可以是不同的,如ID3、CART等。
#导入必要的库importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.treeimportDecisionTreeRegressor#构造一些示例数据np.random.seed(0)X=np.sort(5*np.random.rand(40,1),axis=0)y=np.sin(X).ravel()y[::5]+=3*(0.5-np.random.rand(8))#创建决策树回归模型对象model=DecisionTreeRegressor(max_depth=2)#限制树的最大深度,防止过拟合#使用数据拟合模型model.fit(X,y)#绘制数据和拟合曲线X_test=np.arange(0.0,5.0,0.01)[:,np.newaxis]y_pred=model.predict(X_test)plt.scatter(X,y,color='blue',label='Data')plt.plot(X_test,y_pred,color='red',linewidth=2,label='DecisionTreeRegression')plt.xlabel('X')plt.ylabel('y')plt.title('DecisionTreeRegression')plt.legend()plt.show()为了防止过拟合,限制了决策树的最大深度。
随机森林回归(RandomForestRegression)是一种基于集成学习的回归方法,它由多个决策树组成,通过对每个树的预测结果进行平均来得到最终的预测值。
随机森林回归是一种集成学习方法,它通过构建多个决策树来进行回归预测。每个决策树的预测结果通过投票或平均来得到最终的预测值。随机森林回归具有良好的鲁棒性和泛化能力,能够处理高维数据和大量特征。
随机森林回归的核心思想是通过构建多个决策树来减少模型的方差,从而提高预测的准确性。每个决策树是在随机选择的子样本和特征集上训练的,这样可以增加模型的多样性,降低模型的过拟合风险。
给定一个随机森林回归模型:
我们的目标是通过构建多个决策树来减少预测值的方差。
设置了10棵决策树来构建随机森林模型。
梯度提升回归(GradientBoostingRegression)是一种基于集成学习的回归方法,它通过逐步迭代地训练多个弱回归器(例如决策树),并将它们组合起来以获得更强大的模型。
梯度提升回归是一种集成学习方法,它通过逐步迭代地训练多个弱回归器,并将它们组合起来以获得更强大的模型。每个弱回归器在训练时都会根据前一个模型的残差进行调整,从而逐步减少残差,最终得到累加的预测值。
梯度提升回归的核心思想是利用梯度下降优化算法来训练模型。每个模型的训练都是在前一个模型的残差上进行的,通过拟合残差来逐步减小模型的预测误差。最终,所有模型的预测结果相加得到最终的预测值。
给定一个梯度提升回归模型:
我们的目标是通过训练多个弱回归器,并逐步减小模型的残差来得到最终的预测值。
#导入必要的库importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.ensembleimportGradientBoostingRegressor#构造一些示例数据np.random.seed(0)X=np.sort(5*np.random.rand(40,1),axis=0)y=np.sin(X).ravel()y[::5]+=3*(0.5-np.random.rand(8))#创建梯度提升回归模型对象model=GradientBoostingRegressor(n_estimators=100,learning_rate=0.1,random_state=0)#设置100棵决策树#使用数据拟合模型model.fit(X,y)#绘制数据和拟合曲线X_test=np.arange(0.0,5.0,0.01)[:,np.newaxis]y_pred=model.predict(X_test)plt.scatter(X,y,color='blue',label='Data')plt.plot(X_test,y_pred,color='red',linewidth=2,label='GradientBoostingRegression')plt.xlabel('X')plt.ylabel('y')plt.title('GradientBoostingRegression')plt.legend()plt.show()设置了100棵决策树来构建梯度提升回归模型,并且设置了学习率为0.1。
支持向量机回归(SupportVectorRegression,SVR)是一种基于支持向量机的回归方法,它通过在特征空间中找到一个最优的超平面来拟合数据。
支持向量机回归是一种基于支持向量机的回归方法,它通过在特征空间中找到一个最优的超平面来拟合数据。与传统的线性回归不同,支持向量机回归可以灵活地处理非线性关系,并且在高维空间中也能取得很好的效果。
支持向量机回归的核心思想是通过在特征空间中找到一个最优的超平面来拟合数据。这个超平面使得训练数据点到超平面的距离尽可能小,并且在满足一定的间隔约束下,最大化预测误差的上界。
给定一个支持向量机回归模型:
我们的目标是找到最优的和来最小化损失函数,并且满足约束条件。
使用径向基函数核(RBFkernel)来构建支持向量机回归模型,并且设置了惩罚参数和核参数。
最近邻回归(K-NearestNeighborsRegression,简称KNN回归)是一种基于实例的回归方法,它通过在训练集中找到与待预测样本最相似的K个邻居,并使用它们的平均值(或加权平均值)作为预测值。
最近邻回归是一种简单而有效的回归方法,它不需要假设数据的分布形式,并且可以灵活地适应各种数据模式。KNN回归的预测值是根据最近邻居的标签(或值)来确定的,因此它对于数据的局部特性表现得很好。
最近邻回归的核心思想是在训练集中找到与待预测样本最相似的K个邻居,并使用它们的平均值(或加权平均值)作为预测值。相似性通常通过距离度量来衡量,例如欧氏距离或曼哈顿距离。预测过程中,K个最近邻居的距离越近,权重越大。
给定一个最近邻回归模型:
我们的目标是找到最相似的K个邻居,并使用它们的平均值作为预测值。