regression
单变量线性回归univariate linear regression
代价函数square error cost function : \(J(\theta)=\frac{1}{2m}\sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2\)
\(2m\)的\(2\)是为了消去后续求导时的\(2\)
其中单变量时 \(h_{\theta}(x) =\theta_0 + \theta_1 x\) (h是hypothesis的意思)
上标(i)是指第i组训练数据
梯度下降法gradient decent:
脑补一个三维图像:\(\theta_0,\theta_1,J(\theta)\)
\(\theta_i -= \alpha \frac{\partial}{\partial \theta_i}h(\theta)\)
(导为正数时,\(\theta\)应减小;导为负数时,\(\theta\)应增大。 陡的时候快,缓的时候慢)
随着过程的执行, 可以让\(\alpha\)递减去更好的接近(不过即使\(\alpha\)是定值也能走到局部最优点)
只要 \(\alpha\)不会过大 (过大时J可能甚至越大,脑补一个人在盆地两边跳来跳去越跳越高)
无论单变量还是多变量,这种线性回归代价函数一定是bowl shape
当J经过一次迭代后变化不超过原来的\(10^-3\)时认为converage(如果是陡完平一段继续陡怎么办?)
多变量线性回归multivariate linear regression
\(h_{\theta} = \theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n\) 其中\(x_0 = 1\)
\(J(\theta)=\frac{1}{2m}\sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2\)
\(\theta_j\) -= \(\alpha \frac{\partial}{\partial \theta_j}h(\theta) = \alpha \frac 1 m \sum_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_j\) (展开h,求偏导)
\(x^{(i)}_j\)表示第i组训练数据的第j个feature
(脑补表格:每列一个特征,最左添加一列\(x_0=1\),最后一列是标准值y,每行一个example)
令\(X\)为\(m\times(n+1)\)矩阵,\(Y\)为\(m\times1\)列向量
令\(theta\) 为\((n+1)\times1\)列向量,\(H\)为\(m\times1\)列向量
H= X * theta
del = H - Y
J = 1 / (2*m) * sum(del.^2)
theta -= alpha / m * (X’ * del)
为便于观察并减少迭代次数,我们需要对特征进行缩放,使其范围不至于过大,也不至于过小
例如\(\alpha\frac{x-min}{max-min}\), \(\alpha\frac{x-mean}{max-min}\) 具体情况而定
注意缩放后,predict时的特征也要对应用同种方式缩放
注意不要一个for循环过去把\(x_0\)也改了(另外注意octave是从一开始存的)
线性回归其他函数设计
如给定房子的长和宽和房价,特征不应是长和宽两个,而应该是占地面积
如给定数据点明显不是直线,可以考虑\(\theta_0 + \theta_1 x + \theta_2 x^2\)之类的,x是同一个feature, 令\(x_i\)为\(x^i\)转多变量问题
根号和ln其实长得很像
正规方程normal equation
公式:\(\theta = (X^TX)^{-1}X^TY\) (why?)
其中\(X\)为\(m*(n+1)\), \(Y\)为\(m*1\)
求逆即使是伪逆也能算对
使用时建议\(m>n\)
优势:不必要缩放features,不需要跑多次调整\(\alpha\)
效率比较:梯度下降(省去重复运算)是\(n*m*iter\),这个是\(n^3+n^2m\)。
n大的时候这个方法肯定不行。但一般来说n应该不大?m比较大?