首先明白一个概念,什么是逻辑回归;所谓回归就是拟合,说明x是连续的;逻辑呢?就是True和False,也就是二分类;逻辑回归即使就是指对于二分类数据的拟合(划分)。

  那么什么是模型呢?模型其实就是函数。函数是由三部分组成:自变量,因变量以及参数。

  此次采用模型是sigmoid函数:

  sigmoid函数的精妙之处就在于在x=0点出是一个分水岭,x>0y值去1,x<0 y值取0。所以sigmoid函数很像是跃阶函数。

  z代表什么?则代表分类的数学表达式,是函数的右侧;

  那么怎么使用sigmoid阶函数?sigmoid函数目标情况是当传入z,返回值是1或者0;但是实际情况因为参数(w0,w1..wn)都是估计状态,基本都是不为0,1;通过样本分类(0,或者1)和sigmoid值相减,获取一个差量,下面就是调整参数(weight),让数据不断合理;

from numpy import mat
from numpy import shape
from numpy import ones def gradientAsendent(dataset, labels, time):
  dataMat=mat(dataset)
  labelMat=mat(labels).transpose()
  m,n=shape(dataMat)
  weights=ones((n,1)) #这个写法(两层括号)是创建一个矩阵
  alpha=0.001 #学习率rate
  maxtimes=time
  for i in range(maxtimes):
    #sigmod函数解决的分类问题,dataMat*weights返回的是一个矩阵,行数=datamat,列数=weights
    h=sigmod(dataMat*weights)
    # 合心意应该error=0,h应该是0,1的数组;但是sigmod返回的分类一定不是正好0,1,而是有差距的
    # 目标就是通过调整系数(weights)来减少减少error的和0的差距,也是让h里面的数据不断的接近0,1
    # 这里注意h是永远绝对值小于等于1的,从sigmond函数图可以看到,值域的取值范围是[0,1]
    error=(labelMat - h)
    # 如果有偏差了,就添加/减小参数值
    weights=weights+alpha*dataMat.transpose()*error
return weights

  首先要明确,梯度下降算法的目的是求解出系数w1,w2...wn,也就是代码中的weights变量,是一个数组,注意,这里和我们之前的数学里面不是很痒,我们之前是研究系数已知,求解自变量(系数是固定的,自变量是有多个值, 不固定的),但是在机器学习里面,我们是自变量已知,因变量已知,他们就是提供的样本,训练模型的模型的目的求解出系数,所以这个理解思路要调整一下。那么怎么求呢?梯度下降过程是一个试错过程,看一下上述的代码中,初始化的时候所有的参数是1,然后逐渐的调整系数值,每次调整一次系数值就是训练一个新的模型,然后再把样本带进去看看错误率怎么样,基于本次的错误率进行调整系数。

  注意,敲黑板了,在我们计算错误率的时候,其实就是在使用损失函数,所谓损失函数就是新模型。损失函数一种表达方式是求偏导数(https://www.cnblogs.com/xiashiwendao/p/9470684.html)),另外一种简单的方式本文中提到的直接采用sigmod函数和分类结果做比值;如果是求偏导数的公式如下:

  在几何图形上,我们可以将求偏导的过程理解为求解切线上面的法线向量(有方向,有大小,大小为步长);这里就有一个问题,如果是系数取值范围差别比较大,就会导致梯度的下降变慢,为什么呢?因为如下图右图所示,边缘的某点为基础进行梯度下降,最初是的切线是几乎水平,之后,越往里面切线越偏向右边,法线将会逐渐倾向原点,最后到达原点;但是过程相比于左图过程就要漫长的多,如果步长一样的话,那么右图(椭圆)下降速度远小于左图;这个示例说明的两个系数的场景,如果是多个系数,互相影响,将会是在空间上的曲折,对于梯度下降影响将会更大。那么是不是需要做缩放呢?怎么做缩放?这就牵涉到了特征伸缩问题。

逻辑回归(logic regression)的分类梯度下降的更多相关文章

  1. ML 逻辑回归 Logistic Regression

    逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...

  2. 机器学习 (三) 逻辑回归 Logistic Regression

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  3. 机器学习方法(五):逻辑回归Logistic Regression,Softmax Regression

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 前面介绍过线性回归的基本知识, ...

  4. 机器学习总结之逻辑回归Logistic Regression

    机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...

  5. Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)” 清晰讲解logistic-good!!!!!!

    原文:http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D ...

  6. 逻辑回归(Logistic Regression)详解,公式推导及代码实现

    逻辑回归(Logistic Regression) 什么是逻辑回归: 逻辑回归(Logistic Regression)是一种基于概率的模式识别算法,虽然名字中带"回归",但实际上 ...

  7. 机器学习(四)--------逻辑回归(Logistic Regression)

    逻辑回归(Logistic Regression) 线性回归用来预测,逻辑回归用来分类. 线性回归是拟合函数,逻辑回归是预测函数 逻辑回归就是分类. 分类问题用线性方程是不行的   线性方程拟合的是连 ...

  8. 机器学习入门11 - 逻辑回归 (Logistic Regression)

    原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...

  9. 大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)

                                                        大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5) 上一节中,我们讲 ...

  10. 逻辑回归和sigmoid函数分类

    逻辑回归和sigmoid函数分类:容易欠拟合,分类精度不高,计算代价小,易于理解和实现 sigmoid函数与阶跃函数的区别在于:阶跃函数从0到1的跳跃在sigmoid函数中是一个逐渐的变化,而不是突变 ...

随机推荐

  1. C#窗体布局技巧

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  2. mysql主从复制-读写分离-原理

    Mysql主从复制和读写分离 在实际的生产环境中,如果对mysql数据库的读和写都在一台数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是不能满足实际需求的.因此,一般通过主从复制 ...

  3. django面试题必问

    1.谈谈你对http协议的认识. HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使 ...

  4. 2019-03-18-day013-装饰器与内置函数

    上周回顾 函数: def 函数名(): 缩进 函数体 闭包: a = 50 def func(): a = 10 def avg(): print(a) 函数名的使用: 当做值被赋值给变量 当做返回值 ...

  5. HDU 6049 17多校2 Sdjpx Is Happy(思维题difficult)

    Problem Description Sdjpx is a powful man,he controls a big country.There are n soldiers numbered 1~ ...

  6. 小白学习Python遇到的一些2.7与3.X之间的不同问题

    1.输入字母出错问题 原本跟着视频一起学习,currency_str_value=input(‘请输入带单位货币金额’) 但是运行的时候,输入数字就没有问题,只要带上了字母就会报错,后来百度,pyth ...

  7. SQL注入之Sqli-labs系列第二十九关(基于WAF防护的单引号报错注入)

    开始挑战第二十九关(Protection with WAF) 0x1查看源码 (1)login.php页面存在防护,只要检测到存在问题就跳转到hacked.php页面(其他信息看备注) 0x2 for ...

  8. ssh和ejb的区别

    转自:https://zhidao.baidu.com/question/137154342.html SSH(Struts,Spring,Hibernate) Struts进行流程控制,Spring ...

  9. Gym 101889:2017Latin American Regional Programming Contest(寒假自训第14场)

    昨天00.35的CF,4点才上床,今天打的昏沉沉的,WA了无数发. 题目还是满漂亮的. 尚有几题待补. C .Complete Naebbirac's sequence 题意:给定N个数,他们在1到K ...

  10. PTA 6-12 (二叉树的递归删除)

    BinTree Insert( BinTree BST, ElementType X ) { if (BST==NULL) { BinTree tmp=(BinTree)malloc(sizeof(s ...