方法一: Cost function
Gradient Descent
x0默认为1
Feature Scaling
Idea:Make sure feature are on a similar scale.Get every feature into approximately a (-1<=xi<1) range.(一般正负3之间即可)
目的:将梯度下降的速度变得更快,收敛所需的迭代次数更少。
E.g. x1 = size(0-2000 feet2) x2 = number of dedrooms(1-5)
其等值线图为竖直椭圆,梯度下降很慢
将其转为 x1 = size/2000 x2 = number/5
- Mean normalization(均值归一化)
让所有特征值的均值接近0(Do not allpy to x0=1)
方法:x(i) = (x(i) - u(i)) / s(i) ----> u(i):训练集中x(i)的平均值/s(i)训练集中x(i)的范围max-min
Learning rate
Making sure gradient descent is working correctly.
Example automatic convergence test:Declare convergence if J(代价函数) decreases by less than 10^-3 in one iteration.
For sufficiently small α,J(cost function) should decrease on every iteration.(对于足够小的学习速率,代价函数值会在每一次迭代之后减小)
But if α is too small, gradient descent can be slow to converge.
To choose α,try …,0.001,0.01,0,1,1,…
Features and polynomial regression(多项式回归)
对于多个特征,我们可以定义出更为合适的新特征。E.g. 房屋价格预测,已知特征长和宽,转化为新特征面积。
思想:线性回归的局限性是只能应用于存在线性关系的数据中,但是在实际生活中,很多数据之间是非线性关系,虽然也可以用线性回归拟合非线性回归,但是效果将会很差,这时候就需要对线性回归模型进行改进,使之能够拟合非线性数据。(二次项,三次项等)
方法二:Normal equation(正规方程)
提供了一种直接求 θ 的解析方法,一次性得到 θ 的最优解,无需迭代。
对J(θ)求偏导 = 0;(for every j)
矩阵:
X 为m*(n+1)维矩阵 Y为m维向量
推到:X * θ = Y -----> θ = (X^-1) * Y (X不一定是方阵,而只有方阵才具有可逆的性质,故转化为(X^T) * X)
针对(X^T) * X 不可逆:这种情况很少发生,如果发生,使用pinv(伪逆函数)依旧可以算出θ。
出现(X^T) * X 不可逆的原因一般两种:
正规方程与梯度下降对比: