Machine Learning Notes-Linear Regression-Udacity


什么是 Regression?

Regression 就是想找到因变量和自变量之间的关系,用一个函数来表示,并且可用这个函数来预测任意一个新的 x 会有怎样的 y 。

Machine Learning Notes-Linear Regression-Udacity_第1张图片

那么怎么找最好的那条线来表示 x 与 y 之间的关系呢?

用积分的方式。

Machine Learning Notes-Linear Regression-Udacity_第2张图片

怎么确定拟合线的阶数?

判断的标准,就是最小的 mean squared error,最好是为0.

Machine Learning Notes-Linear Regression-Udacity_第3张图片

下面这条线虽然把每个点都 fit 了,但是在某两个点之间却急剧上升或者下降。


Machine Learning Notes-Linear Regression-Udacity_第4张图片

从 Training Error 的曲线上看,也是当 order=8 时,error几乎没有,但是曲线却非常地 crazy。


Machine Learning Notes-Linear Regression-Udacity_第5张图片

接下来用矩阵来表示多项式。

Machine Learning Notes-Linear Regression-Udacity_第6张图片

求解系数矩阵W的公式:

Machine Learning Notes-Linear Regression-Udacity_第7张图片

用来 Training 的数据其实是有 Error 的,产生的原因如下几条,

所以要让我们的拟合函数尽量避开这些error,从而达到更准的效果。


Machine Learning Notes-Linear Regression-Udacity_第8张图片

用 Training 和 Testing 数据训练出来的模型,我们需要相信它们是可以代表未来要被应用的系统的,

用 Cross Validation 去调 Polynomial 的参数,

取最小的 Error 相应的参数。


Machine Learning Notes-Linear Regression-Udacity_第9张图片

Cross Validation 的 Error 一开始要比 Training Error 要高,因为:Training 用了所有的数据,而 Cross Validation 用的是一部分数据,还有一部分数据用来 test,

随着阶数的增加,Cross Validation 的 Error 渐渐接近 Training Error,但超过某个值后,又剧增,因为:随着级数越来越大,虽然会更好的拟合数据,但是会 Over Fitting,那么在未来的数据上就会不太适用。


Machine Learning Notes-Linear Regression-Udacity_第10张图片

我们想要找到的是 fit 的这个点。

Machine Learning Notes-Linear Regression-Udacity_第11张图片

在 sklearn 里有很多线性回归模型:
http://scikit-learn.org/stable/modules/linear_model.html

怎样评价你的线性回归模型

一个是画出来,一个是看Error, error 就是实际值-预测值,注意符号。

Machine Learning Notes-Linear Regression-Udacity_第12张图片

回归之后,测试数据和训练数据同时显示在这个图里。


Machine Learning Notes-Linear Regression-Udacity_第13张图片

对于回归模型,想要 Error 达到最小,合适的评价模型有两个,一个是绝对值,一个是平方。

Machine Learning Notes-Linear Regression-Udacity_第14张图片

目标就是想要这个 Error 达到最小,SSE 越大,拟合的效果越不好。

r squared 是评价回归模型的一种很重要的方法,

这个值越大越好,最大为1。越小说明没有很好地捕捉到数据的趋势,越大说明很好地描述了输入输出的关系。
这个值要用 test data 去检验,也可以看出是否 Over fitting。


Machine Learning Notes-Linear Regression-Udacity_第15张图片

多元回归

Machine Learning Notes-Linear Regression-Udacity_第16张图片

Classification 和 Regression 比较:

Machine Learning Notes-Linear Regression-Udacity_第17张图片

Regression 方法列表:

1. Parametric Regression
Machine Learning Notes-Linear Regression-Udacity_第18张图片

可以用 polyfit 直接得到多项式的系数:

import numpy as np

# The rank of the coefficient matrix in the least-squares fit is deficient. 
# The warning is only raised if full = False.
# The warnings can be turned off by
import warnings
warnings.simplefilter('ignore', np.RankWarning)

sleep = [5,6,7,8,10,12,16]
scores = [65,51,75,75,86,80,0]

import matplotlib.pyplot as plt
%matplotlib inline

plt.plot(sleep, scores)

coeffs=np.polyfit(sleep, scores, 2)

coeffs

Machine Learning Notes-Linear Regression-Udacity_第19张图片
2. K Nearest Neighbor

取 k 个值的平均值作为拟合后的点,最后可以得到一条沿着点的光滑的曲线。


Machine Learning Notes-Linear Regression-Udacity_第20张图片
3. Kernel Regression

和 KNN 类似,只是不同的点,根据距离来加权,而 KNN 的每个点作用都是一样的。


Machine Learning Notes-Linear Regression-Udacity_第21张图片

你可能感兴趣的:(Machine Learning Notes-Linear Regression-Udacity)