第二周:分类/聚类的区别
聚类只有{x},依据x直接得出可能的几组数据(一般基于距离进行分类)
分类有{x,y},依据y的结果进行分类(包括线性拟合、logistic、SVM等)
对于线性回归,可使用正规方程求解。具体证明过程详见:
http://www.cnblogs.com/hust-ghtao/archive/2014/03/04/3580188.html
大体过程可理解为对梯度公式(J(theta)求导结果)求导数
第三周:
线性方程和logistics方程的J函数表达形式一致。
论证过程详见:
http://blog.csdn.net/stdcoutzyx/article/details/9113681
注1:梯度下降主要有3种方法:
梯度下降Batch Gradient Descent
随机梯度下降:Stochastic Gradient Descent
小批量梯度下降Mini-batch Gradient Descent
注2:实际MATLAB应用的L-BFGS等方法应用了较为复杂的算法,可WIKI。
7.2:代价函数:
配置正则化后,theta必然小于原有的拟合结果的theta
正规方程通过添加参数的方式同样可解。同时还避免了pinv()函数不可逆的问题(但m<=n时,原矩阵不可逆)
正则表达式参见博文:
http://blog.csdn.net/zouxy09/article/details/24971995/
8.2 NN
加入a0、a0(2)的意义:
NN的每次计算的函数可以分为两步:
第一步是线性求解z;
第二步是z非线性变换为a
常见的NN的非线性的函数g包括:
SVM、sigmoid(logistic)、Relu、tanh、softmax等。
以下图OR函数为例,通过增加了a0这个参数,才能通过对输出值的调整,实现OR函数。
对于δ△的下标的定义的确认:
前向传播时:Θij:i是第一个输出,j是第x的输入(所以Θ2,3(2)就是第二层第三个元素转移到第三层第2个元素的Θ参数(特别说明:常数项的j是0)
反向传播时:
假设第二层 15个元素,第三层10个元素,则δ(3)是10*1的输出 δ(2)是15*1 ---15含常数项。
△ij(l)代表第l层的第i个单元受到l+1层的第j个参数影响导致的误差:
△7,3(2)代表第2层的第7个单元受到第3个参数(第三层)影响导致的误差:
参考前述计算J(Θ)的过程,应该是a(2)是含常数项的;δ(3)不含常数项--即
i,3,(第三层)不含常数项----反向传播的后一层,logistic的输出
j,7,(第二层)不含常数项----反向传播的前一层,logistic的输入。 ---不含常数项的原因是常数项不可能有偏差(类似于l不可能为1,因为x不可能有δ)
δ2(3) =Θ12(3) *δ1(4)
第三层的第二个非常数变量的δ(偏差值)来自于第四次δ乘以第三层到第四层的Θ的参数
NN算法的最终目标:
给定x-y的组合:结合使用前向算法与后向算法,最小化(△,cost函数)
9.5 梯度检验
即使用 J(Θ+ε)-J(Θ-ε)/2ε计算得到双边导数(一般ε取0.0001)和真实的梯度下降方法计算出来的DVec做对比,判断误差程度。
说明:在真实的计算过程中:需要关闭checking算法,因为非常慢;而反向传播算法非常高效。
10.3 模型选择和交叉验证集
基础概念:使用 60%的数据作为训练集,使用 20%的数据作为交叉验证集,使用 20%的数据作为测试集
划分CV和test两个组的意义:
CV组确定d(模型参数),test组确定最终J(最终的cost结果)
可参考:http://blog.csdn.net/lhx878619717/article/details/49079785
可参考资料:
http://mooc.guokr.com/note/16274/
全课程笔记+录像