cost function:假设我们的训练集中有n条数据,每个数据有m个feature,cost function就是hypothesis减去真实值再平方再除以2m。
Gradient descent 就是将cost function对 parameter (我们用希腊符号 theta 表示)求导之后乘以 learning rate(我们用希腊字母alpha表示),再用原来parameter的值减掉它,就得到一次update的值,反复如此,直至converge。
Multiple Gradient Descent 就是 gradient descent 应用于多个 feature。针对于常数项 parameter,我们假设它对应于一个值为1的feature。
feature scaling 是针对 gradient descent 的一个小技巧,因为各个feature的取值范围差异很大,很明显,范围大的 feature 它的 parameter 范围就小,又由于它的 feature 大,观察 gradient descent 式子可以发现这会导致一次下降可能过大,就会在最优解附近产生震荡,导致迭代次数过多。【个人理解,还需验证】
而feature scaling 将每个 feature 减去平均值后再除以 range (最大值减去最小值)就能得到一个接近于 [-1, +1] 的范围,这样可以提高迭代速率,这丫就是 mean normalization。
learning rate: 如果 learning rate 过小,就会收敛的过于缓慢,如果过快,就可能让结果发散(小窍门:让 learning rate 按照 1 -- 0.3 -- 0.1 -- 0.03 -- 0.01 - 0.003 -----)这样3倍的速率进行调试。
polynomial regression:除了线性回归,我们还可以采用多项式回归,比如某个 feature 的平方,立方,开方等等。但是要注意的是,feature scaling 也要随着 feature 一样变化。
Normal Equation:gradient descent的一个替代方案,就是将 features 用一个 m*(n+1)的矩阵X表示,将结果用一个 m*1 的向量 y 表示,通过下面的式子算出 theta 向量。
parameter theta = X的转置乘以 X,再取结果的逆矩阵,再乘以 X 的转置矩阵,最后乘以 y。
gradient descent 和 normal equation 的比较:
Normal Equation Noninvertibility:如果说 X的转置乘以X 所得到的矩阵不可逆怎么办?在 octave 中,我们有 inv()进行常规的逆矩阵运算,也有 pinv()在不可逆的情况下仍然让我们得到 theta。
是那些原因可能造成不可逆的问题呢:
- 重复的 feature。比如说有两个 feature 分别是房子的平方米面积和房子的平方英尺面积,这会导致矩阵的有一列是另外一列的倍数。这就导致了矩阵不可逆。
- 样本数量 m 小于等于 feature 数量 n
解决办法:删减 feature,或者 regularization