机器学习实战第五章Logistic回归

def gradAscent(dataMatIn, classLabels):
    dataMatrix = mat(dataMatIn)             #convert to NumPy matrix
    labelMat = mat(classLabels).transpose() #convert to NumPy matrix
    m,n = shape(dataMatrix)
    alpha = 0.001
    maxCycles = 500
    weights = ones((n,1))
    for k in range(maxCycles):              #heavy on matrix operations
        h = sigmoid(dataMatrix*weights)     #matrix mult
        error = (labelMat - h)              #vector subtraction
        weights = weights + alpha * dataMatrix.transpose()* error #matrix mult
    return weights

这是书中梯度上升算法的代码,但看到倒数第三行和倒数第二行的时候就懵逼了,书中说这里略去了一个简单的数据推导,嘤嘤嘤,想了一会没想出来,于是乎就百度看看大神的解释,这是找到的一篇解释的比较好的,仔细一看发现是在Ag的机器学习视频中讲过的,忘了。。。

Sigmoid函数: $g(z)=\frac{1}{1+e^{-z}}$

  $h_{\theta }(x)=g(\theta ^{T}x)$

这里$\theta$和书中w一样,表示系数

代价函数如下,代价函数是用来计算预测值(类别)与实际值(类别)之间的误差的

  $cost(h_{\theta} (x),y)=\left\{\begin{matrix}
  -log(h_{\theta}(x)), y=1\\
  -log(1-h_{\theta}(x)), y=0\end{matrix}\right.$

写在一起表示为:

  $cost(h_{\theta} (x),y)=-ylog(h_{\theta}(x))-(1-y)log(1-h_{\theta}(x))$

总体的代价函数为:

  $J(\theta)=\frac{1}{m}\sum_{m}^{i=1}cost(h_{\theta} (x^{(i)}),y^{(i)})=\frac{1}{m}\sum_{m}^{i=1}-y^{(i)}log(h_{\theta}(x^{(i)}))-(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))$

要使误差最小,即求$J(\theta)$最小,也可以转化成就$-J(\theta)$的最大值,可以用梯度上升算法来求最大值,

    $\theta := \theta+ \alpha \frac{\partial J(\theta )}{\partial \theta_{j}}$

下面是推导过程:

  

所以权重的迭代更新公式为:

  $\theta_{j} = \theta_{j}+ \alpha \sum_{m}^{i=1}(y_{i}-h_{\theta}(x^{(i)}))x^{(i))}$

原文地址:https://www.cnblogs.com/weiququ/p/9414746.html

时间: 2024-10-19 17:19:43

机器学习实战第五章Logistic回归的相关文章

机器学习实战3:逻辑logistic回归:病马实例

本文介绍logistic回归,和改进算法随机logistic回归,及一个病马是否可以治愈的案例.例子中涉及了数据清洗工作,缺失值的处理. 一 引言 1 sigmoid函数,这个非线性函数十分重要,f(z) = 1 / (1 + e^(-z) ), 画图如下: 这个函数可以很好的把数轴上的值映射到0,1区间,所以很好的解决了分类问题.下面是代码: def sigmoid(inX): return 1.0/(1+exp(-inX)) 2 梯度上升法是我们常用的最优化方法,公式.就是说沿这梯度方向迭代

机器学习实战第8章预测数值型数据:回归

1.简单的线性回归 假定输入数据存放在矩阵X中,而回归系数存放在向量W中,则对于给定的数据X1,预测结果将会是 这里的向量都默认为列向量 现在的问题是手里有一些x和对应的y数据,怎样才能找到W呢?一个常用的方法是找到使误差最小的W,这里的误差是指预测y值与真实y值之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消,所以我们采用平方误差. 平方误差可以写做: 用矩阵表示可以写成 使用上式对w进行求导: 具体可参考https://blog.csdn.net/nomadlx53/articl

机器学习实战第7章——利用AdaBoost元算法提高分类性能

