引言:
AI技术的热门使得大家对机器学习有了更多的关注,作为与AI技术息息相关的一门课程,从头了解基础的机器学习算法就显得十分有必要,如:梯度下降,线性回归等。
正文:
本文将讲解线性回归中多元回回归的案例
机器学习大致可以分为监督学习,非监督学习、半监督学习还有更高级的强化学习。
线性回归是监督学习的一种,是回归问题,当然后续还有提及分类问题。监督学习,即有监督的学习,供给“机器”学习的数据集需要有一定要求,就是对于数据集需要有标签集,让它知道“这道题的答案”是什么,通过足够多的数据集,虽然不能完全准确的得到答案,但是能够在较小的误差范围内拟合大多数的数据。
比如说给你这样的一个数据集:
目的是预测汽车的价格。
或许要是我们手动的画出曲线,也是一件不可能的事情,这么多维度的特征,是无法实现画出来的。也或许我知识浅薄,暂时画不出来,但是可以将预测出的价格与实际价格相比较,那样也能十分直观的显示出预测的效果。
但是如何让“机器”知道呢?那么就要建立一个线性回归的模型,把数据扔给这个模型,让它自己学习,当然你要告诉他,什么样才是拟合不错的情况,就是要建立一个优化函数(损失函数)。
当然在数据集中可能有一些特立独行的点或者集合,会脱离曲线的走向趋势,那么我们往往需要对数据进行预处理,之后才能给机器学习,否则往往会产生很差的训练效果。或者说这么多特征,不一定是都有用的,我们可以利用一些方法去挑选有用的特征或者说影响力大的特征,这里可以使用的方法有:PCA(主元分析)、随机森林方法等。
现在不管是MATLAB还是Python进行编程,都有封装好的模型,只需要调用相应的模型即可,大大简化了编程的难度。比如对于线性回归问题,调用的模型就是:sklearn
中的LinearRegression(fit_intercept=True,copy_X=True,n_jobs=-1,positive=False)
对于刚刚提到的例子,经过编程学习到的相关系数有:
特征系数:
常数:
通过测试集验证 得分为/均方误差为
拟合后的散点图:
可见把散点图的趋势已经大概描述出来了,并且对于测试集验证之后的得分也还行,整体趋势还能看出来大概是y=x,那么说明预测的价格和实际价格差不多。