一、如何选择机器学习策略 一个例子:当你的团队在使用cat图片去喂神经网络,让它去识别出一只cat.但是你的算法的精确度(accuracy)一直没办法提高。 下面是你可能会想到的办法: 1.喂更多的数据 2.收集更多种多样的图片 3.使算法更多的迭代 4.使用更多层的神经网络 5.使用更小层的神经网络 6.尝试添加正则化 7.改变神经网络架构 这是这本书的意义所在,让你做出更正确的选择 二、一些概念 监督学习是目前的主流,包含了线性回归,逻辑回归以及神经网络 规模驱动着机器学习:更大的数据,更强的计算力 三、测试集的选择 首先定义了如下三个概念: 1.训练集-学习算法运行的地方 2.DEV set-你用来调参,选择特征的地方 也叫做holdout closs validation set 3.测试集-改进算法性能,而不是调参的地方 dev和test set决定了机器学习系统的核心 所以你选择的数据集应该忠实的反映真实数据 四、dev and test集应该满足同一分布 比如你的数据集来源于美国,中国,印度和其他,就不要强行说美国,中国是dev set,印度和其他为一个set 因为一旦选定了dev and test set,你的团队就应该专注于提升算法性能。如果这两个集不是同一分布的,相当于之后的白做了。原因如下: 1.dev set上的过拟合 2.test set的数据可能会比dev set上表现的还要好 3.test set和dev set会具有不同的表现 甚至还有其他不确定的问题 五,多大的数据集才算大 对于dev set,如果分类器A的精度是90.1%和分类器B是90.0%,那么100样本集就不足以区分这0.1%。大概10000个样本才有可能检测到0.1%的提升。 对于test set,dev/test的比不要过大 六、只针对单一指标去优化 例如,对于矛盾的查准率和查全率,你应该只针对某一个指标,多指标的比较,会让你难以抉择选择哪个算法。非要同时要,也要把他们整合进一个指标。例如,Fiscore 七、使用dev set和指标去加速迭代 一般遵循如下方式: 有一个idea,实现它,开始测试这个idea。不断的迭代idea过程。这就是为啥要拥有dev/test set和指标,因为可以加速这些idea的实现,从而产生更好的结果。 八、何时去修正dev/test set和指标 在开始一个机器学习系统时,先确定dev/test set和指标。如果一旦在实际中发现,这些出了问题,立马改正。 1.当实际数据集和dev/test set不符时 2.dev set上发现了过拟合 3.指标与这个项目的目标出现了偏差