您的位置:首页 > 其它

ML--LR学习小结

2017-11-19 19:19 501 查看
上周学习的是决策树,这周接触了算是第一个最优化问题-Logistic Regression。逻辑斯提回归实际上是一种分类的算法,是广义上的线性回归,与感知机很相似。做个小小的预告,下篇将探讨支持向量机(SVM),算是近期ML学习的一个小的节点,因为接下来将精力转移到深度学习的入门。但仍会一如既往的在博客上更新一些想法,ML的学习不会结束,后面将进行更深入的学习。

线性回归

-线性模型形式简单、易于建模,许多功能更加强大的非线性模型在线性模型的基础上通过引入层级结构或高维映射得到,在神经网络入门的第一个实例XOR问题中有所体现。线性回归问题求解和LR回归类似,只是为了完成分类任务将任务的真实标记联系到单调可微函数上。这种分类学习的优点是无需知道先验分布,同时不仅可以得到“分类”,更可得到近似概率预测。此外对率函数是任意阶可导的凸函数,这个解释一定程度上解答了梯度下降为何可以很好得解决这个问题。

核心思想与推导

-利用回归模型y=wTx+b然后对似然函数求极值,转化成最优化问题。今早在看prml的时候在贝叶斯的介绍中提到了频概和贝叶斯的核心都是对这个条件概率,即围绕似然函数做文章。这里用梯度下降求解,随机梯度下降则是将整个数据集梯度的迭代换成随机数据的梯度求解,核心思想不变。



梯度下降的原理:



下面是梯度下降法的推导,可能有些错误,希望指正:



代码如下:

def gradAscent(dataMatIn, classLabels):
dataMatrix = np.mat(dataMatIn)
labelMat = np.mat(classLabels).transpose() #转置
m,n = np.shape(dataMatrix)
alpha = 0.001
maxCycles = 500#迭代次数
weights = np.ones((n,1))
for k in range(maxCycles):
h = sigmoid(dataMatrix*weights)
error = (labelMat - h)
weights = weights + alpha * dataMatrix.transpose()* error
return weights


学习过程中的思考

《实战》一书中迭代的代码并没有做公式上的解释,之前我对于LR回归的理解错误在于对梯度下降优化的目标函数理解有误。经过下午的反复思考结合蓝皮书上的似然函数以及梯度下降的基本原理做了简单的推导从而理解了这段代码。学习过程中一个模棱两可可能会导致对知识的一知半解。同时西瓜书上很好的解释了线性回归和LR回归的关系,以及和感知机之间的联系,三个算法的几乎完全一样,但目的和理解上略有不同。在看花书前馈神经网络的时候看到了线性模型的用处,希望以后可以在这里继续补充关于线性模型的进一步思考。张侃建老师上课提到了最优化问题中的全局最优和局部最优问题,也是这类算法需要着重解决的。还有很多思考没有继续,还有很多思考有待补充,先告一段落,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习