⚠️本文为稀土技术社区首发签约文章,30天内制止转载,30天后未获授权制止转载,侵权必究!
✨专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《浅显易懂OCR》专栏,对标最全OCR教程,具体章节如导图所示,将分别从OCR技术发展、方向、概念、算法、论文、数据集等各种视点展开具体介绍,综合根底与实战常识。本篇为前语常识部分第二篇文章,首要介绍机器学习回归算法及集成学习算法部分,方便小白或许AI爱好者快速学习根底常识,具体内容可能未能含概一切常识点,其他内容能够访问自己主页其他文章或个人主页博客,一起因自己水平有限,文中如有过错恳请指出,欢迎互相学习沟通!
个人主页: GoAI | 大众号: GoAI的学习小屋 | 沟通群: 704932595 |个人简介 : 签约作者、百度飞桨PPDE、领航团团长、开源特训营导师、CSDN、阿里云社区人工智能范畴博客专家、新星方案核算机视觉方向导师等,专注大数据与人工智能常识分享。
✨文章目录
《浅显易懂OCR》前语常识:机器学习根底(一)
《浅显易懂OCR》前语常识:机器学习根底(二)(本篇)
《浅显易懂OCR》前语常识:机器学习根底(二)
三、 回归算法
3.1 常见回归算法
- 线性回归
- 多项式回归
- 支撑向量机回归
- 决议计划树回归
- 随机森林回归
- LASSO 回归
- Ridge 回归
- ElasticNet 回归
- XGBoost 回归
3.1.1 随机森林回归
(1)随机森林回归概念
随机森林回归是一种根据集成学习的算法,它经过构建多个决议计划树并将它们的猜测成果进行集成来进行回归使命。在随机森林中,每棵决议计划树都是独立并在随机挑选的子样本上进行练习的,这样能够有效地削减过拟合的危险。随机森林经过将多个决议计划树的猜测成果进行均匀或加权均匀,然后得到终究的回归成果。
(2)随机森林回归的基本原理如下:
随机挑选样本:从原始练习会集随机挑选一部分样本,构成一个子样本集。这样能够使得每棵决议计划树都在不同的样本集上进行练习,然后添加模型的多样性。
随机挑选特征:关于每个决议计划树的每个节点,在挑选最佳区分特征时,只考虑随机挑选的一部分特征。这样能够防止某些特征对整个模型的影响过大,然后进步模型的鲁棒性。
构建决议计划树:在每个子样本集上运用某种决议计划树算法(如CART算法)构建一棵决议计划树。决议计划树的成长进程中,一般选用递归地挑选最佳区分特征,将数据集区分为不纯度最小的子集。
集成猜测:关于新的输入样本,经过将多棵决议计划树的猜测成果进行均匀或加权均匀,然后得到终究的回归成果。
(3)随机森林回归的进程
随机森林回归的进程一般包括以下几个首要的进程:
数据预备:首要,需求预备用于练习和测验模型的数据集。数据集应包含特征和对应的方针变量。特征是用于猜测方针变量的特点或特性,而方针变量是需求进行回归猜测的值。一般,需求将数据集区分为练习集和测验集,其间练习集用于练习模型,测验集用于评价模型的功能。
构建随机森林:在Scikit-learn库中,能够运用RandomForestRegressor类来构建随机森林回归模型。能够设置一些参数来控制随机森林的行为,例如决议计划树的数量、特征挑选的办法、决议计划树的成长办法等。能够根据实践问题和需求进行参数的调整。
练习模型:运用练习集对随机森林回归模型进行练习。模型将根据练习会集的样本和方针变量的值来构建多棵决议计划树,并在每棵树上进行特征挑选和区分。
猜测成果:运用练习好的随机森林回归模型对测验会集的样本进行猜测。模型将对每棵决议计划树的猜测成果进行均匀或加权均匀,然后得到终究的回归猜测成果。
模型评价:经过与真实方针变量的比较,评价模型的功能。能够运用各种回归功能指标,例如均方差错(Mean Squared Error, MSE)、均匀绝对差错(Mean Absolute Error, MAE)、决议系数(R-squared)等来评价模型的准确性和泛化才能。
模型调优:根据模型评价的成果,能够对随机森林回归模型进行调优。能够测验调整随机森林的参数,例如添加或削减决议计划树的数量、调整特征挑选的办法、调整决议计划树的成长办法等,然后进步模型的功能。
模型运用:在模型评价和调优后,能够运用练习好的随机森林回归模型进行实践的猜测。能够将新的输入样本输入到模型中,然后得到对应的回归猜测成果。随机森林回归模型在实践运用中具有广泛的运用场景,例如金融范畴的贷款危险评价、房价猜测、医疗范畴的疾病猜测、销售猜测等。
(4)随机森林的长处:
能够处理高维数据和大规模数据集。
具有较好的泛化功能,能够有效地削减过拟合的危险。
能够处理缺失值和异常值。
关于非线性联系的数据,具有较强的拟合才能。
3.1.2 XGBoost 回归
XGBoost是boosting算法的其间一种。Boosting算法的思维是将许多弱分类器集成在一起形成一个强分类器。由于XGBoost是一种进步树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是CART回归树模型。
参阅学习:一文读懂机器学习大杀器xgboost原理
回归算法参阅学习:blog.csdn.net/qq_42363032…
3.3集成学习
集成学习是一种将不同学习模型(比方分类器)的成果组合起来,经过投票或均匀来进一步进步准确率。一般,关于分类问题用投票;关于回归问题用均匀。这样的做法源于“世人拾材火焰高”的想法。
集成算法首要有三类:Bagging,Boosting 和Stacking。
3.3.1 bagging思维
bagging是集成学习的思维之一,随机森林是基分类器为决议计划树的bagging算法。bagging思维首要是选用M轮的bootstrap自助采样,每轮采样对应练习一个弱分类器,而且练习的时分是并行核算的,最终将这M个弱分类器进行组合来完成猜测的。由于自助采样,所以bagging是经过样本扰动的办法来添加基分类器的差异性,差异性越大,集成作用越好。因而,bagging的基学习器应为对练习样本扰动灵敏的算法。
Bagging的第一步是针对数据集,运用自助抽样法(Bootstrap Sampling method)建造多个模型。
所谓的自助抽样,是指得到一个由原始数据会集随机的子集组成的新的练习集。每一个这样的练习集都和原始练习集的巨细相同,但其间有一些重复的数据,因而并不等于原始练习集。而且,咱们将原始的数据集用作测验集。因而,假如原始数据集的巨细为N,那么新的练习集的巨细也为N(其间不重复的数据数量为2N/3),测验集的巨细为N。
Bagging的第二步是在抽样的不同的练习集上,运用相同的算法建造多个模型。
在这里,咱们以随机森林为例。决议计划树是靠每一个节点在最重要的特征处分离来减小差错的,但与之不同,随机森林中,咱们挑选了随机挑选的特征来结构割裂点。这样能够减小所得猜测之间的相关性。每一个割裂点查找的特征的数量,是随机森林算法的参数。
因而,用随机森林算法完成的Bagging,每一个树都是用随机样本结构的,每一个割裂点都是用随机的猜测器结构的。
3.3.2 随机森林Bagging
随机森林是由很多决议计划树构成的,不同决议计划树之间没有关联。当咱们进行分类使命时,新的输入样本进入,就让森林中的每一棵决议计划树分别进行判断和分类,每个决议计划树会得到一个自己的分类成果,决议计划树的分类成果中哪一个分类最多,那么随机森林就会把这个成果当做终究的成果。因而,随机森林算法(多个模型)是袋装决议计划树(单个模型)的进步版。
- 一个样本容量为N的样本,有放回的抽取N次,每次抽取1个,终究形成了N个样本。这挑选好了的N个样本用来练习一个决议计划树,作为决议计划树根节点处的样本。
- 当每个样本有M个特点时,在决议计划树的每个节点需求割裂时,随机从这M个特点中选取出m个特点,满意条件m << M。然后从这m个特点中选用某种战略(比方说信息增益)来挑选1个特点作为该节点的割裂特点。
- 决议计划树形成进程中每个节点都要按照进程2来割裂(很容易理解,假如下一次该节点选出来的那一个特点是刚刚其父节点割裂时用过的特点,则该节点已经到达了叶子节点,无须持续割裂了)。一直到不能够再割裂停止。留意整个决议计划树形成进程中没有进行剪枝。
- 按照进程1~3建立大量的决议计划树,这样就构成了随机森林了。
3.3.3 boosting思维
Boosting一族是可将弱学习器进步为强学习器的算法,它的思维就是每一个基分类器纠正前一个基分类器的过错,至于纠正的办法不同所以有不同的boosting算法。算法思维如下:
先从练习集练习出一个基学习器。 再根据基学习器的体现对练习样本散布进行调整,使得先前基学习器做错的练习样本在后续得到较大的重视。
然后根据调整后的样本散布来练习下一个基学习器。
如此重复进行,直到基学习器数目到达指定的阈值T方位。 再将这T个基学习器进行加权结合得到强集成学习器。
3.3.4 Adaboost完成Boosting
AdaBoost思维是在boosting思维的根底上,具体流程如下:
初始化练习集权重,从初始练习集里练习得到一个基学习器 添加错分样本的权重,削减分对样本的权重 添加过错率小的基学习器的权重,削减过错率大的基学习器的权重 用调整后的(样本权重归一化)样本练习下一个基学习器 直到基学习器的数目到达完成指定的值 然后将这几个基学习器加权进行投票。
a) 由于Bagging中的每一个模型是独立结构的,咱们以为它是并行集成的。与之不同,Boosting中的每一个模型,都是根据对前一个模型的过失进行修正来结构的,因而Boosting是线性的。
b) Bagging中选用的是简略的投票,每一个分类器相当于一个投票(节点割裂,相当于进行一次投票),最终的输出是与大多数的投票有关;而在Boosting中,咱们对每一个投票赋予权重,最终的输出也与大多数的投票有关——但是它却是线性的,由于赋予了更大的权重给被前一个模型过错分类的实体(拥有更大的权重,则其差错的影响被放大,有助于咱们得到使得更小差错的模型)。
AdaBoost指的是自适应增强(Adaptive Boosting)
上图,第一、二、三步中弱学习模型被称作决议计划树桩(一个一级的决议计划树只根据一个输入特征进行猜测;一个决议计划树的根节点直接连接到它的叶子节点)。结构弱学习模型的进程持续到,a)到达用户定义的数量,或许 b)持续练习已经无法进步。第四步,将三个决议计划树桩组合起来。
第一步: 从一个决议计划树桩开始,根据一个输入变量作出决议
从图中能够看见,其间有两个圆圈分类过错,因而咱们能够给他们赋予更大的 权重,运用到下一个决议计划树桩中。
第二步: 根据不同的输入变量,结构下一个决议计划树桩
能够发现第二个决议计划将会测验将更大权重的数据猜测正确。和如图的情况中, 咱们需求对另外三个圆圈赋予更大的权重。
第三步: 根据不同的输入变量,练习不同的决议计划树桩
之前进程一样,仅仅这次被猜测过错的是三角形的数据,因而咱们需求对其赋 予更大的权重。
第四步: 将决议计划树桩组合起来,将三个模型组合起来,清楚明了,集成的模型比单个模型准确率更高。
4.1 无监督学习
无监督学习问题处理的是,只要输入变量X没有相应输出变量的练习数据。它运用没有专家标注练习数据,对数据的结构建模。
能够运用无监督学习处理的问题,大致分为两类:
关联剖析:发现不同事物之间一起出现的概率。在购物篮剖析中被广泛地运用。假如发现买面包的客户有百分之八十的概率买鸡蛋,那么商家就会把鸡蛋和面包放在相邻的货架上。
聚类问题: 将相似的样本区分为一个簇(cluster)。与分类问题不同,聚类问题预先并不知道类别,天然练习数据也没有类别的标签。
维度约减: 望文生义,维度约减是指削减数据的维度一起确保不丢失有意义的信息。运用特征提取办法和特征挑选办法,能够到达维度约减的作用。特征挑选是指挑选原始变量的子集。特征提取是将数据从高纬度转换到低纬度。广为熟知的主成分剖析算法就是特征提取的办法。
Apriori算法,K-means算法,PCA主成分剖析都属于无监督学习。
4.2 强化学习
经过学习能够取得最大报答的行为,强化学习能够让agent(个体)根据自己当时的状况,来决议下一步采纳的动作。
强化学习算法经过重复试验来学习最优的动作。这类算法在机器人学中被广泛运用。在与障碍物碰撞后,机器人经过传感收到负面的反馈然后学会去防止冲突。在视频游戏中,咱们能够经过重复试验选用必定的动作,取得更高的分数。Agent能运用报答去理解玩家最优的状况和当时他应该采纳的动作。
四、常见机器学习模型总结
类别 | 办法 | 适用情况 | 丢失函数 | 学习战略 | 优化算法 |
---|---|---|---|---|---|
监督学习 | 线性模型 | 二分类 | MSE | 极小化误分类点到超平面间隔 | 最小二乘/梯度下降 |
监督学习 | 逻辑回归 | 二分类 | 对数丢失函数 | 极大似然估量 | 梯度下降 |
决议计划树 | 多分类 | 对数似然丢失 | 极大似然估量 | 特征挑选、生成、剪枝 | |
支撑向量机 | 二分类 | 合页丢失函数 | 支撑向量离超平面软间隔最大化 | 序列最小最优化算法SMO | |
朴素贝叶斯 | 多分类 | 对数丢失函数 | 极大似然估量、极大后验概率估量 | EM算法 |
五、常见丢失函数总结:
丢失函数概念:在深度学习中的一切算法都依赖于最小化或最大化一个函数,咱们称之为丢失函数(loss function)。针对单个练习样本而言,给定一个模型输出和一个真实值,丢失函数输出一个实值差错丢失,用来衡量猜测模型在猜测预期成果好坏的规范。求函数最小点最常用的办法是梯度下降法。
丢失函数(Loss Function)反响的是模型对数据的拟合程度,常见的丢失函数种类包括:最小二乘丢失函数、穿插熵丢失函数、回归中运用的smooth L1丢失函数等。
19种丢失函数如下所示:
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
7、 MarginRankingLoss
torch.nn.MarginRankingLoss(margin=0.0, reduction='mean')
参数:
margin:默认值0
8、HingeEmbeddingLoss
torch.nn.HingeEmbeddingLoss(margin=1.0, reduction='mean')
参数:
margin:默认值1
9、多标签分类丢失MultiLabelMarginLoss
torch.nn.MultiLabelMarginLoss(reduction='mean')
10、平滑版L1丢失SmoothL1Loss ,也被称为 Huber 丢失函数。
torch.nn.SmoothL1Loss(reduction='mean')
11、 2分类的logistic丢失SoftMarginLoss
torch.nn.SoftMarginLoss(reduction='mean')
12、多标签one-versus-all丢失MultiLabelSoftMarginLoss
torch.nn.MultiLabelSoftMarginLoss(weight=None, reduction='mean')
13、 cosine丢失CosineEmbeddingLoss
torch.nn.CosineEmbeddingLoss(margin=0.0, reduction='mean')
参数:margin:默认值0
14、多类别分类的hinge丢失MultiMarginLoss
torch.nn.MultiMarginLoss(p=1, margin=1.0, weight=None, reduction='mean')
参数:p=1或许2 默认值:margin:默认值1
15、三元组丢失TripletMarginLoss
和孪生网络相似,具体比方:给一个A,然后再给B、C,看看B、C谁和A更像。
torch.nn.TripletMarginLoss(margin=1.0, p=2.0, eps=1e-06, swap=False, reduction='mean')
16、连接时序分类丢失CTCLoss,CTC连接时序分类丢失,能够对没有对齐的数据进行主动对齐,首要用在没有事先对齐的序列化数据练习上。比方语音辨认、ocr辨认等等。 torch.nn.CTCLoss(blank=0, reduction=’mean’)
参数:reduction-三个值,none: 不运用约简;mean:回来loss和的均匀值;sum:回来loss的和。默认:mean。
17、负对数似然丢失NLLLoss负对数似然丢失。用于练习C个类别的分类问题。
torch.nn.NLLLoss(weight=None, ignore_index=-100, reduction='mean')
参数:weight (Tensor, optional) – 自定义的每个类别的权重. 有必要是一个长度为 C 的 Tensorignore_index (int, optional) – 设置一个方针值, 该方针值会被疏忽, 然后不会影响到 输入的梯度.
18、 NLLLoss2d关于图片输入的负对数似然丢失。它核算每个像素的负对数似然丢失。
torch.nn.NLLLoss2d(weight=None, ignore_index=-100, reduction='mean')
参数: weight (Tensor, optional) – 自定义的每个类别的权重. 有必要是一个长度为 C 的 Tensorreduction-三个值,none: 不运用约简;mean:回来loss和的均匀值;sum:回来loss的和。默认:mean。
19、 PoissonNLLLoss 方针值为泊松散布的负对数似然丢失。
torch.nn.PoissonNLLLoss(log_input=True, full=False, eps=1e-08, reduction='mean')
六、机器学习导图总结分享
以下是作者自己收拾的机器学习笔记思维导图,这里免费分享供我们学习,导图和笔记后续会持续更新。
链接:app.yinxiang.com/fx/339fe142…
本文参阅及优秀资料引荐:
easyai.tech/ai-definiti…
www.cnblogs.com/crazymagic/…