分类器

Adaboost算法及其代码实现

偶尔善良 提交于 2020-01-30 01:06:11
Adaboost算法及其代码实现 算法概述 AdaBoost(adaptive boosting),即自适应提升算法。 Boosting 是一类算法的总称,这类算法的特点是通过训练若干弱分类器,然后将弱分类器组合成强分类器进行分类。 为什么要这样做呢?因为弱分类器训练起来很容易,将弱分类器集成起来,往往可以得到很好的效果。 俗话说,"三个臭皮匠,顶个诸葛亮",就是这个道理。 这类 boosting 算法的特点是各个弱分类器之间是串行训练的,当前弱分类器的训练依赖于上一轮弱分类器的训练结果。 各个弱分类器的权重是不同的,效果好的弱分类器的权重大,效果差的弱分类器的权重小。 值得注意的是,AdaBoost 不止适用于分类模型,也可以用来训练回归模型。 这需要将弱分类器替换成回归模型,并改动损失函数。 $几个概念 强学习算法 :正确率很高的学习算法; 弱学习算法 :正确率很低的学习算法,仅仅比随机猜测略好。 弱分类器 :通过弱学习算法得到的分类器, 又叫基本分类器; 强分类器 :多个弱分类器按照权值组合而成的分类器。 $提升方法专注两个问题: 1.每一轮如何改变训练数据的权值或者概率分布: Adaboost的做法是提高被分类错误的训练数据的权值,而提高被分类错误的训练数据的权值。 这样,被分类错误的训练数据会得到下一次弱学习算法的重视。 2.弱组合器如何构成一个强分类器 加权多数表决 。

集成学习

梦想的初衷 提交于 2020-01-29 19:45:21
集成学习 通过将多个弱分类器集成在一起,使它们共同完成学习任务,构建一个强分类器。 理论基础 在PAC学习框架中,一个概念,如果存在一个多项式的学习算法能够学习它,学习的正确率略好,那么就称这个概念是弱可学习的。 Schapire证明强可学习和弱可学习是等价的,也就是说,在PAC学习框架下,一个概念强可学习的充分必要条件是这个概念是弱可学习的。 两类集成方法 Bagging(bootstrap aggregating) Boosting(提升方法) Bagging:基于数据随机重抽样的分类器构建方法 1.利用bootstrap方法从整体数据集中采取有效放回抽样得到N个数据集 2.在每个数据集上学习出一个模型 3.利用N个模型的输出投票得到最后的预测结果 Boosting(Adaptive Boosting的简称)基于错误提升分类器性能,通过集中关注被已有分类器分类错误的样本,构建新分类器。 1.初始的分布应为等概分布 2.每次循环后提升错误样本的分布概率,分错的样本在训练集中所占权重增大,使得下一次循环的基分类器权重越低 集成学习:严格来说,这不算是一种机器学习算法,而更像是一种优化手段或者策略,它通常是结合多个简单的弱机器学习算法,去做更可靠的决策,类似于开会做决策。 Bagging与Boosting都采用 采样-学习-组合的方式,不同在于:Bagging中每个训练集互不相关

一个简单的opencv入门例子——图片人脸检测

一世执手 提交于 2020-01-29 07:11:31
Python3.7,pycharm3.7,opencv实现静态图片的人脸检测。 先上程序 import cv2 #选择分类器,注意路径为绝对值,安装了opencv后,可以在电脑中搜素cv2,找到data文件夹的haar分类器文件 face_cascade = cv2 . CascadeClassifier ( r 'C:\Users\dongz\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml' ) #此处为相对路径,即项目文件夹下 image = cv2 . imread ( 'ko.jpg' ) gray = cv2 . cvtColor ( image , cv2 . COLOR_BGR2GRAY ) #调用分类器的检测函数detectMultiScale,后面参数的设置可以让检测结果更加准确。 faces = face_cascade . detectMultiScale ( gray , scaleFactor = 1.3 , minNeighbors = 6 , minSize = ( 6 , 6 ) , flags = cv2 . CASCADE_SCALE_IMAGE ) for ( x , y , w ,

多输出深度森林(gcForest)

