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

  • 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. mySql 数据库中间件 atlas的使用

    MySQL 中间件Atlas 实现读写分离 原创 MySQL 作者:神谕丶 时间:2016-08-05 17:07:51  2410  0 〇 Atlas架构介绍 <span "=&q ...

  2. gtest 三种事件机制

    前言: 1.首先说明gtest中事件的结构层次: 测试程序:一个测试程序只有一个main函数,也可以说是一个可执行程序是一个测试程序.该级别的事件机制会在程序的开始和结束执行. 测试套件:代表一个测试 ...

  3. Evosuite使用方法入门

    ​ Evosuite使用方法入门 ​ 1.简要介绍 EvoSuite开源工具可以基于Eclipse进行测试用例的自动生成,生成的测试用例符合Junit标准(直接生成可进行Junit的java文件),满 ...

  4. 03day->python基本数据类型

    基本数据类型 1.数字(int)     a = 5     a.bit_length()  # 查看数字实际用到的bit位 2.布尔值(bool)     用于条件判断 3.字符串(str)     ...

  5. my sql无法删除数据库

    mysql有时候会无法删除数据库,可以通过 1.select @@datadir 查询到文件目录 'C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Data\\' ...

  6. 关于memset的错误使用

    我们在使用memset进行初始化的时候,经常会使用这种方式,memset(a,0,sizeof(a)),这让我们误以为将其初始化其他值也可以,实际是错误的. void print_arr(unsign ...

  7. Laravel笔记--Eloquent 模型

    Eloquent 模型 默认继承use Illuminate\Database\Eloquent\Model类. 数据表名称与模型名称约定: 数据库的表名一般使用“蛇形命名法”命名.蛇形命名法要求单词 ...

  8. Kettle解决方案: 第一章ETL入门

    第一章ETL入门 1.1 OLPT和数据仓库对比 普通的事务系统和商业智能系统(BI)有什么区别? 1个独立的普通事务系统也被称为在线事务处理系统(OLTP) 商业智能系统也常被称为决策支持系统(DS ...

  9. 用c语言创建双向环形链表

    作为一个C开发人员,无论在求职笔试题中,还是在工程项目中,都会遇到用c语言创建双向环形链表.这个也是理解和使用c指针的一项基本功. #include<...>//头文件省略 typedef ...

  10. 使用VISIO远程服务器上的ORACLE数据库,反向生成数据库实体关系图

    反向即根据已有的数据库,生成ER图,很多工具都可以实现这一过程,如visio,powerdesigner等,下面文章记录一下我使用VISIO生成远程服务器上的一个数据库ER图过程,供以后自己参考. 1 ...