1.什么是线性回归?用线性关系去拟合输入和输出。 设输入为x,则输出y=ax b。 对于多元的情况y=b×1 a1x1 a2x2 ... anxn。 用θ表示系数,可以写作: 其中,x0=1。 2.线性回归有什么用?对于连续输入和输出的问题,如果线性回归可以较好的拟合输入和输出,那么可以用这个模型预测其它输入时的输出。 反过来想:如果线性回归可以较好的拟合输入和输出,那么说明输出和输入有很强的线性相关性,可以识别输入中的冗余信息。 3.怎么判断是否较好的拟合?初步考虑,就是当使用模型时的输出、和真实的输出有多大偏差,选择一个方法量化这个偏差。 每个样本输入模型时,均会产生一个偏差。 线性回归中,通过求这些偏差的平方平均值,来判断偏差的程度。写作: 其中实际输出为y,模型输出为h,上标i是指每个样本。系数在平方平均值的基础上除以2。 判断偏差的这个方程起名叫 Cost Function。当偏差越小、即Cost Function的值越小时,拟合的越好。 4.怎么训练模型?训练模型的目的在于实现较好的拟合,也就是说使Cost Function的值尽量小。 训练在这里,就是选择一组系数θ(模型确定以后,模型的参数就是系数θ们),实现上面的目的。 微积分学过,可以对θ求偏导数等于0的点,直接得到极值点。 按照Andrew Ng的课件,当参数个数大于10000个时,直接求极值点时间太长,需要选择别的办法。 5.怎样训练模型:梯度下降。顾名思义,就是沿着梯度下降。选择一个合适的步长α,一步一步改变θ,使Cost Function的值不断减小。 其中,θj表示各个系数。:=前面的冒号表示每个θj同时改变。 走多少步?和怎么判断模型训练好了呢?最好是观察每次θj改变后,J(θ)的值的变化。 最开始θj等于多少呢?最开始,随便选一组值就可以。 步长α应该选多大呢?要通过手动尝试,“找”到合适的值。 最后,经过多次迭代后,算法得到一组θ,使Cost Function的值比较小。 6.matlab实现一个线性回归。%一个特征的输入参数 %梯度下降参数设计 for i=1:times
7.实际使用实际使用线性回归时,先对输入数据进行优化。包括:1.将冗余的和无关的变量去掉;2.对于非线性关系,采用多项式拟合,将一个变量变为多个变量;3.将输入范围归一化。 小结线性回归开始假设输入和输出存在线性关系, 然后使用线性回归模型h=θTx,用Cost Function J(θ)评价拟合程度, 通过对J(θ)应用梯度下降算法逼近一组好的参数θ,从而得到一个适用的模型h。
线性回归的使用建立在“输入和输出存在线性关系”这一假设基础上,把一组特征映射到一个值。 使用起来,也许因为模型太简单,感觉不到“机器学习”的感觉。选用时也需要很多先验知识、针对特定情况,就像一般的编程处理问题一样。 在使用梯度下降的算法时,迭代的过程,有点“学习”的感觉。 来源:http://www./content-4-41151.html |
|