机器学习的开发流程

  • 数据收集
  • 数据预处理
  • 特征提取
  • 模型构建
  • 模型测试评估
  • 投入使用(模型部署与整合)
  • 迭代优化

分析机器学习的开发流程
数据收集与存储

  • 数来源
    • 用户访问行为数据
    • 业务数据
    • 外部第三方数据
  • 数据存储
    • 需要存储的数据:原始数据、预处理后数据、模型结果
    • 存储设施:mysql、HDFS、HBASE、SOlr、Elasticsearch、Kafka、Redis等
  • 数据收集方式
    • Flume & Kafka

机器学习可用公开数据集

实际工作中,我们可以使用业务数据进行机器学习开发,但是在学习过程中,没有业务数据,此时可以使用公开的数据集进行开发,常用的数据集如下:


数据清洗和转换

  • 数据生产环境中机器学习比较耗时的一部分
  • 大部分机器学习模型所处理的都是特征,特征通常是输入变量所对应的可用于模型的数值表示
  • 大部分情况下,收集得到的数据需要经过预处理后才能够为算法所使用,预处理的操作主要包括以下几个部分
    • 数据过滤
    • 处理数据缺失
    • 处理可能的异常、错误或者异常值
    • 合并多个数据源数据
    • 数据汇总

对数据进行初步的预处理,需要将其转换为一种适合机器学习的表现形式,对许多模型来说,这种表示就是包含数值数据的向量或者矩阵

  • 将类别数据编码成为对应的数值表示(一般使用1-of-k方法)-dumy
  • 从文本数据中提取有用的数据(一般使用词袋法或者TF-IDF)
  • 处理图像或者音频数据(像素、声波、音频、振幅等<傅里叶变换>)
  • 对数值数据进行转换,比如对数转换
  • 对特征进行正则化、标准化,以保证同一模型的不同输入变量的值域相同
  • 对现有变量进行组合或转换以生成新特征,比如平均数 (做虚拟变量)不断尝试

类型特征转换之1-of-k

  • 功能:将非数值的特征值转换为数值型的数据
  • 描述:假设变量的取值有k个,如果对这些值用1到k进行编排,则可用维度为k的向量来表示一个变量的值。在这里的向量里,该取值所对应的序号所在的元素为1,其他元素均为0.
    分析机器学习的开发流程

文本数据抽取

  • 词袋法:将文本当做一个无序的数据集合,文本特征可以采用文本中的词条T进行体现,那么文本中所出现的次数就可以体现文档的特征
  • TF-IDF:词条的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降
  • 也就是说词条在文本中出现的次数越多,表示该词条对该文本的重要性越高
  • 词条在所有文本中出现的次数越少,说明这个词条对文本的重要性越小
  • TF(词频)指某个词条在文本中出现的次数,一般会将其进行归一化处理(该词条数量/该文档中所有词条数量)
  • IDF(逆向文件频率)指一个词条重要性的度量,一般计算方式为总文件数目除以包含该语句之文件的数目,在将得到的商取对数得到(TF-IDF实际上就是:TF*IDF)

文本数据抽取的案例

  • 文档1内容:A(2)、B(1)、C(3)、D(9)、E(1)
  • 文档2内容:A(1)、B(5)、C(2)、D(10)
A B C D E
文档1 2 1 3 9 1
文档2 1 5 2 10 0

TF(A1)=1/8TF(A|文档1) = 1/8
TF(B1)=1/16TF(B|文档1) = 1/16
......... ...
TF(E2)=0/18=0TF(E|文档2) = 0/18 = 0
IDF(A)=IDF(B)=IDF(C)=IDF(D)=2/2=1IDF(A) = IDF(B)=IDF(C)=IDF(D)=2/2=1
IDF(E)=1/2=2IDF(E)=1/2=2

A B C D E
文档1 1/8 1/16 3/16 9/16 1/8
文档2 1/18 5/18 1/9 5/9 0

模型训练及测试

  • 模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择
  • 在训练数据集上运行模型(算法)并在测试数据集中测试效果,迭代进行数据模型的修改,这种方法被称为交叉验证(将数据分为训练集和测试集,使用训练集构建模型,并使用测试集评估模型提供修改建议)
  • 模型的选择会尽可能多的选择算法进行执行,并比较执行的结果
  • 模型的测试一般以下几个方面来进行比较,分别是准确率/召回率/精准率/F值
    • 准确率(Accuracy)=提取出的正确样本数/总样本数
    • 召回率(Recall)=正确的正例样本数/样本中的正例样本数——覆盖率
    • 精准率(Precision)=正确的正例样本数/预测为正例的样本数
    • F值=PrecisionRecall2 / (Precision+Recall) (即F值为正确率和召回率的调和平均值)

分析机器学习的开发流程
分析机器学习的开发流程
模型评估
分析机器学习的开发流程


ROC

ROC(Receiver Operating Characteristic)最初源于20世纪70年代的信号 检测理论,描述的是分类混淆矩阵中FPR-TPR两个量之间的相对变化情况, ROC曲线的纵轴是“真正例率”(True Positive Rate 简称TPR),横轴是“假正例率” (False Positive Rate 简称FPR)。

如果二元分类器输出的是对正样本的一个分类概率值,当取不同阈值时会 得到不同的混淆矩阵,对应于ROC曲线上的一个点。那么ROC曲线就反映了 FPR与TPR之间权衡的情况,通俗地来说,即在TPR随着FPR递增的情况下,谁 增长得更快,快多少的问题。TPR增长得越
快,曲线越往上屈,AUC就越大, 反映了模型的分类性能就越好。当正负样本不平衡时,这种模型评价方式比起 一般的精确度评价方式的好处尤其显著。

分析机器学习的开发流程


AUC

AUC的值越大表达模型越好

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个 面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的 上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准 是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而AUC作为数值可以直观的评价分类器的好坏,值越大越好。

AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值 都能得出完美预测。绝大多数预测的场合,不存在完美分类器。 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值 的话,能有预测价值。 AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。 AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。


模型评估
回归结果度量

  • explained_varicance_score:可解释方差的回归评分函数
  • mean_absolute_error:平均绝对误差
  • mean_squared_error:平均平方误差

分类算法评估方法
分析机器学习的开发流程
回归算法评估方式
分析机器学习的开发流程
模型部署和整合

  • 当模型构建好后,将训练好的模型存储到数据库中,方便其它使用模型的应用加载(构建好的模型一般为一个矩阵)
  • 模型需要周期性(一个月、一周)

模型的监控与反馈

  • 当模型一旦投入到实际生产环境中,模型的效果监控是非常重要的,往往需要关注业务效果和用户体验,所以有时候会进行A/B测试
  • 模型需要对用户的反馈进行响应操作,即进行模型修改,但是要注意异常反馈信息对模型的影响,故需要进行必要的数据预处理操作

相关文章: