重点介绍特征工程(Feature Engineering)
标题翻译一下是机器学习管道...其实pipeline在这里就是下图中机器学习的步骤(step),或者理解为工作流(workflow)。
数据获取
一般来说,数据都可以认为是矩阵格式。
所有数据都可被认为,在一个Data Lake中。
数据清洗
针对数据中可能存在丢失(missing data)的情况,可以采用 impute(理解为replace)的方法,找到 null 或者 NaN的值,并且把他们替换掉。
可以采用平均值、中值替换或者直接删除的方法。
数据预处理
不同机器学习算法需要不同数据预处理方法。
比如,回归(regression)和SVM(支持向量机?),有时候要求数据标准化(standardized)处理(平均值为0,标准差为1)。标准化可以让数据保持更好的样本间距,把过大和过小的异常值挤到一起。
有时候也会要求数据进行归一化(uniformization/scaled to range),即把所有数据缩放到0到1之间。
再比如,决策树(decision tree),必须消除丢失的数据,并且有时候还需要将一些数据转换为数字格式。
特征工程(Feature Engineering)——机器学习建模中最重要的步骤之一
把2个或多个特征合并成一个,或通过某种函数(如log)把值转换一下。
比如:特征太少,不够学的
特征太多,太多不必要的
在选择模型算法,或超调调谐上都有很大作用
有些字符串或者日期格式,需要转换给,这个过程叫标签编码(label encoding)
One-hot encoding
把字符串变为特征,再把0和1作为value添加到对应的特征中
Dummy coding
和one-hot相似,就是把一个状态位给去掉了,因为认为2个变量已经足够表示3个特征。
参考:离散型特征编码方式:one-hot与哑变量* - ML小菜鸟 - 博客园 (cnblogs.com)
注意:上面两种办法,当特征中value的种类特别多的时候不适用,会产生过多的新特征。
Log transform
放张图,要确保数据集中的value为正。
特征工程中的Correlation
指的是不同feature下value的相关性。
这很是个事儿,因为独立变量之间理应互相独立。
那么咋解决呢?
1. 删除高相关性的变量
2. 线性合并这些变量,比如加一块
3. 为这些变量实施principal components analysis(PCA)或者partial least squares regression(PLS regression)
4. 此外还有LASSO(least absolute shrinkage and selection operato)和 Ridge regression 方法,课上没讲。
数据采样
采样的数据分为两部分
1. 训练数据,用于训练模型
2. 测试数据,用于测试和交叉验证的出来的模型
然鹅现实中的数据集往往不是平衡的,比如有一个特征,占比非常小,那就很可能被忽视。加入惩罚模型(penalize model),给这些占比小的特征更重的权重。
ML方法的选择
分类(classification)和回归(regression)问题 一般使用 supervised learning
聚类(clustering)问题一般使用unsupervised learning
交叉验证(Cross - validation)和评估指标(Metrics)
Regression - MSE
Classification - Confusion Matrix
超参数调节(Hyper Parameter turning)
有些参数是可以通过训练来优化的,称为参数(parameter)
有些不能通过训练来优化,称为 超参数(hyper parameter)
决策树中的: 树深度(depth of tree),单节点最小叶子数(minimum num of leaves at a node)
随机森林:对超参数并不敏感
神经网络:学习率(learning rate)
线性回归:正则项(regularisation terms)