机器学习知识体系 - 线性回归

机器学习

什么是机器学习?业界有如下定义:

? ArthurSamuel(1959).MachineLearning:Fieldof study that gives computers the ability to learn without being explicitly programmed.

? TomMitchell(1998)Well-posed Learning Problem: A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.

通常情况下,人类进行编程让机器完成一项工作,需要事先定义好一系列程序逻辑,机器然后根据编写的代码来执行,这种方式其实人类定义的规则,机器仅仅是运算执行而已。机器学习强调的是“without explicitly programmed”,通过机器根据某些经验数据,自我归纳总结算法,从而对一些新的数据进行准确的预测推导。

常见的应用场景包括:

1. 数据挖掘

2. 手写识别、自然语言处理(NLP)、计算机视觉

3. 产品推荐系统

4. ...

监督学习和无监督学习

机器学习方式大体上分为两种类别:监督学习和非监督学习。

监督学习指的是人类给机器一大堆标示(label)过的数据,通常指机器通过学习一系列(, )数据,X代表输入数据(特征Feature),Y代表输出数据,然后自我推导到X -> Y的公式,用于未来其他数据的预测判断使用。监督学习根据输出数据又分为回归问题(Regression)和分类问题(Classfication)。回归问题通常输出是一个连续的数值,分类问题的输出是几个特定的数值。

举例如下:

(a) 回归问题 - 给定一张人脸照片,估计出这个人的年龄(年龄输出是一个连续的数值)

(b) 分类问题 - 假定一个人患有肿瘤,判断是为恶性还是良性(恶性和良性的输出是几个特定的数值)

                        回归问题 - 房价预测

                         分类问题 - 肿瘤恶性/良性判断

无监督学习所学习的数据没有属性或标签这一概念 也就是说所有的数据都是一样的没有区别,通常给的数据是一系列(),并不存在Y的输出数据。所以在无监督学习中,我们只有一个数据集,没人告诉我们该怎么做,我们也不知道每个数据点究竟是什么意思,相反它只告诉我们现在有一个数据集,你能在其中找到某种结构吗?对于给定的数据集,无监督学习算法可能判定,该数据集包含不同的聚类,并且能够归纳出哪些数据是一个聚类。

模型表达

在建立数学模型之前,先约定好一些表达形式:

 - 代表输入数据 (features)

 - 代表输出数据(target)

 - 代表一组训练数据(training example)

m - 代表训练数据的个数

n - 代表特征数量

监督学习目标就是,假定给一组训练数据,可以学习到一个函数方法h,可以使得h(x) -> y。这个函数方法h被称为假设(hypothesis)。整体流程如下:

代价函数

对于线性回归而言,函数h的表达式如下:

我们通常指定:

如果使用线性代数来表达的话

,  

, 其中矩阵的转置(Transpose)。

那么对于一系列训练数据,如何获得最优的成为解决问题的核心。直观上而言,我们希望获取一组值,使得h(x)越接近y越好。于是定义这个衡量标准为代价函数(Cost Function)如下:

这个函数又称为Squared Error Function。

我们看下两个参数的Cost Function图像通常如下:

它是一个弓形的图像,这个弓形的最低点就是的最优解。

梯度下降算法

对于线性回归问题,我们需要解决的事情往往如下:

定义出Cost Function - 

希望能够找到一组,能够最小化,即

梯度下降算法步骤如下:

1. 随机选择一组

2. 不断的变化,让变小

j=0,1,...n,是所有n+1个值同时进行变化。α 是代表学习速率。 是Cost Function对的偏导数。

3. 直到寻找到最小值

偏导求解如下:

因此最终的梯度下降算法表达如下:

从Cost Function的图上,我们可以看到选择最优解的过程

           寻找到局部最优解1

                寻找到局部最优解2

从上面两个图可以看出,寻找最优解的过程很想是在下山,沿着下山的路下来,并最终到达一个局部的底部保持不变。

正规方程Normal Equation

梯度下降算法给出了一种方法可以最小化Cost Function。正规方程(Normal Equation)是另外一种方法,它使用非常直接的方式而不需要进行迭代的算法。在这个方法中,我们通过对J取对应的的偏导数,然后将偏导数设置为0。通过推导,正规方程如下:

梯度下降算法和正规方程对比如下:

梯度下降算法 正规方程
需要选择学习速率参数    不需要学习速率参数    
需要很多次迭代 不需要迭代
 
n如果很大依旧还能工作    n如果很大,速度会非常慢  

因此两种方法能否工作取决于n(特征x的数量)的大小,如果n很大(> 10000),那么使用梯度下降算法是比较明智的选择。

=================华丽的分割线===========================

广告时间,请关注我个人微信公众号,聊聊技术、管理、生活

时间: 2024-10-07 12:08:14

机器学习知识体系 - 线性回归的相关文章

机器学习知识体系 - 神经网络(基础)

转载:http://www.jianshu.com/p/a3b89d79f325 引言本系列是本人第一次在简书写东西,想将手头上正在学的神经网络归纳整理,尽量详细地介绍神经网络的结构.计算公式与C语言实现.文中内容基本参考消化了计算机的潜意识的博文,文中图片基本来自他的博文和Ng老师的课件,所用的符号和上下标与Ng老师的一致,在此感谢. 神经网络结构 说到神经网络,对神经网络有概念的人第一个冒出来的肯定是下面这幅图,这是最基本的3层神经网络,图中圆圈标识神经元,有输入层.1层隐藏层.输出层.输入

