原文:http://blog.163.com/phoenixbai@126/blog/static/1086513492013953817839/
参考:线性回归和logistic回归 讲述了矩阵法的推导过程
Logistic regression (逻辑回归) 概述 白话的概述
线性回归-理论篇 概论级别
对线性回归、逻辑回归、各种回归的概念学习 更多的概念
学习Logistic Regression的笔记与理解 梯度下降法的回归过程
Normal Equations 的由来 梯度下降与矩阵方程法比较,大量训练用梯度下降法
这几天开始学习coursera上的andrew ng老师的machine learning课程。
由于我对此课程的学习没有能做到很连续,即看完视频,过几天后才在开始做作业,所以总出现公式忘掉或记忆模糊的情况,导致做作业时,总感觉自己对课程理解不深刻而惶恐不安。
为了改变此局面,决定找个地儿,写学习笔记,以便忘了,或概念模糊时,可以帮助自己重温一下!
线性回归(Linear Regression)
"回归"的由来
Francis Galton,英国生物学家,他研究了父母身高与子女身高之间关系后得出,若父母身高高于平均大众身高,则其子女身高倾向于倒退生长,即会比其父母身高矮一些而更接近于大众平均身高。若父母身高小于平均身高,则其子女身高倾向于向上生长,以更接近于大众平均身高。此现象,被Galton称之为回归现象,即regression.
什么是线性回归?
回归函数的具体解释和定义,可查看任何一本“概率论与数理统计”的书。我看的是“陈希孺”的。
这里我讲几点:
2)我们常用的是,假定f函数的数学形式已知,其中若干个参数未知,要通过自变量和因变量的观察值去估计未知的参数值。这叫“参数回归”。其中应用最广泛的是f为线性函数的假设:
这种情况叫做“线性回归”。这个线性模型就是我们今后主要讨论的对象。
3)
自变量只有一个时,叫做一元线性回归。f = b0+b1x
4)分类(Classification)与回归(Regression)都属于监督学习,他们的区别在于:
分类:用于预测有限的离散值,如是否得了癌症(0,1),或手写数字的判断,是0,1,2,3,4,5,6,7,8还是9等。分类中,预测的可能的结果是有限的,且提前给定的。
回归:用于预测实数值,如给定了房子的面积,地段,和房间数,预测房子的价格。
一元线性回归
举个例子!
我们要预测房价。当前自变量(输入特征)是房子面积x,因变量是房价y.给定了一批训练集数据。
我们要做的是利用手上的训练集数据,得出x与y之间的函数f关系,并用f函数来预测任意面积x对应的房价。
假设x与y是线性关系,则我们可以接着假设一元线性回归函数如下来代表y的预测值:
其中一个办法是,利用微积分里的梯度下降!
梯度下降的概念可查看高等数学下册!
梯度下降算法:(alpha是自定义的,叫learning rate,设得值太大,可能永远无法收敛,设得太小,则收敛会很慢很慢)
循环直到收敛{
}
对于线性回归模型,成本函数的导数如下: (theta 0 对应的x为常量1)
一般程序里会写明最多循环次数以及收敛条件(如cost function值小于power(10,-3)时认为成功收敛).若能自动收敛,甚好,若不能,则循环指定次数后,强行退出。此时,你需要调参数alpha或者重新慎视假设模型!
另一种方法是Normal Equation!
直接用矩阵的运算求出最佳的theta值。套现成公式,就能求得theta,此公式的原理,以后再补!
X是矩阵,代表训练集,每一行是一个样本的各特征值。y是个向量,对应每个样本的结果值。
梯度下降与Normal Equation的对批:
Gradient Descent | Normal Equation |
自定义alpha | 不需要定义alpha |
盾环N次才能得到最佳theta值 | 不需要任何循环操作 |
特征个数非常大时,也适用 | X的转阵与逆矩阵的计算量很大, 导致特征个数多时,会很慢,适用于 特征个数小于100000时使用 |
需要feature scaling | 不需要feature scaling |
多元线性回归(Linear Regression with Multiple Variables)
跟一元线性回归的参数回归方式如出一辙,唯一区别在回归函数的假设上:
多元,故名思义,就是说有多个特征做为输入。那问题就来了,若多个特征的表达值的范围不一样,会有什么影响和后果?比如,继续拿预测房价作为例子。现在它的特征增加了,特征1是面积,特征2是房间数,特征3是房子的年龄。很明显,这三个特征的值的范围是有很大差异的。
特征1:100到300之间
特征2: 2到5之间
特征3:20到60年之间
若不做任何处理,则特征1和3对结果的影响远大于特征2,而可能扭曲了真实情况下,各特征在最终结果中所应占的权重比例。
所以,一般情况下,特征与特征之间的值变化范围差异过大时,我们用
feature scaling的手段来规范化特征值,使每个特征的特征值都处于-1至1之间。
Feature Scaling
feature scaling的方法可自定义,常用的有:
1) mean normalization (or standardization)
(X - mean(X))/std(X)
2) rescaling
(X - min) / (max - min)
先下这儿。接下来写逻辑回归!