决策树
Decision Tree(决策树)
决策树是一种简单但广泛使用的分类器,它通过训练数据构建决策树,对未知的数据进行分类。决策树的每个内部节点表示在一个属性上的测试,每个分枝代表该测试的一个输出,而每个树叶结点存放着一个类标号。
在决策树算法中。
ID3基于信息增益作为属性选择的度量,
C4.5基于信息增益比作为属性选择的度量,
CART基于基尼指数作为属性选择的度量。
决策树的优缺点
优点
1、不需要任何领域知识或参数假设
2、适合高维数据。
3、简单易于理解。
4、短时间内处理大量数据,得到可行且效果较好的结果。
5、使用可视化模型。
缺点
1、对于各类别样本数量不一致数据,信息增益偏向于那些具有更多数值的特征。
2、易于过拟合。
3、忽略属性之间的相关性。
4、不支持在线学习
5、它们是不稳定的,这意味着数据的微小变化可能导致最优决策树结构的巨大变化。
6、计算可能变得非常复杂,特别是如果许多值不确定和/或许多结果是相关的。
决策树公式
树模型
决策树:从根节点开始一步步走到叶子节点(决策)。
所有的数据最终都会落到叶子节点,即可以应用于分类也可以做回归。
树的组 ...
模拟退火算法
知乎原博客
CSDN优秀博客
模拟退火算法
优点:
模拟退火算法的优点在于:不管函数形式多复杂,模拟退火算法更有可能找到全局最优解。
迭代原则简单,理论支撑强,实际效果也很好
1.金属退火的原理
金属退火是将金属加热到一定温度,保持足够时间,然后以适宜速度冷却(通常是缓慢冷却,有时是控制冷却)的一种金属热处理工艺。模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
如上图,处在低温状态时,固体中分子具有的内能很低,在原本的位置上做小范围的振动。若是将固体加热到一定温度,分子内能将会增加,热运动加剧,分子排列的无序度增加。此时再将温度缓缓降低,在每个温度都达到平衡态(即准静态过程),分子具有的能量逐渐降低,最终回归到有序排列的状态,分子内能也跟着降到最低。
2.模拟退火算法机制
模拟退火算法(Simulated Annealing,SA)最早的思想是由N. Metropolis等人于1953年提出。1983年,S. Kirkpatric ...
YOLO学习笔记
推荐博客
从yolov1至yolov4的进阶之路
你一定从未看过如此通俗易懂的YOLO系列(从v1到v5)模型解读 (上)
你一定从未看过如此通俗易懂的YOLO系列(从v1到v5)模型解读 (中)
你一定从未看过如此通俗易懂的YOLO系列(从v1到v5)模型解读 (下)
写给小白的Yolo介绍
比较流行的算法可以分为两类,一类是基于Region Proposal的R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN),它们是two-stage的,需要先使用启发式方法(selective search)或者CNN网络(RPN)产生Region Proposal,然后再在Region Proposal上做分类与回归。
YOLO(You Only Look Once)
YOLO v1:直接回归出位置。
YOLO v2:全流程多尺度方法。
YOLO v3:多尺度检测头,resblock darknet53
YOLO v4:cspdarknet53,spp,panet,tricks
0 前言
本文目的是用尽量浅显易懂的语言让零基础小白能够理解什么是YOLO系列模型,以 ...
目标检测介绍
目标检测(Object Detection)
一、基本概念
1. 什么是目标检测
目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。
计算机视觉中关于图像识别有四大类任务:
(1)分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。
(2)定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。
(3)检测-Detection:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。
(4)分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。
所以,目标检测是一个分类、回归问题的叠加。
2. 目标检测的核心问题
(1)分类问题:即图片(或某个区域)中的图像属于哪个类别。
...
CNN的进化
10.31报告
参考自:R-CNN系列算法精讲:R-CNN —》Fast R-CNN —》Faster R-CNN 进阶之路
深度学习——CNN(卷积神经网络)
如何理解CNN中的感受野(receptive-field)?
一、进击的网络(CNN/DNN)
1.1 DNN与CNN区别(卷积神经网络)
上图为DNN深度神经网络图
DNN((Deep Neural Networks,DNN)内部的神经网络层可以分为三类,输入层,隐藏层和输出层,一般来说第一层是输出层,最后一层是输出层,而中间的层数都是隐藏层。
上图为CNN神经网络
卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。
总结:
(1)DNN是一种最简单的神经网络。各个神经元分别属于不同的层,每个神经元和前一层的所有神经元相连接,信号从输入层向输出层单向传播。
(2)CNN是一种通过卷积计算的前馈神经网络,其是受生物学上的感受野机制提出 ...
残差神经网络
链接:
一文读懂残差网络
残差网络的由来
残差操作这一思想起源于论文《Deep Residual Learning for Image Recognition》,目前的引用量已达3万多。这篇文章发现,如果存在某个层的网络是当前最优的网络,那么可以构造一个更深的网络,其最后几层仅是该网络第层输出的恒等映射(Identity Mapping),就可以取得与一致的结果;也许还不是所谓“最佳层数”,那么更深的网络就可以取得更好的结果。总而言之,与浅层网络相比,更深的网络的表现不应该更差。但是如下图所示,56层的神经网络表现明显要比20层的差。证明更深的网络在训练过程中的难度更大,因此作者提出了残差网络的思想。
网络层数加深导致的训练问题
残差网络的定义
残差网络依旧让非线形层满足 ,然后从输入直接引入一个短连接到非线形层的输出上,使得整个映射变为
这就是残差网路的核心公式,换句话说,残差是网络搭建的一种操作,任何使用了这种操作的网络都可以称之为残差网络。
一个具体的残差模块的定义如下图:
残差模块(由于先敲公式后引得图,容易混淆,图中的F(x)就是上文所说的H(x,w),下面也一样替换)
...
XGboost算法
XGBoost
1. 什么是XGBoost
XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进,被广泛应用在Kaggle竞赛及其他许多机器学习竞赛中并取得了不错的成绩。
说到XGBoost,不得不提GBDT(Gradient Boosting Decision Tree)。因为XGBoost本质上还是一个GBDT,但是力争把速度和效率发挥到极致,所以叫X (Extreme) GBoosted。包括前面说过,两者都是boosting方法。
1.1 XGBoost树的定义
先来举个例子,我们要预测一家人对电子游戏的喜好程度,考虑到年轻和年老相比,年轻更可能喜欢电子游戏,以及男性和女性相比,男性更喜欢电子游戏,故先根据年龄大小区分小孩和大人,然后再通过性别区分开是男是女,逐一给各人在电子游戏喜好程度上打分,如下图所示。
就这样,训练出了2棵树tree1和tree2,类似之前gbdt的原理,两棵树的结论累加起来便是最终的结论,所以小孩的预测分数就是两棵树中小孩所落到的结点的分数相加:2 + 0.9 = 2.9。爷爷的预测分数同理:-1 ...
GBDT算法
GBDT算法 (梯度提升决策树)
1.GBDT算法的过程
1.1Boosting思想
Boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖。它的基本思路是将**基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。**测试时,根据各层分类器的结果的加权得到最终结果。
Bagging与Boosting的串行训练方式不同,Bagging方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练。
GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,使用的是Boosting的思想。
1.2GBDT原理
GBDT的原理很简单,就是所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合误差函数对预测值的残差(这个残差就是预测值与真实值之间的误差)。当然了,它里面的弱分类器的表现形式就是各棵树。
举一个非常简单的例子,比如我今年30岁了,但计算机或者模型GBDT并不知道我今年多少岁,那GBDT咋办呢?
它会在第一个弱分类器(或第一棵树中)随便用一个年龄比如20岁来拟合,然后发现误差有10岁;
接下来 ...
SVM支持向量机算法
1.SVM
支持向量机(support vector machines,SVM)是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 “最好地” 区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。SVM 适合中小型数据样本、非线性、高维的分类问题。
SVM 最早是由 Vladimir N. Vapnik 和 Alexey Ya. Chervonenkis 在1963年提出,目前的版本(soft margin)是由 Corinna Cortes 和 Vapnik 在1993年提出,并在1995年发表。深度学习(2012)出现之前,SVM 被认为机器学习中近十几年来最成功,表现最好的算法。
1.1 SVM 基本概念
将实例的特征向量(以二维为例)映射为空间中的一些点,如下图的实心点和空心点,它们属于不同的两类。SVM 的目的就是想要画出一条线,以“最好地”区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。
本质上就是找到一条直线或曲线能够最佳程度拟合数据点。
Q1:能够画出多少条线对样本点进行区分?
答:线是有无数条可 ...
SMOTE过采样算法
一、问题背景:类别不平衡
从模型的训练过程来看
从训练模型的角度来说,如果某类的样本数量很少,那么这个类别所提供的“信息”就太少。
使用经验风险(模型在训练集上的平均损失)最小化作为模型的学习准则。设损失函数为0-1 loss(这是一种典型的均等代价的损失函数),那么优化目标就等价于错误率最小化(也就是accuracy最大化)。考虑极端情况:1000个训练样本中,正类样本999个,负类样本1个。训练过程中在某次迭代结束后,模型把所有的样本都分为正类,虽然分错了这个负类,但是所带来的损失实在微不足道,accuracy已经是99.9%,于是满足停机条件或者达到最大迭代次数之后自然没必要再优化下去,ok,到此为止,训练结束!
于是这个模型没有学习到如何去判别出少数类。
从模型的预测过程来看
考虑二项Logistic回归模型。输入一个样本 x ,模型输出的是其属于正类的概率 y’ 。当 y’>0.5时,模型判定该样本属于正类,否则就是属于反类。
为什么是0.5呢?可以认为模型是出于最大后验概率决策的角度考虑的,选择了0.5意味着当模型 ...