可扩展机器学习——线性回归(linear Regression)
注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图也是引用的原来的教程,若内容上有任何错误,希望与我联系,若内容有侵权,同样也希望告知,我会尽快删除。这部分本应该加上实验的部分,实验的部分在后期有时间再补上。
可扩展机器学习系列主要包括以下几个部分:
概述 - Spark分布式处理 - 线性回归(linear Regression) - 梯度下降(Gradient Descent) - 分类——点击率预测(Click-through Rate Prediction) - 神经科学
三、线性回归(linear Regression)
1、线性回归概述
回归(Regression)问题的目标是从观测样本中学习到一个到连续的标签值的映射,这是一个监督学习的问题。回归问题有:
- Height, Gender, Weight → Shoe Size
- Audio features → Song year
- Processes, memory → Power consumption
- Historical financials → Future stock price
- 等等
2、线性最小二乘回归
2.1、回归的基本概念
2.2、线性回归的优点
上述便是线性回归的基本形式,对于线性回归,有以下的一些优点:
- 简单
- 在实际中通常表现很好
- 通过对特征的提取,可以引进复杂的模型
2.3、线性回归的目标
线性回归的目标是找到一条直线或者称为超平面能够最好的拟合样本,如下面的1−D1-D的情况:
其中,x轴表示的特征,y轴表示的是标签。此时的线性映射为:
2.4、线性回归的评价
2.5、线性模型的学习
2.6、线性回归模型的求解
2.7、过拟合和泛化能力
求解模型的目的是要使用模型,即在新的数据集上使用模型,若其能在新的数据集上表现的很好,说明求解出的模型具有很好的泛化能力(Generalization ability)。最小均方回归容易导致过拟合,因为其对训练数据过分拟合。过拟合的情况如下图所示:
简单的模型通常更具有泛化能力(Occam剃刀)。
3、回归问题实例
3.1、监督学习的流程
对于监督学习的流程的具体过程见下图:
3.2、音乐发行年代的预测
对于具体的监督学习任务,可以拆分成下面的过程:
下面是每一步具体的操作。
3.2.1、获取数据
实验的目标是要根据音乐中声音特征预测音乐所属的年代,原始数据可以从UCI的ML库中找到Millionsong Dataset
,地址为YearPredictionMSD Data Set。原始数据中是1980到2014年间的西方的商业唱片,特征为平均12音色,标签为发行年代。
3.2.2、分割数据集
将数据集分成训练集和测试集,训练集用于训练,而测试集用于评价模型的优劣。测试误差显示出我们的模型是否具有很好的泛化能力。
3.2.3、特征提取
3.2.4、监督学习
此时,数据集中就包括了训练集,验证集和测试集,其中,训练集用于训练模型,验证集用于评估不同的模型,测试集则是评估最终的模型的准确性。
对于模型中的一些自由参数,或称为超参数(hyperparameter),可以采用网格搜索(Grid Search)的方法获取,网格搜索是指定义好区间,在区间上取固定的长度来取得不同的值,如下图所示:
3.2.5、评估
3.2.6、预测
预测是指对新的观测数据,利用训练好的模型对其进行预测,得到相应的年代。
4、分布式实现
如:
矩阵的乘法也可以通过矩阵对应的列和行的外积的和实现。
如:
在分布式实现的时候,可以采用如下的方法实现矩阵的计算:
若需要PDF版本,请关注我的新浪博客@赵_志_勇,私信你的邮箱地址给我。
参考文献
- [WCF权限控制]通过扩展自行实现服务授权[提供源码下载]
- [WCF权限控制]WCF自定义授权体系详解[原理篇]
- [WCF权限控制]WCF自定义授权体系详解[原理篇]
- [WCF权限控制]WCF自定义授权体系详解[实例篇]
- [ASP.NET MVC]通过对HtmlHelper扩展简化“列表控件”的绑定
- [ASP.NET MVC]为HtmlHelper添加一个RadioButtonList扩展方法
- 在ASP.NET MVC中使用“RadioButtonList”和“CheckBoxList”
- [WCF REST] 一个简单的REST服务实例
- [WCF REST] 提高性能的一个有效的手段:条件资源获取(Conditional Retrieval)
- [WCF REST] 解决资源并发修改的一个有效的手段:条件更新(Conditional Update)
- [WCF REST] 通过ASP.NET Output Caching实现声明式缓存
- [WCF REST] 通过ASP.NET Output Caching实现声明式缓存
- CentOS6.5下安装JDK
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 基于IntentService的文件下载的示例代码
- Android开发之底图局部加载移动的方法示例
- Ubuntu18.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题
- ExpandableListView实现手风琴效果
- 组复制性能 | 全方位认识 MySQL 8.0 Group Replication
- Android 中View.onDraw(Canvas canvas)的使用方法
- Android API编程之Assets文件操作示例
- Android自制精彩弹幕效果
- RollViewPager无限轮播使用方法详解
- ubuntu16.04 升级内核的方法步骤
- Android 列表倒计时的实现的示例代码(CountDownTimer)
- Android 控件设置阴影效果
- 解决VScode配置远程调试Linux程序的问题
- Android EasyBarrage实现轻量级弹幕效果
- android 获取本机其他app的版本信息的示例代码