一、模型开发的一般步骤
1. 明确研究问题
确定问题的组成和结果,明晰问题是分类问题还是回归问题
2. 决定系统总体架构
①理解数据:采集(爬取)数据,生成(导入)数据,进行数据清洗操作,包括数据预处理:缺失值处理、重复值处理、转换数据类型、规整字符串、进行数据归一化/标准化等。
②特征工程:对所采集的数据根据问题分析所采取的特征、确定所需的特征值,计算各个特征和标签的相关性,查看标签对应的相关系数,并根据相关系数的大小选择特征列作为模型输入。
③建立数据集:选取训练数据和测试数据的特征和标签,划分好训练数据集与测试数据集。
④构建神经网络:根据问题和输入设计好神经网络架构。
⑤选择算法:选择合适的机器学习算法,导入算法或自写算法。
⑥选择超参数:选择、初始化好计算过程里相应的超参数。
⑦训练模型:构建好模型,开始训练。
3. 模型评估
①对模型的预测结果进行相应的精度评估。
②对模型的精度、误差等进行相应的优化,采取对应的优化方案,例如扩大神经网络、进行正则化等等,不断循环进行,使模型的精度更高,预测结果更好。
文本分类实例:
· 构建分类器来识别垃圾邮件和非垃圾邮件
思路:
· 训练一个监督学习算法,输入特征x为电子邮件的相关特征,输出标签y为1或0,表示电子邮件是否是垃圾邮件。
· 取英语或其它词典中排名前10,000的单词(字词),并使用它们来定义特征x_1,x_2...x_10,000。
例如,对于右边的电子邮件,取单词表设置各单词的特征为0或1或其出现的具体次数。
给定这个单词表各单词出现频率或次数的特征值,可以训练分类算法在给定x的情况下预测y值。
· 获取数据方式例子:创建大量虚假电子邮件地址,故意交到垃圾邮件发送者手中,以期获得大量垃圾邮件数据。或者基于电子邮件路由开发更复杂的数据获取方式。
· 在检测特征值、提取特征单词表的过程中,从电子邮件正文里可提出更复杂的功能。
不同的检测算法、不同的特征值提取方式、不同的数据获取方式都可能导致最终结果和模型效果的不同。
二、开发过程中的模型诊断
错误分析:
假设有500条交叉验证实例,模型算法错误分类了500个实例的100个;
※需手动查看这100个错误实例,并深入了解算法出错的地方及可能原因。
· 从交叉验证集中找到一组算法错误分类的实例,并尝试把它们分组为共同的主题、共同的属性或共同的特征——找清楚导致分类错误所可能的原因。
· 例如,很多被错误分类的垃圾邮件是药品销售类别,那么实际上通过这些示例并手动计算此分类中有多少垃圾邮件是药品垃圾邮件,并估计药品垃圾邮件分类错误的原因;如果分类错误可能是由于拼写错误,那么也会检查计算错误分类的示例有多少个是拼写错误引起的。
· 如果错误分类的数据不仅仅有100个而是更大(例如10,000个),那么通常会抽取大约一定数目的子集,在这些子集上进行查看以确定错误分类数据的情况。
· 如果经过此分析,发现很多错误集中于某一类的示例,那么可能下一步的工作就是收集更多该类型的示例训练数据,或者润色与该类相关的特征值、添加新功能,或者修改优化对该类数据的分析算法。
通过学习曲线反映的偏差方差分析能够反映出模型的一些错误,以提供一些“开发更大神经网络”或“收集更多数据”的工作线索。