【ML/DL】机器学习二三事

【ML/DL】机器学习二三事_第1张图片

◆数据集构建和算法调参哪个更累?

先给看法:数据集构建更累
一直使用开源数据集的人,大部分精力都在于模型选择和调优,会觉得数据集好像没有那么麻烦。
但下场搞过数据的人,都知道构建一个高质量数据集有多么耗红和耗蓝了!这既是一个体力活,又是一个脑力活,一方面需要明确可用的数据源,指定合适的采集量,另一方面还要制定清晰的打标标准。打标完成后还要解决样本不均衡导致的问题。黑累。
用一个形象的比喻来说:
搞数据集就像去菜市场买菜洗菜的过程(可能找不到菜市场得自己种菜也说不定),是把手弄脏的过程。
算法调参就像在家做菜时,选择怎么样的佐料搭配,菜最好吃的过程。

◆训练集、测试集、验证集还分不清?

测试集用于训练模型得到算法的参数;
验证集用于评估每一轮训练之后的模型的性能,决定是否需要继续or停止训练,同时也用于比较不同超参数下训练生成的模型性能。
测试集用于评估反复调参后的最终模型的性能,就算对测试结果不满意也不能去重新调整模型,能做的是分析是否是训练集,测试集和验证集的数据分布不一致导致的,若是则调整分布后重新训练。
训练时,用于评价模型训练性能的是验证集;预测时,用于模型泛化性能点是测试集
多说一句:
算法的性能评价指标是针对测试集和验证集而言的。

◆准确率:为什么人人都爱P和R?

先有准确率,后有P和R。

  • 准确率:ACC =(TP+FN)/ ALL
  • 精准率:P = TP /( TP+FP)

为什么不用ACC?
准确率表示的是预测结果中,所有预测正确的数量占总数量的比例;精准率则表示所有预测结果中,预测正确的比例。
当样本中存在多种类别,且不同类别的样本数比较均衡时,准确率是一个比较简单好用的指标。但是当样本数量非常失衡时,准确率将失效,一个典型的例子是:预测飞机乘客是否为恐怖分子,比如1000个人中有1个是恐怖分子,算法将所有人都预测为安全人员 将会获得99.99%的准确率,相当高,但没什么用,没有将恐怖分子给识别出来。
解决这个问题可以有两个方法:

  • 平均准确率:对每个类别计算准确率后再平均
  • 精准率和查全率:就是为衡量每个类别的预测情况而生,能够看到每个类别的预测情况。

◆什么时候不适合上AI算法?

影响算法选择的是数据集,如果没有公开数据集而自己构造数据集又很困难时,就不适合用AI算法。
数据集构造的困难主要体现在:
(1)有数据但没有明确的标注标准,此时若真要上算法可以试试无监督学习;
(2)有数据也有标注标准,但需要标注的数据量很大,此时就是一个体力活了,需要耗费大量的人力成本,虽然可以用机器标注减少一部分工作量。
能够根据业务目标构建一个高质量的数据集,是一名算法工程师的核心竞争力之一。

◆深度学习不是银弹2022.7.23

算法的几个阶段
(1)规则学习阶段
规则算法直观简单,谁都能想到,在一些简单的场合中效果也不错。
它的优点是,通过严格的规则制定,抽取的准率高,但大量规则不清晰的样本无法被识别,即召回率可能不高。另外,不适合复杂情形,即无法制定规则或者需要制定大量的规则。适合简单情形,能观察出明显的数据规则。
(2)统计学习阶段
无法提取出规则的就要考虑ML和DL了。首先考虑ML,这个不用人工总结规则,但是需要人工构建特征,也涉及到复杂的特征工程。
特征工程也是一项体力活,但与DL打标签相比,特征工程还有一些技术含量,同时对数据量的需求没那么高,训练也快。
这里还包括无监督学习,好处是不需要打标,但缺点是无法衡量效果,所以除开一些特殊的场景外,一般都用的是监督学习,需要算法返回一个明确的目标。
(3)深度学习阶段
深度学习最大的优点有两个,一是不需要进行特征工程,二是性能SOTA,但是打标耗时啊,人工打标的成本昂贵。需要的数据量也高了一个量级。
本质上是通过以数据量换性能。最适合特征工程无法进行,并且数据量够多,且有明确的标注标注规则的场景。所以DL不是银弹,它的使用场景还挺苛刻的。

小结:你会发现,无论选择什么算法,都会涉及到很多体力活,搞算法就没有轻松的。算法的训练和调优算是比较简单无脑的了。算法的上下游才耗时间。一点经验就是:能用规则算法解决的,就没必要强上AI算法。
**不同方法的性能有高低之分,但方法本身无好坏之分,主要取决于适用场景。**在小数据集合和简单场景下,规则算法也很好用,还不用打标。

◆浅谈正负样本2022.9.5

新手炼丹师在算法数据集构建时往往只会关注到正样本的采集和标注,容易忽视负样本的构建。
然而,正负样本如同太极之两仪,相互依存。有了负样本,才能识别正样本。当识别出了正样本的同时,也就是否定了它是负样本。
针对几种不同的场景谈谈正负样本:
(1)统计学习
二分类:选取两种不同的类别作为正负类,比如预测是否是恶性肿瘤,YES视为正类,NO视为负类。我们通常将更关注的一类视为正类,因为计算性能指标时,是以预测结果中正类的正确数量进行计算的。
多分类:如A、B、C,当训练A类时,将A类视为正类,将B和C视为负类,计算P、R、F1,类似的,当训练B和C时,亦如是。最后对多个类别的P、R、F1求平均,包括宏平均和微平均两种计算方式。
(2)深度学习
正负样本的划分同上,区别在于二分类和多分类的输出层结点数不同。
(3)目标检测
以YOLO为例,通过设置IOU阈值来划分正负样本:当预测框和GT的IOU大于阈值时,该预测框视为正类;否则视为负类
(4)信息抽取(关系抽取)
一句话中有多个实体,如A、B、C,其中A和B有关系,则此实体对视为正样本,其它没有关系的实体对视为负样本,即(A、C)和(B、C)

你可能感兴趣的:(算法篇,机器学习,算法,心得)