01
—
数据探索(Exploratory Data Analysis)
import pandas as pd df = pd.DataFrame([[1, 1.5],[2.0,2.8]], columns=['int', 'float']) df
iterrows,按行迭代
02
—
可视化
比较常用的图表有:
seaborn热点图
多变量图
散点图
03
—
数据不均衡问题及部分措施
需要考虑数据不均衡问题
上图是数据不均衡问题的一个典型例子,可以看到大部分微博的总互动数(被转发、评论与点赞数量)在0-5之间,交互数多的微博(多于100)非常之少。如果我们去预测一条微博交互数所在档位,预测器只需要把所有微博预测为第一档(0-5)就能获得非常高的准确率,而这样的预测器没有任何价值。那如何来解决机器学习中数据不平衡问题呢?通常处理数据的难度如下所示:
大数据+分布均衡 < 大数据+分布不均衡 < 小数据+数据均衡 < 小数据+数据不均衡
1)上采样和生成新数据点时添加轻微的随机扰动,经验表明这种做法非常有效。
2)多次有放回的下采样,得到多个不同的训练集,进而训练多个不同的分类器,通过组合多个分类器的结果得到最终的结果,这种方法称为 EasyEnsemble。第二种 BalanceCascade,利用增量训练的思想(Boosting):先通过一次下采样产生训练集,训练一个分类器,对于那些分类正确的大众样本不放回,然后对这个更小的大众样本下采样产生训练集,训练第二个分类器,以此类推,最终组合所有分类器的结果得到最终结果。
3)数据合成方法是利用已有样本生成更多样本,这类方法在小数据场景下有很多成功案例,比如医学图像分析等。
04
—
数据预处理(Data Preprocessing)
在构造 Feature 之前,需要对数据集进行一些处理。通常的步骤有:
说到outlier,不得不提下,bias 和 variance概念上区别,bias是偏差(与预测值之间的偏离程度),variance是误差(代表点的离散程度,散不散的衡量),最直观的如下图所示,相对于第二行,第一行的bias都很小;相对于第二列,第一列的variance都很小。
然后,说下最后一条,即对这一变量创建一组新的伪变量,变量对应的取值为 1,其他都为 0。如下,将原本有 7 种可能取值的 Weekdays
变量转换成 7 个 Dummy Variables。为什么要这样做,本来周日和周一日期是挨着的,但是转化为1,和7后,如果画在x轴上,它们就会离得很远,这样给算法一个错觉,这个日期的变化会对目标值一个错误的影响。
05
—
特征选取(Feature Selection)
先做一遍 Feature Selection 能带来一些好处:
特征选取比较实用的方法是 Random Forest 训练完以后得到的特征的重要性,比如下图所示:title特征对泰坦尼克号船员幸运获救起到最重要的作用。
这里用一个例子来说明在一些情况下 Raw Feature 可能需要经过一些转换才能起到比较好的效果。假设有一个 Categorical Variable 一共有几万个取值可能,那么创建 Dummy Variables 的方法就不可行了。
这时一个比较好的方法是根据 Feature Importance 或是这些取值本身在数据中的出现频率,为最重要(比如说前 95% 的 Importance)那些取值(有很大可能只有几个或是十几个)创建 Dummy Variables,而所有其他取值都归到一个“其他”类里面。这也是经常用到的一个技术。
06
—
模型选取(Model Selection)
准备好以上的特征后,就可以开始选用一些常见的模型进行训练了,一般从BaseLine开始,比如以下基本模型:
以上这些模型在sklearn中都可以直接调包使用。然后,讲这些模型,作为集成模型的Base model,那么常用的集成模型有哪些,最常用的模型基本都是基于决策树的模型:
当然还有业界优秀的 Xgboost 。
07
—
参数调优(Tuning)
在训练时,我们主要希望通过调整参数来得到一个性能不错的模型,一个模型往往会有很多可调节的超参数,比如对 sklearn 的 RandomForestClassifier 来说,比较重要的就是随机森林中树的数量 (n_estimators )以及在训练每棵树时最多选择的特征数量(max_features)
通常我们会通过一个叫做 Grid Search 的过程来确定一组最佳的参数,这是一个暴力搜索的过程。
一般的调参步骤是:将训练数据的一部分划出来作为验证集,通常先将学习率设得比较高(比如 0.1),用 Grid Search 对其他参数进行搜索,逐步将 学习率降低,找到最佳值。以验证集为监视表,找到的最佳参数组合。
08
—
总结
总结了数据探索,数据可视化,数据不平衡问题的部分解决措施,数据预处理,数据特征选取,模型选择,参数调优的基本过程。
本文分享自 程序员郭震zhenguo 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!