Stanford机器学习笔记-2.Logistic Regression
Content:
2 Logistic Regression.
2.1 Classification.
2.2 Hypothesis representation.
2.2.1 Interpreting hypothesis output.
2.3 Decision boundary.
2.3.1 Non-linear decision boundaries.
2.4 Cost function for logistic regression.
2.4.1 A convex logistic regression cost function.
2.5 Simplified cost function and gradient descent.
2.5.1 Probabilistic interpretation for cost function.
2.5.2 Gradient Descent for logistic regression.
2.6 Multiclass classification problem
key words: logistic regression, classification, decision boundary, convex function, One-vs-all
2.6 Multiclass classification problem
现实中也常遇到多分类问题(multiclass classification problem),如判断手写的数字是0~9中的哪一个就是一个有10类的问题。多分类学习的基本思路是“拆解法”,即将多分类任务拆为若干个二分类任务求解。具体来说,先对问题进行拆分,然后为拆分出的每个二分类任务训练一个分类器(也就是h(x));在预测时,对这些分类器的预测结果进行集成。
下面介绍一个常用的拆分策略-“One-vs-all”.
One-vs-all每次将一个类的样例作为正例(“1”),所有其他类作为反例(“0”)来训练n个分类器。在预测时,有两种情况看
- 情况1:若仅有一个分类器预测为正例,则对应的类别标记作为最终分类结果;
- 情况2:若有多个分类器预测为正例,则选择分类器的预测置信度最大的类别标记为分类结果,也就是
。
例如对于图2-10所示的多分类问题,我们先将三角形,正方形,叉分别标记为类别1,2,3,然后做如下划分:
- 先将三角形看作正例“1”,正方形和叉看作反例“0”,训练出hθ1(x)
- 再将正方形看作正例“1”,三角形和叉看作反例“0”,训练出hθ2(x)
- 最后将叉看作正例“1”,三角形和正方形看作反例“0”,训练出hθ3(x)
预测时每一个预测值都是一个形如[hθ1(x), hθ2(x), hθ3(x)]的向量。选出最大的h(x),它的上标就是对应的类别标记。例如若预测值为[0.13, 0.24, 0.79],对应的就是上文所说的情况1,即只有hθ3(x) > 0.5表现为正例,所以应该认为是属于3标记类,即为叉。若预测值为[0.12, 0.83, 0.56], 对应的就是上文所说的情况2,hθ2(x) 和hθ3(x)都大于0.5,都预测为正例,但hθ2(x)> hθ3(x),所以应该预测是属于2标记类,即为正方形。
图2-10
- C语言程序设计50例(一)(经典收藏)
- 程序员面试之软件测试面试问答
- 微信小程序,开发大起底
- Netty粘包拆包解决方案
- 为什么要用 Node.js
- JavaScript定时器:setTimeout与setInterval 定时器与异步循环数组
- 深入理解javascript原型和闭包(1)——一切都是对象
- 程序员面试50题(2)—二元查找树的后序遍历结果[数据结构]
- 总结了一些指针易出错的常见问题(一)
- Eureka 服务上下线监控
- 程序员面试50题(1)—查找最小的k个元素[算法]
- Netty4自带编解码器详解
- C和指针小结(C/C++程序设计)
- Netty-整合Protobuf高性能数据传输
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringMVC系列 MVC设计模式介绍+ SpringMVC的作用及其基本使用+组件解析+注解解析
- Spring系列之事务的控制 注解实现+xml实现+事务的隔离等级
- Greenplum集群扩容总结
- Leetcode刷题 237. 删除链表中的节点 两行代码实现
- Leetcode刷题 206. 反转链表 递归迭代两种方法实现
- MySQL索引和查询优化
- Elasticsearch:Index 生命周期管理入门
- springboot面试杀手锏-自动配置原理
- flink 1.11.2 学习笔记(1)-wordCount
- 我是如何开发维护8千多行代码组件的
- 我对JS延迟异步脚本的思考
- 大数据表查询优化 - 表分区
- 日志系统rsync和日志切割logrotate-Linux每日一练(9)
- Canvas 绘制点线相交
- Canvas监测雷达