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是一个概率,当输入特征 ...
随机推荐
- AGC002 F - Leftmost Ball
貌似哪里讲过这题..总之当时掉线了(理解能力又差水平又低选手的日常).. 看看题目,应该是DP. 尝试了几次换状态,毫无思路.那我们就来继续挖掘性质吧...为了更直观,我们令第i个出现的球颜色就是i( ...
- Mybatis:resultMap的使用总结
resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中. resultMap包含的元素: <!--column不做限制,可以为任意 ...
- C# CRC - 16
using System; static class Program { static void Main() { string input = "8000"; var bytes ...
- 通过type类型 新建对象
Activator根System命名空间中的类非常强大. 将参数传递给构造函数等有很多重载.查看以下文档: http://msdn.microsoft.com/en-us/library/system ...
- elasticsearch -- kibana安装配置
Kibana 是为Elasticsearch设计的开源分析和可视化平台,你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互.你可以很容易实现高级的数据分析 ...
- Web高级 Eventloop和事件执行顺序
1. EventLoop 1.1 调用栈 当一个方法执行时内部调用另外的方法,则会形成调用栈,如图: 1.2 任务队列 JavaScript有一个主线程执行当前任务,主线程的代码同步执行,并把遇到的事 ...
- 关于Oracle字符集在dmp文件导入导出中的乱码影响
Oracle 在进行dmp备份和还原的时候,服务器端字符集和客户端字符集会对这个过程有较大影响,特别是数据表中存储了中文.存储过程中使用了中文编码(注释)的时候,如果没有处理好字符集的问题,在进行还原 ...
- SSH 服务配置
服务端 启用使用密钥登录 登录到服务器 检查是否存在.ssh文件夹,如果没有则创建该文件夹 $ mkdir ~/.ssh $ chmod 700 ~/.ssh 检查公钥列表文件是否存在,如果没有则创建 ...
- 学习笔记之X分钟速成Python3
X分钟速成Python3 https://mp.weixin.qq.com/s/QT5sR0nUKgJYsYgrj2SleA https://learnxinyminutes.com/docs/zh- ...
- Docker使用Link与newwork在容器之间建立连接
一,使用 --link容器互联 docker 默认使允许container 互通的(通过-icc=false 关闭互通)同一个宿主机上的多个docker容器之间如果想进行通信,可以通过使用容器的ip地 ...