一般咱们学习机器学习都是从线性回归模型开始的。线性回归模型形式简单、易于建模,可是咱们能够从中学习到机器学习的一些重要的基本思想。python
回归一词的由来:这个术语是英国生物学家兼统计学家高尔顿在1886年左右提出来的。人们大概都注意到,子代的身高与其父母的身高有关。高尔顿以父母的平均身高X做为自变量,其一成年儿子的身高Y为因变量。他观察了1074对父母及其一成年儿子的身高,将所得(X, Y)值标在直角坐标系上,发现两者的关系近乎一条直线,总的趋势是X增长时Y倾向于增长,这是意料中的结果.有意思的是,高尔顿对所得数据作了深刻一层的考察,而发现了某种有趣的现象。segmentfault
高尔顿算出这1074个X值的算术平均为68英寸(1英寸为2.54厘米),而1074个Y值的算术平均为69英寸,子代身高平均增长了1英寸,这个趋势现今人们也已注意到。以此为据,人们可能会这样推想:若是父母平均身高为a英寸,则这些父母的子代平均身高应为a+1英寸,即比父代多1英寸。但高尔顿观察的结果与此不符,他发现:当父母平均身高为72英寸时,他们的子代身高平均只有71英寸,不只达不到预计的72+1=73英寸,反而比父母平均身高小了。反之,若父母平均身高为64英寸,则观察数据显示子代平均身高为67英寸,比预计的64+1=65英寸要多。机器学习
高尔顿对此的解释是:大天然有一种约束机制,令人类身高分布保持某种稳定形态而不做两极分化。这就是种使身高“回归于中心“的做用。例如,父母身高平均为72英寸,比他们这一代平均身高68英寸高出许多,“回归于中心”的力量把他们子代的身高拉回来些:其平均身高只有71英寸,反比父母平均身高小,但仍超过子代全体平均69英寸。反之,当父母平均身高只有64英寸,远低于他们这代的平均值68英寸时,“回归于中心”的力量将其子代身高拉回去一些,其平均值达到67英寸,增加了3英寸,但仍低于子代全体平均值69英寸。函数
正是经过这个例子,高尔顿引人了“回归”这个名词。学习
线性回归的模型形如:spa
线性回归得出的模型不必定是一条直线,在只有一个变量的时候,模型是平面中的一条直线;有两个变量的时候,模型是空间中的一个平面;有更多变量时,模型将是更高维的。 3d
线性回归模型有很好的可解释性,能够从权重W直接看出每一个特征对结果的影响程度。blog
线性回归适用于X和y之间存在线性关系的数据集,可使用计算机辅助画出散点图来观察是否存在线性关系。例如咱们假设房屋价格和房屋面积之间存在某种线性关系,画出散点图以下图所示。图片
看起来这些点分布在一条直线附近,咱们尝试使用一条直线来拟合数据,使全部点到直线的距离之和最小。实际上,线性回归中一般使用残差平方和,即点到直线的平行于y轴的距离而不用垂线距离,残差平方和除以样本量n就是均方偏差。均方偏差做为线性回归模型的代价函数(cost function)。使全部点到直线的距离之和最小,就是使均方偏差最小化,这个方法叫作最小二乘法。get
代价函数:
其中,
下面求使J最小的W和b:
偏导数法是很是麻烦的,须要一个一个地计算w。为了方便,这里以单变量线性回归为例。
正规方程使用矩阵运算,能够一次求出W向量。可是当变量(feature)个数大于数据个数时,会致使xTx不可逆,这时候就不能用此方法了。
使用正规方程法,若是但愿获得的模型带有偏置项b,就要先给数据集X增长全为1的一列,这样才会把b包含在W中;若是不添加,那么模型是强制过原点的。
这里的代价函数J的海森矩阵H是半正定的,所以J必定有全局最小值,因此也可使用梯度降低法来求解。梯度降低法是一种迭代解法,不只能够求解最小二乘问题,也适用于其它代价函数的问题。可是须要设置学习率α,α设置的过大或太小,都不能很好地训练出模型,并且梯度降低法须要对数据集进行特征缩放。通常会在数据集特别大的时候或者xTx不可逆的时候使用梯度降低法,后面再作介绍。
还有一些方法就不一一列举了。例如奇异值分解,QR分解,乔姆斯基分解等等。
计算出的模型以下图。
再放一个两个变量的状况的,以下图。