梯度下降 && 线性回归 && 逻辑回归 && softmax
来源:互联网 发布:应用引擎怎么上传源码 编辑:程序博客网 时间:2024/04/30 08:39
生成模型和判别模型不同
判别方法:由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。典型的判别模型包括k近邻,感知级,决策树,支持向量机等。
生成方法:由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。
参考
梯度下降(上升)
概念
梯度下降法(Gradient decent),用来求函数的极小值,且是一种迭代算法,由于计算效率高,在机器学习中常常使用。
梯度下降法经常求凸函数(convex function)的极小值,因为凸函数只有一个极小值,梯度下降法求得的极小值就是最小值。
梯度上升法(Gradient ascent),用来求函数的极大值,两种方法原理一样,只是计算的过程中正负号不同而已。
梯度是一个矢量,方向导数是一个标量,梯度所指向的方向是方向导数最大的方向,且梯度的模和方向导数的最大值相等。
求梯度的方法很简单,对每一个自变量求偏导数,然后将其偏导数作为自变量方向的坐标即可。梯度的符号为∇,则函数f(x,y)的梯度为:
计算方法
先选择一个初始点,计算该点的梯度,然后按照梯度的方向更新自变量。
示例:
对应代码
if __name__ == "__main__": x = 3 y = x * x alpha = 0.1 count = 3 while (count > 0): x = x - alpha * 2 * x y = x * x count = count - 1 print x, y
线性回归
处理回归问题最朴素的方法。假设方程满足
损失函数为
线性回归有两种方式求解,一种是矩阵求逆求解。
另一种是梯度下降。
# -*- coding:utf-8 -*- # y=Wx b 放到其中统一处理x.shape=n+1# 梯度下降 最小二乘矩阵求解# SGD BatchGDimport numpy as npfrom sklearn import datasets# J=(y-wx)^2 J'=2x^T(y-wx) = 0 w=(xTx)^-1 * X^T * y# x 矩阵,一列代表一个样本 y一行 每个其中为分数# def leastSquare(x,y): return x.T.dot(x).I.dot(xx.T.dot(y))def myCost(w,x,y): return (w*x-y) * (w*x-y).Tdef myFunc(w,x): return w*xdef myFuncPrime(w,x,y): t=(y-w*x) return t * x.Tdef gradentDescend(x,y,alpha=0.01,epochs=10,eps=1e-3): # 生成随机w x=np.mat(x) y=np.mat(y) w=np.mat(np.random.rand(1,x.shape[0])) for loop in range(epochs): # print myFuncPrime(w,x,y) # 梯度下降,这里是+是因为导数前有负号 w=w + alpha * myFuncPrime(w,x,y) cost=myCost(w,x,y) print 'loop=%d,cost=%s,w=%r' %(loop,cost,w) if myCost(w,x,y) < eps: return w return wfrom matplotlib import pyplot as pltdef drawSetter(x,original,calc): ax=plt.subplot(111,projection='3d') #创建一个三维的绘图工程 #将数据点分成三部分画,在颜色上有区分度 ax.scatter(x[0],x[1],original,c='y') #绘制数据点 ax.scatter(x[0],x[1],calc,c='r') #绘制数据点 ax.set_zlabel('Z') #坐标轴 ax.set_ylabel('Y') ax.set_xlabel('X') plt.show()x=np.mat(np.random.rand(2,10))*10answ=np.random.rand(1,2)*10y=answ*xret=gradentDescend(x,y,0.001,10)drawSetter(x.tolist(),y.tolist(),(ret*x).tolist())
逻辑回归
处理的是在某条件下,一件事情的概率为多大。常用于预测疾病发生的概率。
这里计算的是在某种条件θ下,事情的可能性。
损失函数是cross-entropy ,通过最大似然推导
具体参考Link
即所有样本点出现概率最大。
正负样本为+1,-1所以可以化简仅和f(x)有关再用去对数将累乘化为累加。
同时因为sigmod有个比较好的特性
求导后w的更新就是
softmax
多分类
是逻辑回归扩展到多元的情况,深度学习中经常将其作为最后一层的输出softmax
- 梯度下降 && 线性回归 && 逻辑回归 && softmax
- 线性回归&梯度下降
- 梯度下降与逻辑回归
- 逻辑回归及梯度下降
- 梯度下降和逻辑回归
- 逻辑回归与梯度下降
- 逻辑回归与梯度下降
- 逻辑回归-梯度下降训练
- 梯度下降求解逻辑回归
- [笔记]线性回归&梯度下降
- 线性回归及梯度下降
- 线性回归与梯度下降
- 线性回归与梯度下降
- 线性回归及梯度下降
- [笔记]线性回归&梯度下降
- 线性回归与梯度下降
- 线性回归和梯度下降
- 线性回归-2-梯度下降
- 增强学习(Reinforcement Learning)
- freemarker中渲染是字符串的替换
- linux文件api
- 自定义条柱图(二)
- Windows文件夹目录快速访问
- 梯度下降 && 线性回归 && 逻辑回归 && softmax
- IDE:Ecplise部署已经部署过的weblogic
- 基于轻量级ORM框架Dapper的扩展说明
- Unity3D_混合树控制人物奔跑
- codeforces 849B
- 《算法(第四版)》 1.3.12
- 关于CSDN博客文章个数不更新的相关问题解答
- linux sed命令使用一些小问题整理
- 博弈基础