机器学习开发流程

本文详细阐述了机器学习开发流程,包括数据收集(来源、存储和方式)、数据预处理(清洗、转换和编码)、模型训练(模型选择与评估)、模型部署(方式与更新)、以及模型监控与反馈,重点介绍了AUC和ROC在模型评估中的应用。
摘要由CSDN通过智能技术生成

机器学习开发流程

数据收集

•数据来源:

​ • 用户访问行为数据

​ • 业务数据

​ • 外部第三方数据

• 数据存储:

​ • 需要存储的数据:原始数据、预处理后数据、模型结果

​ • 存储设施:磁盘、mysql、HDFS、HBase、Solr、Elasticsearch、Kafka、Redis等

​ • 数据收集方式:

​ • Flume & Kafka

常用数据集

​ http://archive.ics.uci.edu/ml/datasets.php

​ https://aws.amazon.com/cn/public-datasets/

​ https://www.kaggle.com/competitions

​ http://www.kdnuggets.com/datasets/index.html

​ http://www.sogou.com/labs/resource/list_pingce.php

​ https://tianchi.aliyun.com/datalab/index.htm

​ http://www.pkbigdata.com/common/cmptIndex.html

​ https://tianchi.aliyun.com/datalab/index.htm

​ http://www.pkbigdata.com/common/cmptIndex.html

​ https://www.datafountain.cn/

数据预处理

数据清洗和转换

实际生产环境中机器学习比较耗时的一部分

• 大部分的机器学习模型所处理的都是特征,特征通常是输入变量所对应的可用于模型的数值表示

• 大部分情况下 ,收集得到的数据需要经过预处理后才能够为算法所使用,预处理的操作主要包括以下几个部分:

​ • 数据过滤

​ • 处理数据缺失

​ • 处理可能的异常、错误或者异常值

​ • 合并多个数据源数据

​ • 数据汇总

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

​ • 将类别数据编码成为对应的数值表示(一般使用1-of-k\哑编码方法)

​ • 从文本数据中提取有用的数据(一般使用词袋法或者TF-IDF)

​ • 处理图像或者音频数据(像素、声波、音频、振幅等<傅里叶变换>)

​ • 对特征进行正则化、标准化,以保证同一模型的不同输入变量的取值范围相同

​ • 数值数据转换为类别数据以减少变量的值,比如年龄分段

​ • 对数值数据进行转换,比如对数转换

​ • 对现有变量进行组合或转换以生成新特征(基于对数据以及对业务的理解),比如平均数 (做虚拟变量),需要不断尝 试才可以确定具体使用什么虚拟变量。

数据清理

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

• 将类别数据编码成为对应的数值表示(一般使用1-of-k\哑编码方法)

​ • 功能:将非数值型的特征值转换为数值型的数据

​ • 描述:假设变量的取值有 k 个,如果对这些值用 1 到 k 编序,则可用维度为 k 的向量来表示一个变量的值。 在这样的向量里,该取值所对应的序号所在 的元素为1,其他元素均为0

• 从文本数据中提取有用的数据(一般使用词袋法或者TF-IDF)

​ • 词袋法:将文本当作一个无序的数据集合,文本特征可以采用文本中的词条/单词T进行体现,那么文本中出现 的所有词条及其出现的次数/频率就可以体现文档的特征

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

• 处理图像或者音频数据(像素、声波、音频、振幅等<傅里叶变换>)
• 对特征进行正则化、标准化,以保证同一模型的不同输入变量的取值范围相同
• 数值数据转换为类别数据以减少变量的值,比如年龄分段
• 对数值数据进行转换,比如对数转换
• 对现有变量进行组合或转换以生成新特征(基于对数据以及对业务的理解),比如平均数 (做 虚拟变 量),需要不断尝试才可以确定具体使用什么虚拟变量。

模型训练

模型评估及测试

• 模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择。
• 在训练数据集上运行模型(算法)并在测试数据集中测试效果,迭代进行数据模型的修改,这种方式 被称为交叉验证**(将数据分为训练集和**测试集,使用训练集构建模型,并使用测试集评估模型提供 修改建议)
• 模型的选择会尽可能多的选择算法进行执行,并比较执行结果
• 模型的测试一般以下几个方面来进行比较,在分类算法中常见的指标分别是准确率召回 率精准率/F 值(F1指标)

​ • 准确率(Accuracy)=提取出的正确样本数/总样本数

​ • 召回率(Recall)=正确的正例样本数/样本中的正例样本数——覆盖率 TPR

​ • 精准率(Precision)=正确的正例样本数/预测为正例的样本数

​ • F值=Precision*Reca*2 / (Precision+Recall) (即F值为精准率和召回率的调和平均值)

预测值
正例负例
真实值正例真正例(A)TP假负例(B)FW
负例假正例(C)FP真负例(D)FN
image-20240406205239992 image-20240406204704380

ROC

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

image-20240406211744612 image-20240406211859192

​ • 如果二元分类器输出的是对正样本的一个分类概率值,当取不同阈值时会得到不同 的混淆矩阵,对应于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_variance_score:可解释方差的回归评分函数
image-20240406214445886
• mean_absolute_error:平均绝对误差:
image-20240406214627530
• mean_squared_error:平均平方误差:
image-20240406214534228
• r2_score:R^2值:
image-20240406214649342
Precision精确度from sklearn.metrics import precision_score
Recall召回率from sklearn.metrics import recall_score
F1F1指标from sklearn.metrics import f1_score
Confusion Matrix混淆矩阵from sklearn.metrics import confusion_matrix
ROCROC曲线from sklearn.metrics import roc
AUCROC曲线下的面积from sklearn.metrics import auc
Mean Square Error (MSE, RMSE)平均方差from sklearn.metrics import mean_squared_error
Absolute Error (MAE, RAE)绝对误差from sklearn.metrics import mean_absolute_error,
R-SquaredR平方值from sklearn.metrics import r2_score

模型部署与整合

• 当模型构建好后,将训练好的模型进行部署

​ 方式一:直接使用训练好的模型对数据做一个预测,然后将预测结果保存数据库中。

​ 方式二:直接将模型持久化为磁盘文件的形式,在需要的代码处从磁盘中恢复模型 对象,然后使用恢复的模型对象对数据做一个预测。

​ 方式三:直接将模型参数保存到数据库中,然后在需要的代码处直接从数据库把模 型参数加载到代码中,然后根据模型算法原理使用模型参数对数据做一个预测。

• 模型需要周期性的进行修改、调优:

​ 一个月、一周

模型的监控与反馈

• 当模型一旦投入到实际生产环境中,模型的效果监控是非常重要的,往往需要关注业务效果和用户体验,所以有时候会进行测试

• 模型需要对用户的反馈进行响应操作,即进行模型修改,但是要注意异常反馈信息对模型的影响,故需要进行必要的数据预处理操作

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值