机器学习阶段总结

                               **机器学习阶段总结 **

监督学习,无监督学习:监督学习是有’y’的,无监督学习是没有’y’的,前者类似于线性回归(BP神经网络?),后者类似于聚类分析。
求解线性回归的两种方法:
梯度下降(Gradient Dscent):就是通过对每个θ求偏导,求出每个能使J(θ)最小的那个值。
优点:
1.当变量很多的时候,计算速度和效果比Normal equation更好。
缺点:
1.容易陷入局部最优。
2.需要取a的值,比较主观,可能需要多次试错。
正规方程(Normal equation),就是通过最小二乘法来使J(θ)最小,其中,θ_i取A=(X’X)-1Xy中的ai1。
优点:
1.直接通过最小二乘法计算,很客观,不需要自己取变量。
缺点:
1.当变量很多的时候,时间复杂度瞬间上升,计算时间可能会很长。
2.当变量很多,样本却比变量个数少的时候,X’X是一个奇异矩阵,用秩可证。这个时候就无法用这种方法了。
数据的预处理(Feature Scaling):
如果当x的一个变量很大,比如说范围为100000200000,而一个很小,比如说范围为0.010.05,当不进行处理就进行回归运算时,范围小的那个变量的影响很容易就被范围大的那个变量“覆盖”,究其根本,是因为这个时候范围大的那个变量,其方差动辄破万,而范围小的那个,方差却恨不得小于0.001,这个时候小范围的那个变量就对J(θ)贡献极小,相当于忽视了这个变量的作用,这是不可以的,因此,我们要对数据进行预处理。
预处理的两种方法:
一.(忘记叫啥名了):就是直接除以这组数的最大值,那么就可以化归到[-1,1]的范围内。
二.Mean Normalization:就是求出这一组数的平均值,再让这个数减去其平均值,再除以这组数中最大值与最小值的差,具体公式不再赘述。
Matlab代码实现:
我真的是被梯度下降的代码给难住了,我得再花点时间好好想想,从一元到多元,从线性到n次。
至于Normal equation,视频怎么也加载不出来,倒腾了好久,最后连代码教学也没看完,所以我就按着我自己的思路写了一些代码,才用最小二乘法求出了两个参数的值,感觉自己非常废柴,我知道可以用poltfit和polyval快速地拟合,但毕竟那个还没讲,我就没有用这两个命令。如下图
我准备继续研究这两个算法的代码,在之后的汇报中将我更好的代码实现上交。
以上。

你可能感兴趣的:(日记)