分类是机器学习的一个基本问题, 基本原则就是将某个待分类的事情根据其不同特征划分为两类.

  • Email: 垃圾邮件/正常邮件
  • 肿瘤: 良性/恶性
  • 蔬菜: 有机/普通

  对于分类问题, 其结果 y∈{0,1}, 即只有正类或负类. 对于预测蔬菜是否为有机这件事, y = 0表示蔬菜为普通, y= 1表示蔬菜为有机.


  逻辑回归是分类问题中的一个基本算法, 它的猜想函数hθ(x) = g(θT*x)

  其中, g(z) = 1 / (1+e-z), 该函数称为sigmoid函数或logistic函数, 是一个增函数,输出映射g(z)∈[0,1].

  hθ(x)表示当输入为x, (权重)参数为θ时, 预测y=1的概率.


代码实现:

function g = sigmoid(z)
%SIGMOID Compute sigmoid function
% g = SIGMOID(z) computes the sigmoid of z.

g = zeros(size(z));

for i = 1:size(z,1)
  for j = 1:size(z,2)
    g(i,j) = 1/(1+e^(-z(i,j)));
  endfor
endfor

end


  对于逻辑回归的猜想函数hθ(x) = g(θT*x), 当θT*x = 0时, hθ(x) = 0.5. 而我们规定当hθ(x) >= 0.5, 即θT*x >=0时, 预测结果 y =1, 当hθ(x) <0.5时,预测结果 y= 0.

  因此, 通过给定的权重参数矩阵与特征值, 可以计算出该预测函数的决策边界 , 通过这条边界即可将问题进行分类.


  逻辑回归算法的代价函数表示当预测值与实际值产生偏差时所承受的惩罚大小, 公示表示为cost(hθ(x), y) = -log(hθ(x)), if y =1, -log(1-hθ(x)), if y = 0.

  当y=1时,假定这个样本为正类。如果此时hθ(x) = 1,则对这个样本而言的cost=0,表示这个样本的预测完全准确。但是如果此时预测的概率hθ(x) = 0,那么cost→∞。直观解释的话,由于此时样本为一个正样本,但是预测的结果P(y=1|x;θ) = 0, 也就是说预测 y=1的概率为0,那么此时就要对损失函数加一个很大的惩罚项。当y = 0时, 道理相同.


  为了获得更准确的分类决策边界, 我们需要调节代价函数到最小值, 这时, 预测值与实际结果间偏差最小. 为了最小化代价函数, 我们需要调节参数θ. 比较常用的方法为梯度下降法.

  梯度下降是迭代法的一种, 其计算过程就是沿梯度下降的方向求解极小值. 

  逻辑回归代价函数J(θ):

  为了最小化J(θ), 需要不断重复减小θ的值直到J(θ)收敛:

  其中α为学习速率, 即每次下降的步长大小, 如果α过于大, 可能导致无法收敛, 如果α过于小, 可能导致收敛速度过慢.


代码实现:

function [J, grad] = costFunction(theta, X, y)
%COSTFUNCTION Compute cost and gradient for logistic regression
% J = COSTFUNCTION(theta, X, y) computes the cost of using theta as the
% parameter for logistic regression and the gradient of the cost
% w.r.t. to the parameters.

% Initialize some useful values
m = length(y); % number of training examples

J = 0;
grad = zeros(size(theta));

Jtmp=0;
h= zeros(m,1);

%step1:compute hx
hx = X * theta;

%step2:compute h(hx)
h = sigmoid(hx);

%step3:compute cost function's sum part
for i=1:m,
  Jtmp=Jtmp+(-y(i)*log(h(i))-(1-y(i))*log(1-h(i)));
endfor
J=(1/m)*Jtmp;

%step4:compute gradient's sum part 
sum1 =zeros(size(X,2),1);%#features row
for i=1:m
  sum1 = sum1+(h(i)-y(i)).*X(i,:)';
endfor

grad= (1/m)*sum1;

end

  

