机器学习项目处理流程方法论

一、问题分析

将问题抽象成模型,这是一个什么问题(分类、聚类、回归?),使用什么模型

1、明确分析目的,在开展项目之前,问清楚:

  • 问题背景:为什么开展这个项目/数据分析/分析需求?为了解决什么问题?
  • 业务场景:做这个是用在哪里?干什么的?
  • 问题结果:通过这个项目/数据分析需要我解决什么问题?
  • 问题方案:思考怎么做

2、确定分析思路,梳理分析思路,搭建分析框架,把分析目的分解成若干个不同的分析要点,即如何具体展开数据分析,需要从那几个角度进行分析,采用哪些分析指标。 最后还要确保分析框架的体系化,使分析结果具有说服力。简单来说就是先分析什么,后分析什么,使得各个分析点之间具有逻辑联系。

二、数据获取

寻找开源数据(竞赛数据集、网站),爬取网络数据(八爪鱼、urlib、beautifulsoup、request)

1、数据获取来源

  • 业务库数据

  • 相关业务网站爬取(工具:八爪鱼、urlib、beautifulsoup、request)

  • 竞赛数据库(如kaggle、天池、DC竞赛、TinyMind)

  • 开源数据库(百度、github)

2、数据量少(过拟合)

数据补充方法:

  • 补充相关开源数据:垂直领域业务网站爬虫(八爪鱼、urlib、beautifulsoup、request)、竞赛数据库(如kaggle、天池、DC竞赛、TinyMind)、开源数据库

  • 造数据:图片识别可以旋转、平移、放大、缩小图片

3、数据量多(业务数据库)

数据筛选方法:

  • 抽样采集:非概率抽样(用于某些特定研究项目)、概率抽样(最常用)

4、数据各类不平衡/数据倾斜:

  • 对数据进行欠采样/重采样来让正负例保持一个差不多的平衡,或者使用树型算法来做分类

5、数据存储

  • 存本地,如语料库

  • 存数据库,如mysql、spark、hive

三、数据预处理(数据清洗)

数据质量>>数量,数据决定了模型的上限

1、缺失值(分析缺失原因并处理)

  • 数据无关紧要且数据量大,删除

  • 均值/中值填充空值与无效值

  • 清除不必要的空格

2、重复值:判断后删除(excel去重、pandas去重)

3、异常值:清除极端异常值,有时保留一定的噪声作为特征使用

4、不一致值:分析原因再处理

5、文本清洗:乱码,多余无效空格,网页html标签等

6、数据标注

7、数据集划分:有监督的学习需要划分训练集、验证集、测试集=7:1:2、8:1:1

8、数据清洗及标准化

四、特征工程(基于业务细化特征)

  • 分析哪些特征作为模型输入参数,不同业务场景特征不同:NLP(字词句、词向量、关键词、实体词等)、图像(纹理、颜色、形状等)

  • 数值型数据做描述性统计:均值、中位数、众数、百分位数、极值、偏差、方差、标准差、显著性

  • 推断统计

  • 一般地,数据量为特征数的10倍以上,防止过拟合

五、模型构建:算法模型(回归、分类、聚类)

1、确定问题类型

a)有监督学习

  • 分类:逻辑回归LR、支持向量机SVM、决策树、随机森林RF
  • 回归:线性回归
  • 标注:隐马尔科夫HMM

b)无监督学习

  • 聚类

2、数据量规模

  • 数据量小:数据量很小,用朴素贝叶斯、逻辑回归或支持向量机
  • 数据量适中或者较大:用树模型,优先 xgboost和lightgbm
  • 数据量较大:尝试使用神经网络

3、服务器算力

  • GPU:深度学习框架(tensorflow、keras、pytorch……)、深度学习模型(CNN、RNN/LSTM、attention、bert、……)
  • CPU:传统机器学习框架(scikit-learn)、传统机器学习模型(SVM、逻辑回归LR、GBDT、随机森林……)

4、业务场景

  • 经验

六、效果评估

1、评价标准

  • 混淆矩阵

True Positive(真正,TP):将正类预测为正类数

True Negative(真负,TN):将负类预测为负类数

False Positive(假正,FP):将负类预测为正类数误报 (Type I error)

False Negative(假负,FN):将正类预测为负类数→漏报 (Type II error)

  • 准确率:被分对的样本数除以所有的样本数

    

  • 精确率:被分为正例的示例中实际为正例的比例

    

  • 召回率:所有正例中被分对的比例,recall=TP/(TP+FN)

  • F1值:P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,当F1较高时则能说明试验方法比较有效

  • ROC曲线:以假正率(FP_rate)和假负率(TP_rate)为轴的曲线,ROC曲线下面的面积叫做AUC,曲线与FP_rate轴围成的面积(记作AUC)越大,说明性能越好

  • PR(Precision-Recall)曲线:横轴是召回率,纵轴是精确率。对于一个排序模型来说,其P-R曲 线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本, 小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。整条P-R 曲线是通过将阈值从高到低移动而生成的。图1是P-R曲线样例图,其中实线代表 模型A的P-R曲线,虚线代表模型B的P-R曲线。原点附近代表当阈值最大时模型的 精确率和召回率。

    

七、模型优化

1、调参

2、过拟合(在训练集上效果好,在测试集上效果差,泛化能力差):

1)原因:

  • 训练数据不足
  • 观察值与真实值存在偏差
  • 数据有噪声
  • 训练模型过度,导致模型非常复杂

2)方法:

a)数据处理:清洗数据、减少特征维度、类别平衡

  • 清洗数据:纠正错误标签,删除错误数据(文本分类预测结果复查语料库中错误数据)
  • 降维
  • 类别平衡

b)辅助分类节点

c)正则化

3、欠拟合(训练集与验证集表现差):

1)原因:训练模型太简单,特征没有学习到

2)方法:

  • 特征工程,添加更多特征
  • 减少正则化参数,让模型变复杂
  • 使用更深或更宽的模型
  • 使用集成方法,融合几个具有差异的弱模型,成为一个强模型

八、模型部署(需要上线的业务)

部署为接口

  • nginx+uwsgi+flask
  • tf-serving(深度学习模型)

九、报告输出

  • word、ppt分析报告

  • 结果输出到BI报表,做可视化分析

  • 有效结论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值