回归算法其实就是回归平均值:regression to the mean
回归问题主要关注确定一个唯一的因变量(dependent variable)(需要预测的值)和一个或多个数值型的自变量 (independent variables)(预测变量)之间的关系
广义线性回归包括逻辑回归、泊松回归等
1. 理解回归
上图是火箭发射失败次数与O型圈的温度之间的关系,回归在几何上理解为:找到一条直线,可以穿过所有的点,实际意义是:找到一种普适的规律,可以总结火箭发射失败的次数和O型圈温度的关系,以便于未来发射火箭的时候,选择合适的O型圈温度。
这里假设火箭发射失败次数为Y,O型圈温度为X,那么每个点可以得出一个方程:
Y(0) = W·X(0)
Y(1) = W·X(1)
...
Y(n-1) = W·X(n-1)
Y(n) = W·X(n)
其中,W代表O型圈温度对火箭发射失败次数的影响能力,我们称为权重
在这些方程中,Y和X都是已知的,通过逻辑回归,最终求出了W的值,得到一个普适的方程:
Y = W·X
这个普适的方程,我们称之为训练出来的模型,训练的过程就是通过已有数据通过回归求这个普适方程的过程,最终,通过这个训练出来的模型可以预测未来的Y值,比如,当下次发射火箭时,让O型圈的温度为T,那么发射失败的次数为W·T,通过这个值可以决定是否选择T这个温度。
2. 损失函数
在机器学习中,永远没有一个完美的解,只有最优解,求最优解有专门的算法——梯度下降,之后用专门的篇章来介绍
在几何上的理解:永远找不到一条直线可以穿过N个散列的点,因为现实情况复杂多变,所以每个点都是散列的,它们的分布只能近似的遵循某种规律
所以在回归算法中,最终训练出的模型是有误差的,模型永远不能100%准确,那什么时候就可以认为模型已经准确了,不需要再训练了呢?
我们可以根据实际情况定义一个误差范围,只要训练出来的模型每次的误差在可接受的范围内,就认为它已经合格了
在回归算法中,使用最小二乘法来计算误差,即:
每个点的实际的Y值 - 预测的Y值平方求和然后除以点的个数
以上求误差的函数我们称之为损失函数
3. 多元线性回归
在火箭发射失败与否这个事情上,O型圈的温度显然并不是唯一的因素,在现实生活中,一个事情的影响因素是有很多方面的,那么要求每个维度的权重,就要使用多元线性回归算法,即通过几下方程求各个W的值:
Y(0) = W(1)·X(1) + W(2)·X(2) + ... + W(n-1)·X(n-1) + W(n)·X(n) + C
Y(1) = W(1)·X(1) + W(2)·X(2) + ... + W(n-1)·X(n-1) + W(n)·X(n) + C
...
Y(n-1) = W(1)·X(1) + W(2)·X(2) + ... + W(n-1)·X(n-1) + W(n)·X(n) + C
Y(n) = W(1)·X(1) + W(2)·X(2) + ... + W(n-1)·X(n-1) + W(n)·X(n) + C
其中, C是常量
把已有的数据一条条代入上面的方程中进行求解,这是一个迭代的过程,当误差(损失函数的值)在可接受范围内时,开始收敛(停止迭代),得出训练模型
在机器学习中,我们把影响因素称为维度,每条数据中每个维度的值称为这条数据的特征,Y值称为输出值,为了训练模型使用到的所有数据称为样本
4. 多元线性回归的优化方式之一:升维
保险案例:
假设某个人对自己投保的花费(charge)由以下维度来确定:
W1:age(年龄)
W2:children(有几个孩子)
W3:bmi(肥胖指数)
W4:sex(性别)
W5:smoker(是否抽烟)
W6:region(居住地区)
即:
charges ~ age + children + bmi + sex + smoker + region
根据经验,年领越高,可能患病的概率越大,随着年龄增高,看病的花费呈指数级增长,所以加一个维度:
W7:age2(年龄的平方)
这样做是因为,当使用线性回归训练模型使用线性的数据(Y和X变化幅度一致)时,训练出的结果会更准确,同时,根据医学研究,bmi指数大于30时,患病概率大大增加,而小于30时,几乎没影响,那么,再增加一个维度:
W8:bmi2(bmi是否大于30,是为1,否为0)
此时训练模型如下:
charges ~ age + children + bmi + sex + smoker + region + age2 + bmi2
通过增加两个维度,将会使模型的推广能力增加
推广能力:一个模型预测的越准确(错误率越低),推广能力越高
注意:
增加维度时,根据经验的判断有可能是不准确的,需要反复测试,比如我们可以把W7定义为age的立方,或者其他级别的增长幅度来求错误率,比较后选取一个最合适的
5. 相关系数(了解)
相关系数就是指Pearson相关系数,它是数学家Pearson提出来的,两个变量之间的相关系数是一个数,它表示两个变量服从一条直线的关系有多么紧密,相关系数的范围是[-1,1],两端的值表示一个完美的线性关系,相关系数接近于0则表示不存在线性关系,通过协方差函数cov()、标准方差函数sd()、可以求出来相关系数cor
比如:
age bmi children charges
age 1.0000000 0.1092719 0.04246900 0.29900819
bmi 0.1092719 1.0000000 0.01275890 0.19834097
children 0.0424690 0.0127589 1.00000000 0.06799823
charges 0.2990082 0.1983410 0.06799823 1.00000000
age和charges的相关系数为0.299
children和charges的相关系数为0.067
说明age和charge具有比children和charge更好的线性关系,即age对charge影响更大
chilren和bmi和相关系数为0.012,说明孩子的个数和肥胖指数关系不大