萝らか妹 提交于 2020-01-28 04:16:14
from sklearn.datasets import make_classification from GCForest import * from sklearn.utils import shuffle import numpy as np X, y1 = make_classification(n_samples=10, n_features=100, n_informative=30, n_classes=3, random_state=1) # 生成分类数据集,10个样本,100个特征,30个有效特征,3种分类 y2 = shuffle(y1, random_state=1) # 分类结果随机排序 y3 = shuffle(y1, random_state=2) # 分类结果随机排序 Y = np.vstack((y1, y2, y3)).T # 多种分类结果组合成 print('多输出多分类器真实输出分类:\n',Y) n_samples, n_features = X.shape # 10,100 n_outputs = Y.shape[1] # 3个输出 n_classes = 3 # 每种输出有3种分类 print(X.shape) forest1 = gcForest(shape_1X=100, window=2, tolerance=0.0) #

分类算法总结

依然范特西╮ 提交于 2020-01-27 22:24:48
目前看到的比较全面的分类算法,总结的还不错. 主要分类方法介绍解决分类问题的方法很多[40-42] ,单一的分类方法主要包括:决策树、贝叶斯、人工神经网络、K-近邻、支持向量机和基于关联规则的分类等;另外还有用于组合单一分类方法的集成学习算法,如Bagging和Boosting等。 (1)决策树 决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序、无规则的实例中推理出以决策树表示的分类规则。构造决策树的目的是找出属性和类别间的关系,用它来预测将来未知类别的记录的类别。它采用自顶向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。 主要的决策树算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它们在选择测试属性采用的技术、生成的决策树的结构、剪枝的方法以及时刻,能否处理大数据集等方面都有各自的不同之处。 (2)贝叶斯 贝叶斯(Bayes)分类算法是一类利用概率统计知识进行分类的算法,如朴素贝叶斯(Naive Bayes)算法。这些算法主要利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。由于贝叶斯定理的成立本身需要一个很强的条件独立性假设前提

AdaBoost算法理解

时光总嘲笑我的痴心妄想 提交于 2020-01-25 17:51:33
AdaBoost的前身和今世 强可学习和弱可学习 在概率近似正确(PAC)学习框架中, 一个类如果存在: 一个多项式复杂度的学习算法,正确率略大于随机猜测(例如二分类问题中大于1/2),称 弱可学习的 一个多项式复杂度的学习算法,并且正确率很高,称 强可学习的 Kearns和Valiant证明了强可学习和弱可学习是 等价 的 The Strength of Weak Learnability Adaboost算法就是将弱学习器组成强学习器的算法 Explaining AdaBoost 算法受到工业界和学术界的关注, 充分的理论研究 (统计学习方法证明) AdaBoost算法是为了证明弱可学习和强可学习算法等价而提出的 ,随后,人们发现该类集成算法能够有效的提升一个学习器的作用,基于AdaBoost演化出了诸多的算法,例如在各大数据挖掘上大放光彩的XGBoost,几乎霸占了诸多数据竞赛榜单的前几多年(从2017开始),在数据预处理上填充空值常用的随机森林算法等等。 随后,学术界纷纷把关注点投向了这个算法的理论证明。得到了该类算法的统计学派角度的证明, 即为AdaBoost是在指数损失函数、模型是加性模型、算法是前向分布算法 。进一步的,给出了学习算法的训练误差界,说明了其训练过程中的最坏情况,并且表明其训练误差是以指数级别下降的。在明白了AdaBoost的统计意义后

数据挖掘十大经典算法

萝らか妹 提交于 2020-01-25 03:52:34
国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART. 不仅仅是选中的十大算法,其实参加评选的18种算法,实际上随便拿出一种来都可以称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响。 1.C4.5 C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: 1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足; 2) 在树构造过程中进行剪枝; 3) 能够完成对连续属性的离散化处理; 4) 能够对不完整数据进行处理。 C4.5算法有如下优点: 产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。 2. The k-means algorithm 即K-Means算法 k-means algorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k < n

cs231n第二讲笔记整理(下)

