GitHub地址(代码加数据)python
咱们首先用弄清楚什么是线性,什么是非线性。git
线性:两个变量之间的关系是一次函数关系的——图象是直线,叫作线性。github
注意:题目的线性是指广义的线性,也就是数据与数据之间的关系。算法
非线性:两个变量之间的关系不是一次函数关系的——图象不是直线,叫作非线性。微信
相信经过以上两个概念你们已经很清楚了,其次咱们常常说的回归回归究竟是什么意思呢。机器学习
通俗的说就是用一个函数去逼近这个真实值,那又有人问了,线性回归不是用来作预测吗?是的,经过大量的数据咱们是能够预测到真实值的。若是仍是不明白,你们能够加一下个人微信:wei15693176 进行讨论。函数
对大量的观测数据进行处理,从而获得比较符合事物内部规律的数学表达式。也就是说寻找到数据与数据之间的规律所在,从而就能够模拟出结果,也就是对结果进行预测。解决的就是经过已知的数据获得未知的结果。例如:对房价的预测、判断信用评价、电影票房预估等。学习
你们看上面图片,图片上有不少个小点点,经过这些小点点咱们很难预测当x值=某个值时,y的值是多少,咱们没法得知,因此,数学家是很聪明的,是否可以找到一条直线来描述这些点的趋势或者分布呢?答案是确定的。相信你们在学校的时候都学过这样的直线,只是当时不知道这个方程在现实中是能够用来预测不少事物的。优化
那么问题来了,什么是模型呢?先来看看下面这幅图。3d
假设数据就是x,结果是y,那中间的模型其实就是一个方程,这是一种片面的解释,但有助于咱们去理解模型究竟是个什么东西。之前在学校的时候老是不理解数学建模比赛到底在作些什么,如今理解了,是从题目给的数据中找到数据与数据之间的关系,创建数学方程模型,获得结果解决现实问题。实际上是和机器学习中的模型是同样的意思。那么线性回归的通常模型是什么呢?
模型神秘的面纱已经被咱们揭开了,就是以上这个公式,不要被公式吓到,只要知道模型长什么样就好了。假设i=0,表示的是一元一次方程,是穿过坐标系中原点的一条直线,以此类推。
咱们知道x是已知条件,经过公式求出y。已知条件其实就是咱们的数据,以预测房价的案例来讲明:
上图给出的是某个地区房价的一些相关信息,有日期、房间数、建筑面积、房屋评分等特征,表里头的数据就是咱们要的x一、x二、x3…….... 天然的表中的price列就是房屋的价格,也就是y。如今须要求的就是theta的值了,后续步骤都须要依赖计算机来训练求解。
固然,这些计算虽然复杂,但python库中有现成的函数直接调用就能够求解。咱们为了理解内部的计算原理,就须要一步一步的来剖析计算过程。
为了容易理解模型,假设该模型是一元一次函数,咱们把一组数据x和y带入模型中,会获得以下图所示线段。
是否是以为这条直线拟合得不够好?显然最好的效果应该是这条直线穿过全部的点才是,须要对模型进行优化,这里咱们要引入一个概念。
不要看公式很复杂,其实就是一句话,(预测值-真实值)的平法和的平均值,换句话说就是点到直线距离和最小。用一幅图来表示:
解释:一开始损失函数是比较大的,但随着直线的不断变化(模型不断训练),损失函数会愈来愈小,从而达到极小值点,也就是咱们要获得的最终模型。
这种方法咱们统称为梯度降低法。随着模型的不断训练,损失函数的梯度愈来愈平,直至极小值点,点到直线的距离和最小,因此这条直线就会通过全部的点,这就是咱们要求的模型(函数)。
以此类推,高维的线性回归模型也是同样的,利用梯度降低法优化模型,寻找极值点,这就是模型训练的过程。
在机器学习模型训练当中,模型的泛化能力越强,就越能说明这个模型表现很好。什么是模型的泛化能力?
模型的泛化能力直接致使了模型会过拟合与欠拟合的状况。让咱们来看看一下状况:
咱们的目标是要实现点到直线的平方和最小,那经过以上图示显然能够看出中间那幅图的拟合程度很好,最左边的状况属于欠拟合,最右边的状况属于过拟合。
欠拟合:训练集的预测值,与训练集的真实值有很多的偏差,称之为欠拟合。
过拟合:训练集的预测值,彻底贴合训练集的真实值,称之为过拟合。
欠拟合已经很明白了,就是偏差比较大,而过拟合呢是训练集上表现得很好,换一批数据进行预测结果就很不理想了,泛化泛化说的就是一个通用性。
使用正则化项,也就是给梯度降低公式加上一个参数,即:
加入这个正则化项好处:
控制参数幅度,不让模型“没法无天”。
限制参数搜索空间
解决欠拟合与过拟合的问题。
看到这里是否是以为很麻烦,我以前说过如今是解释线性回归模型的原理与优化,可是到了真正使用上这些方法是一句话的事,由于这些计算库别人已经准备好了,感谢开源吧!
寻觅互联网,少有机器学习通俗易懂之算法讲解、案例等,项目立于这一问题之上,整理一份基本算法讲解+案例于文档,供你们学习之。通俗易懂之文章亦不能够面概全,但凡是有不正确或争议之处,望告知,自当不吝赐教!
欢迎添加微信交流!请备注“机器学习”。