1.small data做机器学习
复杂的模型容易出现过拟合。
随机森林、xgoost等适用于较小data。
线性回归适用于更少的data。
But 在化学这种方面只能做实验获取data,并且人工标注耗费时间。所以想寻找一个能获取最少label的data的方法。
2.Active Learning 主动学习 - 拿到的是最小数据集
源码
核心内容:通过选择更有效的数据,用更少的data实现更好的acc。
比如c的data就比b的data更有效,更接近真实的分界线。
流程图:uncertainty的理解是关键。
三、手搓代码
思路:
1)首先在未标记的数据集中选取少量样本进行标注,构成训练集;
2)选取训练模型,使用少量标注样本的训练集对模型进行训练,此时模型的性能不高;
3)使用训练好的模型预测未标注的样本;
4)定义查询策略,根据策略返回未标注样本的优先级评分,选择出的需要标注的数据,进行人工标注;
5)将新选择的数据加入到训练集中更新训练集,使用更新后的训练集来训练模型;
6)判断模型是否达到停止准则?若未达到停止标准,则继续利用查询策略选择需要被标记的样本并进行人工标注,循环第4-5-6步,直到达到停止标准(这个准则可以是迭代次数,也可以是准确率等指标达到设定值例如模型精度超过99%),表示模型已训练好可以应用。
策略包括:
1· Least Confident:看到上上图可以理解,LC会通过当前的model计算整个X_pool中最靠近分界线的data,也就是分为两类概率相同/接近的data,即最uncertainty的就是最先选择的。然后把选好的data组成一个data set,就构成了需要最少label的数据集。所以只要是能度量uncertainty的模型都能用这个AL的方法。
2· Query-by-committee:用之前data训练出多个不同model,然后互相找出意见最不一样的点,作为uncertainty的度量。
四、贝叶斯优化
已经train完了,用于大模型调整超参数,即神经网络这种黑盒模型 无法数学表达出参数。比网格搜索和随机搜索更高效。