将不同的分类器组合起来,这种组合结果被称为集成方法或元算法(meta-algorithm). 使用集成方法时会有多种形式:(1)可以是不同算法的集成(2)可以是同一种算法在不同设置下的集成(3)数据集不同部分分配给不同分类器之后的集成,等等 接下来介绍基于同一种分类器多个不同实例的两种不同计算方法bagging和boosting 1. bagging 原理:从原始数据集选择S次后得到S个新数据集的一种技术.新数据集和原数据集的大小相等.每个数据集都是通过在原始数据集中随机选择一个样本来进行替换而

2017.2.28 activiti实战--第五章--用户与组及部署管理(二)部署流程资源

学习资料:<Activiti实战> 第五章 用户与组及部署管理(二)部署流程资源 内容概览:讲解流程资源的读取与部署. 5.2 部署流程资源 5.2.1 流程资源 流程资源常用的有以下几种: 1 流程定义文件:拓展名为bpmn20.xml和bpmn 2 流程定义的图片:拓展名为PNG 3 表单文件:拓展名为form 4 规则文件:拓展名为drl 部署流程资源的时候,要注意一点: 引擎会根据不同的拓展名进行不同的处理.bpmn或bpmn20.xml类型的文件,会在ACT_RU_PROCDEF(流

2017.2.20 《activiti实战第五章--用户与组及部署管理》(一)用户与组

学习资料:<Activiti实战> 第五章 用户与组及部署管理(一)用户与组 内容概览:讲解activiti中内置的一套用户.组的关系,以及如何通过API添加.删除.查询. 5.1 用户与组 5.1.1 用户 1 public class IdentityServiceTest{ 2 @Rule 3 public ActivitiRule ar = new ActivitiRule();//使用默认的acitiviti.cfg.xml作为参数 4 5 @Test 6 public void t

第六章 logistic回归与最大熵模型

1.logistic回归是统计学习中的经典分类方法. 最大熵模型:最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型. 两者都是对数线性模型. 2.二项logstic分类模型:用于二类分布. 多项logstic分类模型:用于多类分布. 3.最大熵模型(maximum entropy model):是由最大熵原理推导实现. 4.熵最大原理:学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型. 5.当X服从均匀分布时,熵最大. 6.改进的迭代尺度法(improve

机器学习二(线性回归和Logistic回归)

前言 由于本部分内容讲解资源较多,本文不做过多叙述,重点放在实际问题的应用上. 一.线性回归 线性回归中的线性指的是对于参数的线性的,对于样本的特征不一定是线性的. 线性模型(矩阵形式):y=XA+e 其中:A为参数向量,y为向量,X为矩阵,e为噪声向量. 对于线性模型,通常采用最小二乘法作为其解法(可通过最大似然估计推得). 最小二乘法是通过最小化误差的平方和寻找数据的最佳函数匹配. 最小二乘法的解法有很多种,通常有: 解析法即求通过函数的导数为0确定函数的极值点 矩阵法---解析法的矩阵形式

机器学习实战第8章预测数值型数据:回归2

1. Shrinkage(缩减) Methods 当特征比样本点还多时(n>m),输入的数据矩阵X不是满秩矩阵,在求解(XTX)-1时会出现错误.接下来主要介绍岭回归(ridge regression)和前向逐步回归(Foward Stagewise Regression)两种方法. 1.1 岭回归(ridge regression) 简单来说,岭回归就是在矩阵XTX上加上一个从而使得矩阵非奇异,进而能进行求逆.其中矩阵I是一个单位矩阵,是一个调节参数. 岭回归的回归系数计算公式为: 岭回归最先

机器学习实战之第一章 机器学习基础

第1章 机器学习基础 机器学习 概述 机器学习就是把无序的数据转换成有用的信息. 获取海量的数据 从海量数据中获取有用的信息 我们会利用计算机来彰显数据背后的真实含义,这才是机器学习的意义. 机器学习 场景 例如:识别动物猫 模式识别(官方标准):人们通过大量的经验,得到结论,从而判断它就是猫. 机器学习(数据学习):人们通过阅读进行学习,观察它会叫.小眼睛.两只耳朵.四条腿.一条尾巴,得到结论,从而判断它就是猫. 深度学习(深入数据):人们通过深入了解它,发现它会'喵喵'的叫.与同类的猫科动物