机器学习知识体系

那几年.我学习机器学习的主要内容: 1.机器学习基本导论,机器学习入门了解: 2.线性回归与Logistic.xx业绩预測系统.智能交互统计系统等. 3.岭回归.Lasso,变量选择技术. 维度的技巧等技术: 4.降维技术. xx指标设计,详细规范. 5.线性分类器,Knn算法,朴素贝叶斯分类器.文本挖掘.XX智能垃圾消息,垃圾邮件推断,评论智能分析,智能监控统计预警系统呀. 6.决策树.组合提升算法,bagging和adaboost,随机森林.XX用户分析系统,智能广告推送系统. 7.支持向量

01机器学习算法整体知识体系与学习路线攻略

入行机器学习有一年多了,做过大大小小的机器学习项目,参加数据竞赛等实践活动,从最初的懵懵懂懂到现在逐步的深入,也渐渐的有了很多的体会和理解,本篇文章主要来阐述机器学习的知识体系,以让更多人明白机器学习应该怎样学习.需要学习什么?这些问题就是本篇文章的主要讨论的内容,下面开始进行详细介绍. 先对本篇文章的目录做个介绍: 1.机器学习术语 2.常见算法类型 3.评估方法和指标 4.性能优化和超参数调优 1.机器学习术语 接下来正式介绍机器学习术语.机器学习术语作为作为最基本的常识问题,为了更好的学习

常用的机器学习知识(点)

常用的机器学习&数据挖掘知识(点) 声明:想做机器学习&数据挖掘的学弟学妹,可以看看,转载请说明出处... 常用的机器学习知识(点) Basis(基础): MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Least Square Methods 最小二乘法),MLE(MaximumLikelihood Estimation最大似然估计),QP(Quadratic Programming 二次规划), CP(Conditi

机器学习(2)之线性回归

机器学习(2)之线性回归 上一章介绍了梯度下降算法的线性回归,本章将介绍另外一种线性回归,它是利用矩阵求导的方式来实现梯度下降算法一样的效果. 1. 矩阵的求导 首先定义表示m×n的矩阵,那么对该矩阵进行求导可以用下式表示,可以看出求导后的矩阵仍然为m×n 这里要用到矩阵迹的特性,trace. 对于一个n阶的方阵(n×n),它的迹(tr)为对角线元素之和: 1. 对于一个实数,它的迹即为它本身 tr a = a 2. 如果AB是一个方阵,那么 tr AB = tr BA 3. 由此可推导出 tr

研究生期间知识体系规划 .

现在研二了,自然语言处理方向的.一直以来不清楚自己要进行怎样的知识体系,通过研一的学习和手头触及的一点事,慢慢理清了自己要进行的知识体系.这个知识体系有四个方面:专业基础方面,项目方面,论文方面,综合素质方面. 专业基础 专业基础第一点是java语言学习.传说中有些牛逼院校可能不是很注重编程语言学习,但结合我自身来看,好好学习一门语言很重要的.怎么进行java方面学习呢?第一个阶段,找一门java基础教程,认真走一遍.很多人到这以后就开始进行java某个应用方面进行发展了,学习框架.调用三方接口

“如何构建知识体系”的思考

对于知识体系体系的构建,一直都是学习和工作中,非常重要的问题. 这段时间看了很多这方面的文章,其中京东架构师 李玥 的一篇文章,感觉讲的很好,对我也有一定的启发. 从这篇文章中,可以总结出,对于技术问题的理解和解决,可以从下面几个方面看: 焦虑的现象.原来与解决方法 焦虑的现象:做技术会感到焦虑,不懂的技术,新技术太多 焦虑的来源:对某些不好的事情过度担心而产生的一种烦躁情绪.担心更多是来源于"看不清"或"未知" 解决焦虑的办法:给一个导航,能看到自己所处的位置,前

认知,构建个人的知识体系(上)

1.前言 本文将聊聊我对构建个人知识体系的一些想法,主要是为了提升自我认知.从个人经历开始,谈谈对知识的划分,也就是一个是什么,为什么的过程. 2.缘起 把时间回到一年前,那时候我工作快一年了,得益于前面的一些努力,工作比较顺利.特别是技术上,没有遇到太多过无法解决的问题.同时也开始迷茫,工作难道就是这个轻松的样子?三五年之后那不是很无趣,该怎么办? 想找到这个问题的答案,而最好的方式莫过于,亲自去了解那些三五年工作经验的人是怎么的样子. 因此从那时候起,关注了不少来公司面试的人的简历,也有过几

2016年本博客知识体系引导(持续更新)

前言 为了方便大家的阅读以及自己的知识体系的建立,特意来写出这个引导文章.以前我是遇到什么写什么,想到什么写什么,从2016年开始我将围绕这个知识体系来写文章,从点到面来逐步建立并完善自己的知识体系,同时也欢迎大家关注我的博客. 1.Android IPC机制 Android IPC机制(一)开启多进程 Android IPC机制(二)用Messenger进行进程间通信 Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用 Android IPC机制(四