线性回归与损失函数
导语
自学机器学习的进程已经差不多一半了。我说真的,开始有点乱了,脑海里对机器学习构建的整个框架有待整理完善。
有句话说,“学好数理化,走遍天下都不怕。”其实学习专业级知识不算难,就是要在高中学习的数理知识基础上,于了解并充实专业级知识的概念、思维与理念的过程中,从学习数理知识逐步发展到运用数理知识。我想那句话就是这样作用吧。
正所谓温故而知新,学习时不仅要有输入,也得要有输出。所以趁着中秋节假期,俺又来一波键盘上的知识杀戮了。
上一章知识链接(回归模型)
还记得上一章的“有监督”的机器学习方法——Supervised Learning吗?
我们知道,用这个机器学习方法,所得到的模型,所预测的输出值y−haty-hat的取值范围,通常是可预测的,或是人为规定的。(一般,线性回归模型与逻辑回归模型,就是通过Supervised Learning得到的。)
- 常见的Supervised Learning有 Regression 和 Classification ,中文意思请自行百度。
- 常见的Unsupervised Learning有Clustering(说Grouping你总明白吧)。
这一篇将会讲讲机器学习的第一个模型,线性回归模型(Linear Regression Model)。
下表包含的对于各个量的标记符号。
专业术语 | 标记 |
---|---|
特征(features) | x, x_train |
目标(targets) | y,y_train |
参数(parameters) | w(weight),b(bias),w ,b |
样本容量(parameters) | m,m |
第i个样本(ithi_{th}Training Example) | x(i)x^{(i)}, y(i)y^{(i)}, x_i , y_i |
第i个样本的预测值(The result of ithi_{th}training Example) | fw,b(x(i))f_{w,b}(x^{(i)}),f_wb |
预测值(prediction) | y−haty-hat,y-hat |
线性回归模型(Linear Regression Model)
什么是线性回归?
最简单的例子,就是你在A4纸上画上x轴和y轴(也就是平面直角坐标系),再放上你的校卡,在上面画任意一条直线, 就得到了任意一个线性回归方程的直线了。
好了,
我们知道这条直线上点的横坐标与纵坐标有个一次函数关系,也就是直线方程y=wx+by=wx+b.,只是目前不能看出纸上的这条线里yy与xx之间的数学关系具体是什么,也就是满足该直线方程的参数(parameters),ww和bb具体的值是什么(知道y,xy,x之间有关系,是用w,bw,b去描述y,xy,x之间的关系就好啦)。
还记得高中做题的时候时,常常会遇到有函数关系的题,比如说……(写到这语塞了半天,硬是没想起来有啥研究相关性的函数题)
我希望的是,你能联想到有解释两者关系的函数关系图的某道题目,并了解到,这些函数关系图既不是凭空而出的,也不是通过人工分析大量数据,进行各种高难度计算而出的。这些恰到好处的、严谨的事物关系图,来自于,机器分析数据集、得出模型后的函数可视化。
还是直接上图吧。
假装这个图里yy与xx分别代表两个事物。而且“由图可知”,这两个事物呈正相关性。
对于直线方程,高中生嘛(没有鄙视的意思),通常用两个点来确立一条直线,从而得出目标直线方程,从而确定两者之间的函数关系。
但是,大学生知道(没有鄙视的意思),我们拿到含有特征与目标的数据集,为了计算两者之间关系,倘若选出的恰好是受外界因素影响最大的两个点(特征,目标)时,我们最终确立的这条直线就不够客观、实用与公平了,不能以此作为我们的目标函数。
因为,我们寻求两者关系的目的,是==为了输入特征值xx,最终能得到一个接近实际值yy的输出预测值y−haty-hat,从而将来,在未知输出实际值的情况下,我们也可以通过输入特征值于训练好的模型,得到一个合理的输出预测值y−haty-hat==,所以,我们为了最终函数关系的严谨性,抛弃了“两点确定一条直线”的数学思维,发明了关于“不呈线性的数据关系分析”的一套流程,也就是开始进行机器学习了。线性回归在机器学习里的应用是十分常见的。
我们实现一个Linear Regression Model跟高中时确立直线方程,非常不一样。
线性回归算法公式?
fw,b=wx+bf_{w,b}=wx+b
这个公式,就是线性回归(Linear Regression)最原始的本体了,称它为线性回归模型的学习算法(Learning Algorithm)。所有可以大致用直线来表示的数据关系,就可以用到机器学习方法里的这个Learning Algorithm。
emm虽然开头表格里已经写明了:
xx代表training set里的特征,也是输入值;ww代表权重(特征值所占的比重);bb代表基础量(特征值为0使的参数);fw,bf_{w,b}在训练算法的时候是目标,在我们测试、使用算法时是预测值,统称为输出值。
如何得到线性回归模型?
看下面两个图,分别展示两种状态,图里的红蓝点均来自于数据集(training set)。
A状态:参数的值尚未知,模型还没有被我们训练出来。
我们现在的目标,就是要找到合适的参数值让它匹配数据集(training set)。
B状态:红线则是训练好的模型的线性回归,它的参数是已知的。
此时在横坐标选出任意一个新的点,在纵坐标都有一个合理预测值了。
损失函数引言(Cost Function)
要从A,到达B,对于机器来说,并不是简简单单描出一条线的过程,而是基于Learning Algorithm的计算过程。
为了判断函数匹配数据集的好坏,我们定义了一个cost函数。顾名思义,损失函数就是计算线性回归的损失值的,一个模型的好不好,就看cost小不小。公式如下:
J(w,b)=12m∑i=0m−1(fw,b(x(i))−y(i))2J(w,b) = frac{1}{2m} sumlimits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) – y^{(i)})^2
从单一特征线性回归模型出发,我们已经认识并了解了机器学习的一个最简单的学习算法了。那么我们到底是怎样从A到达B的?简单来说就是“改参降损”,详细的,就看看下一篇文章,会讲讲损失函数的定义与原理,引出我们是怎么用梯度下降(Gradient Descent)的方法降低损失,从而训练出线性回归模型。
感谢您的阅读。