浪子不回头ぞ 提交于 2020-01-25 00:56:43
任务标题: 学习线性分类器 任务详情: 观看第二讲:图像分类 第6课时视频;观看knn与线性分类器知识点提点 学习内容提要: 第二讲:图像分类 ·6线性分类器 对于32 * 32 * 3一张图彩色图,f(x,w)线性分类器与knn区别 线性分类器模型函数f(x,w)=wx+b (可以看成一种模板匹配方法) 线性分类器的缺点也就是存在的问题 Ps: f(x,w)线性分类器与knn区别 线性分类器的缺点也就是存在的问题 ·homework 作业:训练KNN分类器(assignment1 中的 knn.ipynb) 作业下载链接: 链接:https://pan.baidu.com/s/1sAHQASS19YIlnE_kKQwkeQ 密码:mgej 打卡内容: 1. f(x,w)线性分类器与knn区别 线性分类器是参数模型中最简单的列子,在深度学习中整个描述都是关于函数F的正确结构,你可以发挥自己的想象来编写不同的函数,用不同的,复杂的方式来组合数据和权重。 线性分类器的工作方式如下,其实质是给不同的像素点分配不同的权重。 Knn通过距离度量来划分种类,线性分类器是通过平面来划分类别。 knn没有可以学习的权重,线性分类器有可以学习的权重w。 3. 线性分类器为什么可以看成一种模板匹配方法 权重矩阵的每一行对应一个模板,这个类的图像模板与像素之间有一个相似之处

目标检测算法基础介绍

◇◆丶佛笑我妖孽 提交于 2020-01-23 04:28:14
文章目录 1. 目标检测问题定义 1.1 目标检测定义 1.2 目标检测vs图像分类 1.3 目标检测vs目标分割 2. 目标检测问题方法 2.1 传统目标检测方法到深度学习目标检测方法的变迁 2.2 算法基本流程 2.3 传统目标检测方法 2.4 深度学习目标检测方法 2.5 传统目标检测方法VS深度学习目标检测方法 2.6 目标检测应用场景 3. 传统目标检测算法 3.1 综述 3.2 Viola-Jones 3.3 HOG+SVM 3.4 DPM 3.5 NMS(非极大值抑制算法) 4. 基于深度学习的目标检测算法 4.1 Two-stage基本介绍 4.1.1 概述 4.1.2 two-stage基本流程: 4.1.3 two-stage常见算法 4.2 Two-stage核心组件 4.2.1 CNN网络 4.2.2 RPN网络 4.3 One-stage基本介绍 4.3.1 One-stage 综述 4.3.2 One-stage基本流程 4.3.3 One-stage常见算法 4.4 One-stage核心组件 4.4.1 CNN网络 4.4.2 回归网络 4.4.3 回归网络预测过程 4.5 One-stage VS Two-stage 1. 目标检测问题定义 1.1 目标检测定义 目标检测是在图片中对 可变数量 的目标进行分类和查找。 主要难点: 目标种类与数量问题

有监督学习 无监督学习

风流意气都作罢 提交于 2020-01-22 21:16:19
原文作者:aihorizon.com 原文链接: Machine Learning, Part I: Supervised and Unsupervised Learning 译者: commondata 监督学习是指我们来教计算机如何“学习”,非监督学习是指让计算机自己学习。监督学习又有两个大的分支,一个是 regression,另一个是 classification。 既然是我们来教计算机如何学习,那就必定有一个“标准答案”。regression 是说,这个标准答案是连续的。 比如说,对三个月销售量的估计。classification 是说,这个标准答案是离散的。比如说,对是否患有cancer的判断。非监督学习就没有标准答案了。比如说,给你一堆数据,让你来分析这堆数据的结构。 上次我们讨论了基于结果的两类学习。这篇文章我们将关注一些其他方面的学习:监督还是无监督。当训练用例被标记了正确结果的时候,监督学习方式为怎样改进学习给出一个反馈。这类似于教官教导某个Agent,它的行为是否正确。对无监督学习来说这个目标很难实现,因为缺乏事先确定的分类。 ·监督学习 监督学习是最常见的分类问题,因为目标往往是让计算机去学习我们已经创建好的分类系统。数字识别再一次成为分类学习的常见样本。更一般地说,对于那些有用的分类系统,和容易判断的分类系统,分类学习都适用。在某些情况下