最小二乘法
基本概念
线性回归模型
对于不同的数据集,数据挖掘或者说机器学习的过程,就是建立数据模型的过程。对于回归类问题,线性模型预测的一般公式如下:
y=w[0]x[0]+w[1]x[1]+w[2]x[2]+……+w[p]x[p]+b
这里x[0]到x[p]表示耽搁数据点的特征(本例中特征个数为p+1),w和b是学习模型的参数,y是预测结果,对于单一特征的数据集,公式如下:
*y=w[0]x[0]+b
大家可以看出来,这个很像高中数学里的直线方程。其中w[0]就是斜率,对于有更多特征的数据集,w包含沿每个特征坐标元素的斜率。或者,你也可以将预测的响应值看作输入特征的加权求和,权重由w的元素给出。
算法简介
最小二乘算法
普通最小二乘算法,或者说线性回归,是回归问题最简单也是最经典的线性方法,线性回归寻找参数w和b,使得对训练集的预测值与真实的回归目标值y之间的均方误差最小。
均方误差是预测值与真实值之差的平方和除以样本数。
数据来源
第一人称fps游戏csgo的等分数据:https://www.kaggle.com/sp1nalcord/mycsgo-data
csgo是一款第一人称的射击游戏,该数据包括每位玩家的网络延迟(ping),击杀数量,死亡数量,得分情况等等。嘿嘿,游戏这方面我还是比较了解的,这也是博主唯一一个不用看原版数据的英文介绍,就能看懂各个维度的数据集了。
数据挖掘
1.导入第三方库
1 |
|
老规矩,上来先依次导入建模需要的各个模块
2.读取文件
1 |
|
因为之前每次下载数据之后都要将文件转移到python根目录里面,或者到下载文件夹里面去读取,很麻烦。所以我通过winreg库,来设立绝对桌面路径,这样只要把数据下载到桌面上,或者粘到桌面上的特定文件夹里面去读取就好了,不会跟其它数据搞混。其实到这一步都是在走流程,基本上每个数据挖掘都要来一遍,没什么好说的。
3.清洗数据
可以看到这个数据并不包括缺失值,而且各个特征值之间也没有属性重叠的状况,所以暂时不需要任何处理。
4.建模
1 |
|
将score划分为预测值,其它的属性划分为特征值,并将数据划分成训练集和测试集。
1 |
|
引入算法,进行建模后,对测试集进行精度评分,得到的结果如下:
可以看到,该模型的精度为94%左右。
至此,这个数据集的将建模就算是完成了。
5.总结
1.可以感受到最小二乘法算法并没有什么难点,但是它确是最经典,最重要的算法之一。因为有很多的其它线性回归算法都是基于它的模型公式推导出来的,所以对于这个模型的公式一定要理解。对算法的原理一定要有自己的理解,或许并不会专门从事算法研发的工作,但是对于算法如何去使用,用在什么场景是一定要知道的。
2.大家可以看到这个算法并不需要调参,因为这个算法并没有参数可言,这是一个优点,但是这也反映了一件事,就是没有办法控制模型的复杂度,也没有办法通过调整算法本身,来去提高模型精度。
有很多地方做的不是很好,欢迎网友来提出建议,也希望可以遇到些朋友来一起交流讨论。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!