机器学习解决问题流程

自学和实践机器学习的应用时,记录的简单流程,不全面,也可能不是非常专业,但还是比较实用,可操作,保存一份。

 

  1. 了解场景和目标

能采集到什么数据;要解决的是一个什么问题;

 

    2、了解评估准则

计划采用什么准则,比如:准确率;

 

    3、认识数据

    比如观察数据是否平衡、数据的分布形态等;

    可以利用一些方式来认识数据,常用的数据了解方法之一是数据可视化,把数据从文件或者数据库读入内存后,一般通过可视化工具,比如matplotlib、seaborn等,,把数据根据一定的标准展示为柱状、散点等图形,直观的查看数据的特点,思考特征处理的方法。

 

    4、数据预处理:

对于机器学习的训练样本来讲,数据的一些特点是有利于提高模型训练的结果,比如:样本的均衡性、离心点较少等等。因此,在特征提取前,一般要进行数据预处理。

(1)、数据清洗(比如:剔除离心点,不可信的样本丢掉,缺省值极多的字段考虑不用);

(2)、调权(设置权重);

(3)、数据采样(下/上采样)

(4)、保证样本均衡(比如:正负样本比例是10:100,就可以考虑把负样本分成10份,和正样本组成10个数据集)等等

 

对于自然语言处理,有些常用的数据预处理方式:

(1)、分词;

(2)、词性标注;

(3)、词干提取、词形;

(4)、去除停止词等;

 

常规库就是numpy和pandas;对于自然语言处理,常用的一些库可以做相关内容处理的有NLTK、JIEBA、Stanford自然语言处理库

 

 

     5、特征提取:

    特征提取就是把特征变为计算机可以理解的、要拿来“喂”给模型用来训练的特征值。

  • 数值型
  • 类别型
  • 时间类:

    常做的特征处理:间隔型(比如:时间变为距离春节还剩多少日来作为特征值)、连续型(结合其他特征进行组合:比如一周内点击多少次)、离散型(比如:分为工作日和非工作日,饭点和非饭点)

  • 文本类:

    常常提取特征,比如:n-gram;TF-IDF;bag of words; Levenshtein 距离;word2vec;

  • 统计型:
  • 组合特征:

注意:sklearn.feature_extraction,封装了很多特征处理的方法和函数

      sklearn.preprocessing,提供了标准化、取均值、零一化(二值化)、按比例缩放、分类特征编码(比如:红、黄、蓝编码成为[0,0,1]、[0,1,0]、[1,0,0])等函数。

 

 

   6、模型选择:

sklearn.model_selection下面会有很多和模型选择相关的函数。

比如:常用的有交叉验证的方法选择,比如默认的K-folder。

 

不同应用场景会有一些常规的模型,scikit-learn给出了一张模型选择的表格,是一个可以参考的工具。

 

 

7、模型调参:

在模型选定之后,用隔点搜索等来确定该模型的超参数。比如:

model_selection.GridSearchCV(estimator, ...)

对估计器的指定参数值进行详尽搜索

 

8、模型状态分析:

    分析的目标最常见的就是训练出来的模型是否有overfitting或者underfitting,也就是看看它们有没有高方差或者高偏差。

常用的一种分析手段或者工具,就是learning_curve,学习曲线。

 

根据sklearn的版本不同,也可能是在这里:

学习曲线:

 

过拟合和欠拟合的常见处理思路:

过拟合:

增加样本;

进行正则化处理,或增强正则化程度,从而减弱模型的各项的效力。

 

欠拟合:

增加特征值;

特征选择;

减弱正则化程度;

 

 

 

9、模型融合:

常用方法:

 

方法1:bagging--------群众的力量是巨大的

这是一个概率取胜的方法。即,针对某种模型或多种模型,选择多个训练假设器,estimator然后在数据集上随机选择不同的数据,每个训练器训练出不同的模型以及参数,然后对结果进行vote等方式,选择结果。

 

Sklearn给提供了接口函数:

 

方法2:stacking----站在巨人的肩膀上,类似的还有blending

把各个预测器的结果,作为第二层预测的输入,通过投票或者线性方程等再加工,得到最后的结果。

 

方法3:Adaboost

略,没讲。

 

Sklearn提供的接口函数,都在这里:

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值