Logistic Regression(逻辑回归)的更多相关文章

  1. Coursera DeepLearning.ai Logistic Regression逻辑回归总结

    既<Machine Learning>课程后,Andrew Ng又推出了新一系列的课程<DeepLearning.ai>,注册了一下可以试听7天.之后每个月要$49,想想还是有 ...

  2. Logistic Regression逻辑回归

    参考自: http://blog.sina.com.cn/s/blog_74cf26810100ypzf.html http://blog.sina.com.cn/s/blog_64ecfc2f010 ...

  3. Logistic Regression(逻辑回归)(二)—深入理解

    (整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 上一篇讲解了Logistic Regression的基础知识,感觉 ...

  4. 机器学习简要笔记(五)——Logistic Regression(逻辑回归)

    1.Logistic回归的本质 逻辑回归是假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度上升/下降法来求解参数,从而实现数据的二分类. 1.1.逻辑回归的基本假设 ①伯努利分布:以抛硬币为例 ...

  5. Deep Learning 学习笔记(4):Logistic Regression 逻辑回归

    逻辑回归主要用于解决分类问题,在现实中有更多的运用, 正常邮件or垃圾邮件 车or行人 涨价or不涨价 用我们EE的例子就是: 高电平or低电平 同时逻辑回归也是后面神经网络到深度学习的基础. (原来 ...

  6. 【原】Coursera—Andrew Ng机器学习—Week 3 习题—Logistic Regression 逻辑回归

    课上习题 [1]线性回归 Answer: D A 特征缩放不起作用,B for all 不对,C zero error不对 [2]概率 Answer:A [3]预测图形 Answer:A 5 - x1 ...

  7. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 6_Logistic Regression 逻辑回归

    Lecture6 Logistic Regression 逻辑回归 6.1 分类问题 Classification6.2 假设表示 Hypothesis Representation6.3 决策边界 ...

  8. 机器学习之LinearRegression与Logistic Regression逻辑斯蒂回归(三)

    一 评价尺度 sklearn包含四种评价尺度 1 均方差(mean-squared-error) 2 平均绝对值误差(mean_absolute_error) 3 可释方差得分(explained_v ...

  9. 吴恩达深度学习:2.1Logistic Regression逻辑回归及其损失函数

    1.Logistic Regression是一个二元分类问题 (1)已知输入的特征向量x可能是一张图,你希望把它识别出来,这是不是猫图,你需要一个算法,可以给出预测值,更正式的y是一个概率,当输入特征 ...

随机推荐

  1. Backup&recovery备份和还原 mysql

    1.mysqldump 在日常工作中,我们会使用mysqldump命令创建sql格式的转储文件来备份数据库.或者我们把数据导出后做数据迁移,主备搭建等操作.mysqldump是一个逻辑备份工具,复制原 ...

  2. 在树莓派2或3的kali上 RCA(a/v connector)接口的正确使用方法(多图)(原创)

                                    AV接口又称(RCA),AV接口算是出现比较早的一种接口,它由黄.白.红三种颜色的线组成,其中黄线为视频,红色为左声道,白色为右声道. ...

  3. python随笔--复习专用

    <!doctype html> blockquote:first-child, #write > div:first-child, #write > figure:first- ...

  4. 多次ajax请求数据json出错!!

    问题描述: 1.对象数据存放在session中,每次从session中取数据 2.jsp初始化完毕调用ajax请求,返回的数据格式出错(返回部分数据,即丢失了部分数据) 解决方案:

  5. 简易Asset工作流

    前言: 当前比较主流的制作流程都可以按顺序细分为三个部分:资产环节(asset section),镜头环节(shot section),合成环节(composite section). 考虑到单一资产 ...

  6. 关于git merge,rebase合并的差别,以及*(no branch)的处理。

    1.merge 在上篇介绍分支的时候有简单的说了一下分支的创建和合并,当时合并就是写的merge,这是依据两个不同分支的最后一次提交的commit对象c5,c7和两个分支的交叉点的commit对象c3 ...

  7. POI 生成、导出Excel(包含多个sheet)带 图片

    1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ar ...

  8. bzoj5104: Fib数列

    Description Fib数列为1,1,2,3,5,8... 求在Mod10^9+9的意义下,数字N在Fib数列中出现在哪个位置 无解输出-1 Input 一行,一个数字N,N < = 10 ...

  9. truffle init 从零开始创建简单DApp项目

    下面的部分软件需要FQ.这里默认你已经会***,不懂的可以自己搜索解决. 软件安装 chrome浏览器 下载地址 metamask插件 在谷歌应用商店中搜索metamask ganche(图形版) 下 ...

  10. outlook 2013撤消已经发送的邮件

    使用Outlook 2013发送邮件的时候,发送后,发现邮件写错了或者其它原因需要撤消发送邮件,这里介绍一下.   工具/原料 outlook 2013 方法/步骤   需要打开已经发送的邮件   点 ...