该文章授权稀土技术社区公众号首发!
✨专栏介绍: 经过几个月的精心准备,本作者推出全新系列《浅显易懂OCR》专栏,对标最全OCR教程,详细章节如导图所示,将别离从OCR技术发展、方向、概念、算法、论文、数据集等各种视点打开详细介绍。
面向对象: 本篇前语常识主要介绍机器学习,方便小白或AI爱好者学习基础常识。
友情提醒: 本文内容可能未能含概机器学习一切常识点,其他内容能够拜访自己主页其他文章或个人博客,一起因自己水平有限,文中如有过错恳请指出,欢迎互相学习交流!
个人主页: GoAI | 公众号: GoAI的学习小屋 | 交流群: 704932595 |个人简介 : 签约作者、百度飞桨PPDE、领航团团长、开源特训营导师、CSDN、阿里云社区人工智能范畴博客专家、新星方案核算机视觉方向导师等,专心大数据与人工智能常识共享。
文章目录
《浅显易懂OCR》前语常识:机器学习基础 (✨本篇,文末有机器学习总结导图福利!)
《浅显易懂OCR》前语常识:机器学习常识总结
一、机器学习概念
机器学习(Machine Learning, ML),说白了,便是让机器去学习。这儿的机器指的是核算机,是算法运转的物理载体,你也能够把各种算法自身作为一个有输入和输出的机器。关于一个使命及其体现的衡量办法,设计一种算法,让算法能够提取中数据所蕴含的规矩,这就叫机器学习。假如输入机器的数据是带有标签的,就称作有监督学习。假如数据是无标签的,便是无监督学习。
首要,什么是机器学习呢?
答:作者的答复是,机器学习等于寻觅一种符合 y=f(x)y = f(x)的函数。
其次,怎么寻觅这个函数?
答:为了寻觅函数,首要咱们需求给定一个函数调集,经过设计模型来判别函数的好坏,决议挑选最好的函数,再进行模型优化。
终究,总结机器学习三板斧。
答:
①条件:设计模型Model
②要害:判别模型的好坏
③升华:挑选最好的函数,优化模型
二、 机器学习常见名词总结
当说到人工智能时,咱们常常会说到许多专有名词,给初学者学习带来一定困扰。因而,在学习机器学习前,首要咱们需求明确以下几个概念。本次GoAI将主要从标签、特征、样本、练习、模型、泛化、过拟合、猜测、练习集、验证集、测验集、方差等等概念视点入手,争夺让咱们弄清楚基础概念。
2.1 主要术语
标签(label) 是咱们要猜测的事物。
比方,咱们从市场上挑了一些苹果。标签能够是接连值(如苹果的甜度,水分),也能够是离散值(苹果的价格,或好坏)
而标签在分类使命中的类别,比方是猫或狗;简略线性回归中的y变量;在监督学习中,标签值是样本的“答案”或“成果”部分。
特征(feature) 是在进行猜测时运用的输入变量。
比方苹果的巨细,色彩,产地,品牌等都是特征。
特征是输入变量,即简略线性回归中的x变量;在分类使命中的输入图画特征。 简略的机器学习项目可能会运用单个特征,而比较复杂的机器学习项目可能会运用数百万个特征。
样本(example) 是数据集的一行。
比方一个苹果是大的,红色,甜的,红富士牌子,好的等构成一个样本。
在监督学习的样本中,一个样本既有特征,也有标签。在无监督学习的样本中,一个样本只要特征。样本是指数据的特定示例:x。(x表明一个矢量)将样本分为以下两类:
- 有标签样本
- 无标签样本
有标签样本 :一起包括特征的标签,即:labeled examples: {features, label}: (x, y)
这儿咱们以一个详细实例为例,下表显示了加利福尼亚房价信息的数据会集抽取的5个有标签的样本:
housingMedianAge (特征) | totalRooms (特征) | totalBedrooms (特征) | medianHouseValue (标签) |
---|---|---|---|
15 | 5612 | 1283 | 66900 |
19 | 7650 | 1901 | 80100 |
17 | 720 | 174 | 85700 |
14 | 1501 | 337 | 73400 |
20 | 1454 | 326 | 65500 |
无标签样本 :包括特征,但不包括标签,即:unlabeled examples: {features, ?}: (x, ?)
以下是取自同一住房数据集的3个无标签样本,从表中能够看出不包括房子价值终究一列:
housingMedianAge (特征) | totalRooms (特征) | totalBedrooms (特征) |
---|---|---|
42 | 1686 | 361 |
34 | 1226 | 180 |
33 | 1077 | 271 |
在运用有标签样本练习模型之后,咱们会运用该模型猜测无标签样本的标签。在垃圾邮件检测器示例中,无标签样本是用户尚未添加标签的新电子邮件。
模型(model) : 模型界说了特征与标签之间的联系。
比方,猜测苹果好坏的模型将某些特征(小的、味道酸的)与“坏苹果”严密联系起来。
模型生命周期的两个阶段:
- 练习 是指创立或学习模型。即:向模型展示有标签样本,让模型逐步学习特征与标签之间的联系。
- 推理 是指将练习后的模型应用于无标签样本。即:运用经过练习的模型做出有用的猜测,在推理期间,能够针对新的无标签样本猜测medianHouseValue。
练习集(training set)
数据集的子集,用于练习模型。与验证集和测验集相对。
验证集(validation set)
数据集的一个子集,从练习集别离而来,用于调整超参数。与练习集和测验集相对。
测验集(test set)
数据集的子集,用于在模型经过验证集的初步验证后,进行测验模型。与练习集和验证集相对。
比方,将自己买的许多苹果分为两类,大部分为练习,小部分为测验,然后每种随机打乱与猜测详细其他相似特征的苹果是好苹果还是坏苹果。
差错
差错衡量了模型的希望猜测与实在成果的偏离程度, 立刻画了学习算法自身的拟合才能。差错则体现为在特定散布上的适应才能,差错越大越偏离实在值。
方差
方差衡量了相同巨细的练习集的改动所导致的学习功能的改动, 立刻画了数据扰动所构成的影响。方差越大,阐明数据散布越涣散。
差错、方差、模型复杂度三者之间的联系运用下图表明会更简略了解:
当模型复杂度上升的时分,差错会逐步变小,而方差会逐步变大。
泛化(generalization)
是指模型依据练习时选用的模型,针对未见过的新数据做出争夺猜测的才能。
过拟合(overfitting)
创立的模型与练习数据过于匹配,以至于模型无法依据新数据做出正确的猜测,使得模型的泛化才能较低。
欠拟合
是指模型拟合程度不高,数据间隔拟合曲线较远,或指模型没有很好地捕捉到数据特征,不能很好地拟合数据。换言之,模型在学习的进程中没有很好地把握它该把握的常识,模型学习的差错较大。
从上图a、b、c能够直观看出过拟合、欠拟合及正常拟合的状况,面临不同拟合状况,需求咱们进行恰当调整。
2.2 其他术语
请参阅自己这篇: 机器学习与深度学习基础概念
三、常见机器学习算法简介:
下面主要是对机器学习算法进行简略总结,上述概念中咱们说到,假如输入机器的数据是带有标签的,就称作有监督学习。假如数据是无标签的,便是无监督学习。
3.1 监督学习(SupervisedLearning):
有类别标签的学习,依据练习样本的输入、输出练习得到最优模型,再运用该模型猜测新输入的输出;
代表算法:决议计划树、朴素贝叶斯、逻辑回归、KNN、SVM、神经网络、随机森林、AdaBoost、遗传算法;
3.2 半监督学习(Semi-supervisedLearning):
一起运用很多的未符号数据和符号数据,进行模式辨认作业;
代表算法:self-training(自练习算法)、generative models生成模型、SVMs半监督支撑向量机、graph-basedmethods图论办法、 multiviewlearing多视角算法等;
3.3 无监督学习(UnsupervisedLearning):
无类别标签的学习,只给定样本的输入,主动从中寻觅潜在的类别规矩;
代表算法:主成分剖析办法PCA等,等距映射办法、部分线性嵌入办法、拉普拉斯特征映射办法、黑塞部分线性嵌入办法、部分切空间排列办法等;
四、机器学习模型详细分类
作者从机器学习概念视点出发,将其依照模型类型分为监督学习模型、无监督学习模型等几类:
(一)有监督学习
有监督学习一般是运用带有专家标示的标签的练习数据,学习一个从输入变量X到输入变量Y的函数映射。即Y = f (X),练习数据一般是(nx,y)的方法,其间n代表练习样本的巨细,x和y别离是变量X和Y的样本值。
运用有监督学习处理的问题大致上能够被分为三类:
1.分类问题: 猜测某相同本所属的类别(离散的)。比方,我想猜测给定其他人(从数据的视点来说,是给出一个人的数据结构,包括:身高,年龄,体重等信息),然后判别是性别,或者是否健康。
2.回归问题: 猜测某相同本的所对应的实数输出(接连的)。比方猜测某一地区人的均匀身高。
线性回归,逻辑回归,分类回归树,朴素贝叶斯,K最近邻算法均是有监督学习的比如。
3.集成学习: 集成学习也是一种有监督学习。它是将多个不同的相对较弱的机器学习模型的猜测组合起来,用来猜测新的样本。随机森林和XGBoost算法是集成技术的比如。
4.1 分类算法
分类算法和回归算法是对实在世界不同建模的办法。分类模型是认为模型的输出是离散的,例如大自然的生物被区分为不同的种类,是离散的。回归模型的输出是接连的,例如人的身高改动进程是一个接连进程,而不是离散的。
分类详细办法简介:
1.SVM:全称Support Vector Machine(支撑向量机),在特征空间上找到最佳的超平面使练习集正负样本的间隔最大;是处理二分类问题的有监督学习算法,引入核办法后也可用来处理非线性问题;
2.Adaboost:全称Adaptive Boosting(自适应增强),对同一个练习集练习不同的弱分类器,把这些弱分类器调集起来,构成一个更强的强分类器;
3.决议计划树算法(Decision Tree):处理练习数据,构建决议计划树模型,再对新数据进行分类;
4.随机森林算法(Random Forest):运用基本单元(决议计划树),经过集成学习将多棵树集成;
5.朴素贝叶斯(Naive Bayes):依据事情的先验常识描绘事情的概率,对联合概率建模来取得方针概率值;
6.神经网络(Neural Networks):仿照动物神经网络行为特征,将许多个单一“神经元”联合在一起,经过调整内部很多节点之间彼此连接的联系,进行散布式并行信息处理。
3.1.1 常用分类算法
算法 | 长处 | 缺陷 |
---|---|---|
Bayes 贝叶斯分类法 | 1)所需估量的参数少,关于缺失数据不灵敏。 2)有着坚实的数学基础,以及安稳的分类功率。 |
1)需求假定特点之间彼此独立,这往往并不建立。(喜欢吃西红柿、鸡蛋,却不喜欢吃西红柿炒蛋)。 2)需求知道先验概率。 3)分类决议计划存在过错率。 |
Decision Tree决议计划树 | 1)不需求任何范畴常识或参数假定。 2)合适高维数据。 3)简略易于了解。 4)短时刻内处理很多数据,得到可行且作用较好的成果。 5)能够一起处理数据型和惯例性特点。 |
1)关于各类别样本数量不一致数据,信息增益倾向于那些具有更多数值的特征。 2)易于过拟合。 3)疏忽特点之间的相关性。 4)不支撑在线学习。 |
SVM支撑向量机 | 1)能够处理小样本下机器学习的问题。 2)进步泛化功能。 3)能够处理高维、非线性问题。超高维文本分类仍受欢迎。 4)避免神经网络结构挑选和部分极小的问题。 |
1)对缺失数据灵敏。 2)内存耗费大,难以解说。 3)运转和调参略烦人。 |
KNN K近邻 | 1)思维简略,理论老练,既能够用来做分类也能够用来做回归; 2)可用于非线性分类; 3)练习时刻复杂度为O(n); 4)准确度高,对数据没有假定,对outlier不灵敏; |
1)核算量太大。 2)关于样本分类不均衡的问题,会发生误判。 3)需求很多的内存。 4)输出的可解说性不强。 |
Logistic Regression逻辑回归 | 1)速度快。 2)简略易于了解,直接看到各个特征的权重。 3)能简略地更新模型吸收新的数据。 4)假如想要一个概率结构,动态调整分类阀值。 |
特征处理复杂。需求归一化和较多的特征工程。 |
Neural Network 神经网络 | 1)分类准确率高。 2)并行处理才能强。 3)散布式存储和学习才能强。 4)鲁棒性较强,不易受噪声影响。 |
1)需求很多参数(网络拓扑、阀值、阈值)。 2)成果难以解说。 3)练习时刻过长。 |
Adaboosting | 1)adaboost是一种有很高精度的分类器。 2)能够运用各种办法构建子分类器,Adaboost算法供给的是结构。 3)当运用简略分类器时,核算出的成果是能够了解的。而且弱分类器结构极端简略。 4)简略,不必做特征挑选。 5)不必忧虑overfitting。 |
对outlier比较灵敏 |
3.1.2 分类算法的点评办法
分类点评办法主要功能是用来点评分类算法的好坏,而点评一个分类器算法的好坏又包括许多项方针。了解各种点评办法,在实践应用中挑选正确的点评办法是十分重要的。
-
常用术语 这儿首要介绍几个常见的模型点评术语,现在假定咱们的分类方针只要两类,为正例(positive)和负例(negative)别离是:
- True positives(TP): 被正确地区分为正例个数,即实践为正例且被分类器区分为正例实例数;
- False positives(FP): 被过错地区分为正例个数,即实践为负例但被分类器区分为正例实例数;
- False negatives(FN):被过错地区分为负例个数,即实践为正例但被分类器区分为负例实例数;
- True negatives(TN): 被正确地区分为负例个数,即实践为负例且被分类器区分为负例实例数。
接下来针对上述四种术语的混淆矩阵,做以下阐明:
1)P=TP+FN表明实践为正例的样本个数。
2)True、False描绘的是分类器是否判别正确。
3)Positive、Negative是分类器分类成果,假如正例计为1、负例计为-1,即positive=1、negative=-1。用1表明True,-1表明False,那实践类标=TF*PN,TF为true或false,PN为positive或negative。
4)如True positives(TP)的实践类标=1*1=1为正例,False positives(FP)的实践类标=(-1)*1=-1为负例,False negatives(FN)的实践类标=(-1)*(-1)=1为正例,True negatives(TN)的实践类标=1*(-1)=-1为负例。
3.1.3常用分类使命点评方针
-
正确率(accuracy) 正确率是咱们最常见的点评方针,accuracy = (TP+TN)/(P+N),正确率是被分对的样本数在一切样本数中的占比,一般来说,正确率越高,分类器越好。
-
过错率(error rate) 过错率则与正确率相反,描绘被分类器错分的份额,error rate = (FP+FN)/(P+N),对某一个实例来说,分对与分错是互斥事情,所以accuracy =1 – error rate。
-
灵敏度(sensitivity) sensitivity = TP/P,表明的是一切正例中被分对的份额,衡量了分类器对正例的辨认才能。
-
特异性(specificity) specificity = TN/N,表明的是一切负例中被分对的份额,衡量了分类器对负例的辨认才能。
-
精度(查准率)(precision) precision=TP/(TP+FP),精度是精确性的衡量,表明被分为正例的示例中实践为正例的份额。
-
召回率(查全率)(recall) 召回率是掩盖面的衡量,衡量有多个正例被分为正例,recall=TP/(TP+FN)=TP/P=sensitivity,能够看到召回率与灵敏度是相同的。
-
其他点评方针
核算速度:分类器练习和猜测需求的时刻;
鲁棒性:处理缺失值和异常值的才能;
可扩展性:处理大数据集的才能;
可解说性:分类器的猜测规范的可了解性,像决议计划树发生的规矩便是很简略了解的,而神经网络的一堆参数就不好了解,咱们只好把它当作一个黑盒子。
-
F1值
精度和召回率反映了分类器分类功能的两个方面。假如归纳考虑查准率与查全率,能够得到新的点评方针F1-score,也称为归纳分类率:F1=2precisionrecallprecision+recallF1=\frac{2 \times precision \times recall}{precision + recall}。
多分类使命点评方针:
为归纳多个类别的分类状况,评测体系全体功能,常常选用还有微均匀F1(micro-averaging)和宏均匀F1(macro-averaging )两种方针。
(1)宏均匀F1与微均匀F1是以两种不同的均匀办法求的全局F1方针。
(2)宏均匀F1的核算办法先对每个类别单独核算F1值,再取这些F1值的算术均匀值作为全局方针。
(3)微均匀F1的核算办法是先累加核算各个类别的a、b、c、d的值,再由这些值求出F1值。
(4)由两种均匀F1的核算办法不难看出,宏均匀F1持平对待每一个类别,所以它的值主要遭到稀有类别的影响,而微均匀F1持平考虑文档会集的每一个文档,所以它的值遭到常见类别的影响比较大。
ROC曲线和PR曲线
如下图所示,ROC曲线是(Receiver Operating Characteristic Curve,受试者作业特征曲线)的简称,是以灵敏度(真阳性率)为纵坐标,以1减去特异性(假阳性率)为横坐标制作的功能点评曲线。能够将不同模型对同一数据集的ROC曲线制作在同一笛卡尔坐标系中,ROC曲线越靠近左上角,阐明其对应模型越牢靠。也能够经过ROC曲线下面的面积(Area Under Curve, AUC)来点评模型,AUC越大,模型越牢靠。
PR曲线
Recall召回率(查全率): Recall=TPTP+FNRecall=\frac{TP}{TP+FN}
意义:TP除以榜首列,即猜测为1实践为1的样本在一切实在为1类别中的占比。等价于真阳率。
Precision精准率(查准率): Precision=TPTP+FPPrecision=\frac{TP}{TP+FP}
意义:FP除以榜首行,即猜测为1实践为1的样本在一切猜测为1类别中的占比。
PR曲线是Precision Recall Curve的简称,描绘的是precision和recall之间的联系,以recall为横坐标,precision为纵坐标制作的曲线。该曲线的所对应的面积AUC实践上是方针检测中常用的点评方针均匀精度(Average Precision, AP)。AP越高,阐明模型功能越好。
分类使命点评方针参阅学习:blog.csdn.net/u013250861/…
4.2 回归算法
4.2.1 常见回归算法
- 线性回归
- 多项式回归
- 支撑向量机回归
- 决议计划树回归
- 随机森林回归
- LASSO 回归
- Ridge 回归
- ElasticNet 回归
- XGBoost 回归
4.1.2 随机森林回归
(1)随机森林回归概念
随机森林回归是一种依据集成学习的算法,它经过构建多个决议计划树并将它们的猜测成果进行集成来进行回归使命。在随机森林中,每棵决议计划树都是独立并在随机挑选的子样本上进行练习的,这样能够有效地削减过拟合的危险。随机森林经过将多个决议计划树的猜测成果进行均匀或加权均匀,然后得到终究的回归成果。
(2)随机森林回归的基本原理如下:
随机挑选样本:从原始练习会集随机挑选一部分样本,构成一个子样本集。这样能够使得每棵决议计划树都在不同的样本集上进行练习,然后添加模型的多样性。
随机挑选特征:关于每个决议计划树的每个节点,在挑选最佳区分特征时,只考虑随机挑选的一部分特征。这样能够防止某些特征对整个模型的影响过大,然后进步模型的鲁棒性。
构建决议计划树:在每个子样本集上运用某种决议计划树算法(如CART算法)构建一棵决议计划树。决议计划树的成长进程中,一般选用递归地挑选最佳区分特征,将数据集区分为不纯度最小的子集。
集成猜测:关于新的输入样本,经过将多棵决议计划树的猜测成果进行均匀或加权均匀,然后得到终究的回归成果。
(4)随机森林的长处:
能够处理高维数据和大规模数据集。
具有较好的泛化功能,能够有效地削减过拟合的危险。
能够处理缺失值和异常值。
关于非线性联系的数据,具有较强的拟合才能。
XGBoost 回归
XGBoost是boosting算法的其间一种。Boosting算法的思维是将许多弱分类器集成在一起构成一个强分类器。由于XGBoost是一种提高树模型,所以它是将许多树模型集成在一起,构成一个很强的分类器。而所用到的树模型则是CART回归树模型。
参阅学习:一文读懂机器学习大杀器xgboost原理
4.2.2 回归算法的点评方针
均匀肯定值差错(MAE)
均肯定值差错便是核算每一个样本的猜测值和实在值的差的肯定值,然后求和再取均匀值。 其公式为:
MAE(y,y)=1m∑i=1m(∣yi−f(xi)∣)MAE(y, \hat {y}) = \frac{1}{m} \sum_{i=1}^m{(|y_i – f(x_i)|)}
其间,yiy_i,f(xi)f(x_i)和y\hat {y}为模型的猜测值。
均方差错(MSE)
均方差错便是核算每一个样本的猜测值与实在值差的平方,然后求和再取均匀值。 其公式为:
MSE(y,y)=1m∑i=1m(yi−f(xi))2MSE(y, \hat {y}) = \frac{1}{m} \sum_{i=1}^m{(y_i – f(x_i))^2}
均方根差错(RMSE)
均方根差错便是在均方差错的基础上再开方。 其公式为:
RMSE(y,y)=1m∑i=1m(yi−f(xi))2RMSE(y, \hat {y}) = \sqrt {\frac{1}{m} \sum_{i=1}^m{(y_i – f(x_i))^2}}
均匀肯定百分比差错(MAPE, Mean Absolute Percentage Error)
MAPE是核算对相对差错丢失的预期。所谓相对差错,便是肯定差错和真值的百分比。
MAPE(y,y)=1nsamples∑i=0nsample−1∣yi−yi∣max(,∣yi∣)MAPE(y, \hat {y}) = \frac {1} {n_{samples} } \sum_{i=0}^{n_{sample}-1} \frac {|y_i- \hat y_i|}{max(\epsilon, |y_i|)}
其间\epsilon是一个恣意小的正数,以避免当 y 为零时,分母为零,呈现未界说的成果。
决议系数R^2(R-Squared)
R2(y,y)=1−∑i=1n(yi−yi)2∑i=1n(yi−y‾)2=1−1n∑i=1n(yi−yi)21n∑i=1n(yi−y‾)2=1−MSEVarR^2(y, \hat {y}) = 1 – \frac { \sum_{i=1}^n { (y_i – \hat y_i)^2 } }{ \sum_{i=1}^n{(y_i-\overline y)^2}} =1 – \frac { \frac {1} {n} \sum_{i=1}^n { (y_i – \hat y_i)^2 } }{ \frac {1} {n} \sum_{i=1}^n{(y_i-\overline y)^2}} = 1 – \frac {MSE} {Var}
决议系数R^2将已解说的方差除以总方差,代表了总方差被猜测变量所解说或决议的比率。值为0~1之间的值,越接近于1,阐明模型的作用越好。
针对多个方针配合运用的状况:
MAE和RMSE一起运用,能够看出样本差错的离散程度。比方RMSE远大于MAE时,能够得知不相同例的差错不同很大。
MAE和MAPE一起运用,再结合y‾\overline y能够预算模型对不同数量级样例的拟合程度。比方,MAE远大于MAPE *y‾\overline y,则可能是模型对实在值小的样本猜测更准。能够考虑为不同数量级的样本建立不同的模型。
回归算法参阅学习:blog.csdn.net/qq_42363032…
4.3 集成学习
集成学习是一种将不同学习模型(比方分类器)的成果组合起来,经过投票或均匀来进一步进步准确率。一般,关于分类问题用投票;关于回归问题用均匀。这样的做法源于“世人拾材火焰高”的想法。
集成算法主要有三类:Bagging,Boosting 和Stacking。
4.3.1 bagging思维
bagging是集成学习的思维之一,随机森林是基分类器为决议计划树的bagging算法。bagging思维首要是选用M轮的bootstrap自助采样,每轮采样对应练习一个弱分类器,并且练习的时分是并行核算的,终究将这M个弱分类器进行组合来完成猜测的。由于自助采样,所以bagging是经过样本扰动的办法来添加基分类器的差异性,差异性越大,集成作用越好。因而,bagging的基学习器应为对练习样本扰动灵敏的算法。
Bagging的榜首步是针对数据集,运用自助抽样法(Bootstrap Sampling method)制作多个模型。
所谓的自助抽样,是指得到一个由原始数据会集随机的子集组成的新的练习集。每一个这样的练习集都和原始练习集的巨细相同,但其间有一些重复的数据,因而并不等于原始练习集。并且,咱们将原始的数据集用作测验集。因而,假如原始数据集的巨细为N,那么新的练习集的巨细也为N(其间不重复的数据数量为2N/3),测验集的巨细为N。
Bagging的第二步是在抽样的不同的练习集上,运用相同的算法制作多个模型。
在这儿,咱们以随机森林为例。决议计划树是靠每一个节点在最重要的特征处别离来减小差错的,但与之不同,随机森林中,咱们挑选了随机挑选的特征来结构分裂点。这样能够减小所得猜测之间的相关性。每一个分裂点搜索的特征的数量,是随机森林算法的参数。
因而,用随机森林算法完成的Bagging,每一个树都是用随机样本结构的,每一个分裂点都是用随机的猜测器结构的。
4.3.2 随机森林Bagging
随机森林是由许多决议计划树构成的,不同决议计划树之间没有相关。当咱们进行分类使命时,新的输入样本进入,就让森林中的每一棵决议计划树别离进行判别和分类,每个决议计划树会得到一个自己的分类成果,决议计划树的分类成果中哪一个分类最多,那么随机森林就会把这个成果作为终究的成果。因而,随机森林算法(多个模型)是袋装决议计划树(单个模型)的提高版。
- 一个样本容量为N的样本,有放回的抽取N次,每次抽取1个,终究构成了N个样本。这挑选好了的N个样本用来练习一个决议计划树,作为决议计划树根节点处的样本。
- 当每个样本有M个特点时,在决议计划树的每个节点需求分裂时,随机从这M个特点中选取出m个特点,满意条件m << M。然后从这m个特点中选用某种战略(比方说信息增益)来挑选1个特点作为该节点的分裂特点。
- 决议计划树构成进程中每个节点都要依照过程2来分裂(很简略了解,假如下一次该节点选出来的那一个特点是刚刚其父节点分裂时用过的特点,则该节点已经到达了叶子节点,无须持续分裂了)。一直到不能够再分裂中止。注意整个决议计划树构成进程中没有进行剪枝。
- 依照过程1~3建立很多的决议计划树,这样就构成了随机森林了。
4.3.3 boosting思维
Boosting一族是可将弱学习器提高为强学习器的算法,它的思维便是每一个基分类器纠正前一个基分类器的过错,至于纠正的办法不同所以有不同的boosting算法。算法思维如下:
先从练习集练习出一个基学习器。 再依据基学习器的体现对练习样本散布进行调整,使得从前基学习器做错的练习样本在后续得到较大的重视。
然后依据调整后的样本散布来练习下一个基学习器。
如此重复进行,直到基学习器数目到达指定的阈值T方位。 再将这T个基学习器进行加权结合得到强集成学习器。
4.3.4 Adaboost完成Boosting
AdaBoost思维是在boosting思维的基础上,详细流程如下:
- 初始化练习集权重,从初始练习集里练习得到一个基学习器;
- 添加错分样本的权重,削减分对样本的权重添加过错率小的基学习器的权重,削减过错率大的基学习器的权重;
- 用调整后的(样本权重归一化)样本练习下一个基学习器,直到基学习器的数目到达完成指定的值,然后将这几个基学习器加权进行投票。
榜首步: 从一个决议计划树桩开端,依据一个输入变量作出决议
从图中能够看见,其间有两个圆圈分类过错,因而咱们能够给他们赋予更大的 权重,运用到下一个决议计划树桩中。
第二步: 依据不同的输入变量,结构下一个决议计划树桩
能够发现第二个决议计划将会测验将更大权重的数据猜测正确。和如图的状况中, 咱们需求对另外三个圆圈赋予更大的权重。
第三步: 依据不同的输入变量,练习不同的决议计划树桩
之前过程相同,仅仅这次被猜测过错的是三角形的数据,因而咱们需求对其赋 予更大的权重。
第四步: 将决议计划树桩组合起来,将三个模型组合起来,显而易见,集成的模型比单个模型准确率更高。
(二) 无监督学习
无监督学习问题处理的是,只要输入变量X没有相应输出变量的练习数据。它运用没有专家标示练习数据,对数据的结构建模。
能够运用无监督学习处理的问题,大致分为两类:
4.4 相关规矩:
相关规矩算法在数据库的候选项会集用来发掘呈现频繁项集,并且发现他们之间的相关规矩。
发现不同事物之间一起呈现的概率。在购物篮剖析中被广泛地应用。假如发现买面包的客户有百分之八十的概率买鸡蛋,那么商家就会把鸡蛋和面包放在相邻的货架上。
4.5 聚类问题:
将相似的样本区分为一个簇(cluster)。与分类问题不同,聚类问题预先并不知道类别,自然练习数据也没有类别的标签。
K-Means算法是无监督的聚类算法,完成起来比较简略,聚类作用也不错,因而应用很广泛。它是一个迭代算法的聚类算法,它将相似的数据化到一个簇(cluster)中。该算法核算出k个簇的中心点,并将数据点分配给间隔中心点最近的簇。
k-means初始化:
-
挑选一个k值。如图6,k=3。
-
随机分配每一个数据点到三个簇中的恣意一个。
-
核算每一个簇的中心点。如图6,红色,蓝色,绿色别离代表三个簇的中心点。
-
将每一个调查成果与当时簇比较:
-
重新分配每一个点到距中心点最近的簇中。如图6,上方5个点被分配给蓝色中心点的簇。
-
重新核算中心点:
-
为新分配好的簇核算中心点。如图六,中心点改动。迭代,不再改动则中止:
-
重复过程2-3,直到一切点所属簇不再改动。
维度约减: 顾名思义,维度约减是指削减数据的维度一起保证不丢掉有意义的信息。运用特征提取办法和特征挑选办法,能够到达维度约减的作用。特征挑选是指挑选原始变量的子集。特征提取是将数据从高纬度转化到低纬度。主成分剖析算法便是特征提取的办法。
Apriori算法,K-means算法,PCA主成分剖析都属于无监督学习。
(三)强化学习
经过学习能够取得最大回报的行为,强化学习能够让agent(个别)依据自己当时的状况,来决议下一步采取的动作。
强化学习算法经过重复实验来学习最优的动作。这类算法在机器人学中被广泛应用。在与障碍物碰撞后,机器人经过传感收到负面的反馈然后学会去避免抵触。在视频游戏中,咱们能够经过重复实验选用一定的动作,取得更高的分数。Agent能运用回报去了解玩家最优的状况和当时他应该采取的动作。
五、常见丢失函数总结:
丢失函数概念:
丢失函数(Loss Function)反应的是模型对数据的拟合程度,常见的丢失函数种类包括:最小二乘丢失函数、穿插熵丢失函数、回归中运用的smooth L1丢失函数等。
在机器学习中的一切算法都依赖于最小化或最大化一个函数,咱们称之为丢失函数(loss function)。针对单个练习样本而言,给定一个模型输出和一个实在值,丢失函数输出一个实值差错丢失,用来衡量猜测模型在猜测预期成果好坏的规范。求函数最小点最常用的办法是梯度下降法。
常用丢失函数如下所示:
1、L1范数丢失 核算output和target之差的肯定值。
torch.nn.L1Loss(reduction='mean')
参数: reduction-三个值,none: 不运用约简;mean:回来loss和的均匀值;sum:回来loss的和。默许:mean。
2、均方差错丢失MSELoss 核算output和target之差的均方差。
torch.nn.MSELoss(reduction='mean')
参数: reduction-三个值,none: 不运用约简;mean:回来loss和的均匀值;sum:回来loss的和。默许:mean。
3、穿插熵丢失CrossEntropyLoss
torch.nn.CrossEntropyLoss(weight=None, ignore_index=-100, reduction='mean')
在多分类使命中,常常选用softmax激活函数+穿插熵丢失函数,由于穿插熵描绘了两个概率散布的差异,然而神经网络输出的是向量,并不是概率散布的方法。所以需求softmax激活函数将一个向量进行“归一化”成概率散布的方法,再选用穿插熵丢失函数核算loss。
4、 KL散度丢失KLDivLoss 核算input和target之间的KL散度。KL散度可用于衡量不同的接连散布之间的间隔,在接连的输出散布的空间上(离散采样)上进行直接回归时很有效。
torch.nn.KLDivLoss(reduction='mean')
参数: reduction-三个值,none: 不运用约简;mean:回来loss和的均匀值;sum:回来loss的和。默许:mean。
5、二进制穿插熵丢失BCELoss 二分类使命时的穿插熵核算函数。用于丈量重构的差错,例如主动编码机。注意方针的值t的规模为0到1之间。
torch.nn.BCELoss(weight=None, reduction='mean')
参数: weight (Tensor, optional) – 自界说的每个 batch 元素的 loss 的权重. 有必要是一个长度为 “nbatch” 的 的 Tensor
6 、BCEWithLogitsLoss
BCEWithLogitsLoss丢失函数把Sigmoid层集成到了BCELoss类中。该版比用一个简略的Sigmoid层和BCELoss在数值上更安稳,由于把这两个操作合并为一个层之后,能够运用log-sum-exp的技巧来完成数值安稳。
torch.nn.BCEWithLogitsLoss(weight=None, reduction='mean', pos_weight=None)
参数: weight (Tensor, optional) – 自界说的每个 batch 元素的 loss 的权重. 有必要是一个长度 为 “nbatch” 的 Tensor
六、机器学习算法总结:
类别 | 办法 | 适用状况 | 丢失函数 | 学习战略 | 优化算法 |
---|---|---|---|---|---|
监督学习 | 线性模型 | 二分类 | MSE | 极小化误分类点到超平面间隔 | 最小二乘/梯度下降 |
监督学习 | 逻辑回归 | 二分类 | 对数丢失函数 | 极大似然估量 | 梯度下降 |
决议计划树 | 多分类 | 对数似然丢失 | 极大似然估量 | 特征挑选、生成、剪枝 | |
支撑向量机 | 二分类 | 合页丢失函数 | 支撑向量离超平面软间隔最大化 | 序列最小最优化算法SMO | |
朴素贝叶斯 | 多分类 | 对数丢失函数 | 极大似然估量、极大后验概率估量 | EM算法 |
七、 机器学习实战:
机器学习过程
以随机森林模型为例,机器学习流程一般包括以下几个主要的过程:
1.数据准备: 首要,需求准备用于练习和测验模型的数据集。数据集应包括特征和对应的方针变量。特征是用于猜测方针变量的特点或特性,而方针变量是需求进行回归猜测的值。一般,需求将数据集区分为练习集和测验集,其间练习集用于练习模型,测验集用于点评模型的功能。
2.构建模型 在Scikit-learn库中,能够运用供给的办法类来构建对机器学习模型。以随机森林办法为例,能够设置一些参数来操控随机森林的行为,例如决议计划树的数量、特征挑选的办法、决议计划树的成长办法等。能够依据实践问题和需求进行参数的调整。
3.练习模型: 运用练习集对模型进行练习。练习随机森林模型时将依据练习会集的样本和方针变量的值来构建多棵决议计划树,并在每棵树上进行特征挑选和区分。
4.猜测成果: 运用练习好的随机森林回归模型对测验会集的样本进行猜测。模型将对每棵决议计划树的猜测成果进行均匀或加权均匀,然后得到终究的回归猜测成果。
5.模型点评: 经过与实在方针变量的比较,点评模型的功能。能够运用各种回归功能方针,例如均方差错(Mean Squared Error, MSE)、均匀肯定差错(Mean Absolute Error, MAE)、决议系数(R-squared)等来点评模型的准确性和泛化才能。
6.模型调优: 依据模型点评的成果,能够对随机森林回归模型进行调优。能够测验调整随机森林的参数,例如添加或削减决议计划树的数量、调整特征挑选的办法、调整决议计划树的成长办法等,然后进步模型的功能。
鸢尾花分类使命实战:
构建一个鸢尾花分类猜测模型,依据鸢尾花的花萼和花瓣巨细将其分为三种不同的品种。
Step1.数据集准备
总共包括150行数据每一行数据由 4 个特征值及一个方针值组成。4 个特征值别离为:萼片长度、萼片宽度、花瓣长度、花瓣宽度。方针值为三种不同类别的鸢尾花,别离为:Iris Setosa、Iris Versicolour、Iris Virginica
#加载数据
data_path='/home/aistudio/data/data5420/iris.data' #数据文件的途径
data = np.loadtxt(data_path, #数据文件途径
dtype=float, #数据类型
delimiter=',', #数据分隔符
converters={4:iris_type}) #将第5列运用函数iris_type进行转化
#print(data) #data为二维数组,data.shape=(150, 5)
#print(data.shape)
#数据切割
x, y = np.split(data, #要切分的数组
(4,), #沿轴切分的方位,第5列开端往后为y
axis=1) #代表纵向切割,按列切割
x = x[:, 0:2] #在X中咱们取前两列作为特征,为了后面的可视化。x[:,0:4]代表榜首维(行)全取,第二维(列)取0~2
#print(x)
x_train,x_test,y_train,y_test=model_selection.train_test_split(x, #所要区分的样本特搜集
y, #所要区分的样本成果
random_state=1, #随机数种 test_size=0.3) #测验样本占比
Step2.安装环境
numpy:python第三方库,用于科学核算
matplotlib:python第三方库,主要用于进行可视化
sklearn:python的重要机器学习库,其间封装了很多的机器学习算法,如:分类、回归、降维以及聚类
import numpy as np
from matplotlib import colors
from sklearn import svm
from sklearn.svm import SVC
from sklearn import model_selection
import matplotlib.pyplot as plt
Step3.模型练习
#***********************练习模型*********
def train(clf,x_train,y_train):
clf.fit(x_train, #练习集特征向量
y_train.ravel()) #练习集方针值
#***********************练习模型**********
def train(clf,x_train,y_train):
clf.fit(x_train, #练习集特征向量
y_train.ravel()) #练习集方针值
#练习SVM模型
train(clf,x_train,y_train)
Step4.模型点评
#**************并判别a b是否持平,核算acc的均值*************
def show_accuracy(a, b, tip):
acc = a.ravel() == b.ravel()
print('%s Accuracy:%.3f' %(tip, np.mean(acc)))
def print_accuracy(clf,x_train,y_train,x_test,y_test):
#别离打印练习集和测验集的准确率 score(x_train,y_train):表明输出x_train,y_train在模型上的准确率
print('trianing prediction:%.3f' %(clf.score(x_train, y_train)))
print('test data prediction:%.3f' %(clf.score(x_test, y_test)))
#原始成果与猜测成果进行比照 predict()表明对x_train样本进行猜测,回来样本类别
show_accuracy(clf.predict(x_train), y_train, 'traing data')
show_accuracy(clf.predict(x_test), y_test, 'testing data')
#核算决议计划函数的值,表明x到各切割平面的间隔
print('decision_function:\n', clf.decision_function(x_train))
# 模型点评
print_accuracy(clf,x_train,y_train,x_test,y_test)
Step5.可视化
#***********************练习模型*********
def draw(clf, x):
iris_feature = 'sepal length', 'sepal width', 'petal lenght', 'petal width'
# 开端画图
x1_min, x1_max = x[:, 0].min(), x[:, 0].max() #第0列的规模
x2_min, x2_max = x[:, 1].min(), x[:, 1].max() #第1列的规模
x1, x2 = np.mgrid[x1_min:x1_max:200j, x2_min:x2_max:200j] #生成网格采样点
grid_test = np.stack((x1.flat, x2.flat), axis=1) #stack():沿着新的轴参加一系列数组
print('grid_test:\n', grid_test)
# 输出样本到决议计划面的间隔
z = clf.decision_function(grid_test)
print('the distance to decision plane:\n', z)
grid_hat = clf.predict(grid_test) # 猜测分类值 得到【0,0.。。。2,2,2】
print('grid_hat:\n', grid_hat)
grid_hat = grid_hat.reshape(x1.shape) # reshape grid_hat和x1形状一致
#若3*3矩阵e,则e.shape()为3*3,表明3行3列
cm_light = mpl.colors.ListedColormap(['#A0FFA0', '#FFA0A0', '#A0A0FF'])
cm_dark = mpl.colors.ListedColormap(['g', 'b', 'r'])
plt.pcolormesh(x1, x2, grid_hat, cmap=cm_light) # pcolormesh(x,y,z,cmap)这儿参数代入
# x1,x2,grid_hat,cmap=cm_light制作的是背景。
plt.scatter(x[:, 0], x[:, 1], c=np.squeeze(y), edgecolor='k', s=50, cmap=cm_dark) # 样本点
plt.scatter(x_test[:, 0], x_test[:, 1], s=120, facecolor='none', zorder=10) # 测验点
plt.xlabel(iris_feature[0], fontsize=20)
plt.ylabel(iris_feature[1], fontsize=20)
plt.xlim(x1_min, x1_max)
plt.ylim(x2_min, x2_max)
plt.title('svm in iris data classification', fontsize=30)
plt.grid()
plt.show()
八、机器学习导图总结共享
以下是作者自己收拾的机器学习笔记思维导图,这儿免费共享供咱们学习,导图和笔记后续会持续更新。
链接:app.yinxiang.com/fx/339fe142…
本文参阅及优异资料引荐:
easyai.tech/ai-definiti…
www.cnblogs.com/crazymagic/…