Logistic Regression(逻辑回归)
分类是机器学习的一个基本问题, 基本原则就是将某个待分类的事情根据其不同特征划分为两类.
- 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(逻辑回归)的更多相关文章
- Coursera DeepLearning.ai Logistic Regression逻辑回归总结
既<Machine Learning>课程后,Andrew Ng又推出了新一系列的课程<DeepLearning.ai>,注册了一下可以试听7天.之后每个月要$49,想想还是有 ...
- Logistic Regression逻辑回归
参考自: http://blog.sina.com.cn/s/blog_74cf26810100ypzf.html http://blog.sina.com.cn/s/blog_64ecfc2f010 ...
- Logistic Regression(逻辑回归)(二)—深入理解
(整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 上一篇讲解了Logistic Regression的基础知识,感觉 ...
- 机器学习简要笔记(五)——Logistic Regression(逻辑回归)
1.Logistic回归的本质 逻辑回归是假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度上升/下降法来求解参数,从而实现数据的二分类. 1.1.逻辑回归的基本假设 ①伯努利分布:以抛硬币为例 ...
- Deep Learning 学习笔记(4):Logistic Regression 逻辑回归
逻辑回归主要用于解决分类问题,在现实中有更多的运用, 正常邮件or垃圾邮件 车or行人 涨价or不涨价 用我们EE的例子就是: 高电平or低电平 同时逻辑回归也是后面神经网络到深度学习的基础. (原来 ...
- 【原】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 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 6_Logistic Regression 逻辑回归
Lecture6 Logistic Regression 逻辑回归 6.1 分类问题 Classification6.2 假设表示 Hypothesis Representation6.3 决策边界 ...
- 机器学习之LinearRegression与Logistic Regression逻辑斯蒂回归(三)
一 评价尺度 sklearn包含四种评价尺度 1 均方差(mean-squared-error) 2 平均绝对值误差(mean_absolute_error) 3 可释方差得分(explained_v ...
- 吴恩达深度学习:2.1Logistic Regression逻辑回归及其损失函数
1.Logistic Regression是一个二元分类问题 (1)已知输入的特征向量x可能是一张图,你希望把它识别出来,这是不是猫图,你需要一个算法,可以给出预测值,更正式的y是一个概率,当输入特征 ...
随机推荐
- 内联元素于与块元素的转换 相对定位、绝对定位以及fixed定位 Z轴覆盖
今天上午学习了内联元素于与块元素的转换 个人觉的display:none将元素非常好用,可以配合当鼠标放到这里会出现. 转换成行内元素display: inline; 转换成块元素displ ...
- web爬虫,BeautifulSoup
BeautifulSoup 该模块用于接收一个HTML或XML字符串,然后将其进行格式化,之后遍可以使用他提供的方法进行快速查找指定元素,从而使得在HTML或XML中查找指定元素变得简单. 1 2 3 ...
- flume安装配置
1 下载安装包并解压 下载地址:http://flume.apache.org/download.html 解压:tar zxvf apache-flume-1.8.0-bin.tar.gz 2 配置 ...
- ubuntu18.04 配置chrome ss
为了FQ 不FQ不行啊 安装shaowsocks 1. 用实验室的服务器 sslocal -c xxx.json 2. 下载SwitchyOmega插件 链接: https://pan.baidu.c ...
- robotframework之滚动条
在测试过程中遇到侧边栏以及下拉框中元素超过div长度时,会自动增加滚动条 网上对于robotframework中的滚动条信息只有: Execute Javascript document.docume ...
- maya_help()验证编程过程中模块导入的情况
import rigLib reload(rigLib.base.control)spine = rigLib.base.control.Control( prefix = 'spine1') hel ...
- Game Development Patterns and Best Practices (John P. Doran / Matt Casanova 著)
https://github.com/PacktPublishing/Game-Development-Patterns-and-Best-Practices https://github.com/m ...
- oracle工具sqluldr2和sqlldr的使用
在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:1. 逐条insert -- 只适用少量数据更新 ALTER TABLE order_items DISAB ...
- http请求方法之options请求方法
需预检的请求”要求必须首先使用 OPTIONS 方法发起一个预检请求到服务器,以获知服务器是否允许该实际请求. https://developer.mozilla.org/zh-CN/docs/W ...
- python-简单的登陆接口
# 工作需求2 编写登陆接口(1输入用户名密码 2认证成功后显示欢迎信息 3输错三次后锁定)# 实现思路 1.用户名和密码是否正确,全部正确可正常登陆 输错三次无法登陆 2.是否已经注册 未注册 无法 ...