文章目录
- 引言
- 一、特征归一化
- 二、类别型特征
- 三、高维组合特征的处理
- 四、组合特征
- 1.怎么有效地找到组合特征?
- 五、文本表示类型
- 1.有哪些文本表示模型?
- 2.模型有什么优缺点?
- 六、Word2Vec
- 七、图像数据不足的处理方法
- 1.图像分类任务中,训练数据不足会带来什么问题?
- 2.如何缓解数据量不足带来的问题?
插眼:
- 百面机器学习—1.特征工程
- 百面机器学习—2. 特征工程与模型评估要点总结
- 百面机器学习—3.逻辑回归与决策树要点总结
- 百面机器学习—模型基础知识
- 百面机器学习—要点总结
- 百面机器学习—与LDA要点总结
- 百面机器学习—均值算法、EM算法与高斯混合模型要点总结
- 百面机器学习—8.概率图模型之HMM模型
- 百面机器学习—9.前馈神经网络面试问题总结
- 百面机器学习—10.循环神经网络面试问题总结
- 百面机器学习—11.集成学习(GBDT、XGBoost)面试问题总结
- 百面机器学习—12.优化算法
引言
参考:百面机器学习pdf:链接:/s/1QHWWEXxrOIOQgTycz3YX6Q
提取码:y01g
一、特征归一化
描述
为了消除数据特征之间的量纲影响,我们需要对特征进行归一化,使得不同指标之间具有可比性,使得各指标处于同一数值量级,以便于分析。
方法:
-
线性函数归一化(Min-Max),将原始数据映射到[0,1]范围内
from sklearn.preprocessing import MinMaxScaler
- 1
-
零均值归一化(标准化),将原始数据映射到mean=0,std=1的分布上
from sklearn.preprocessing import StandardScaler
- 1
为什么需要对数值特征做归一化?
以随机梯度下降为例,在学习率相同的情况下,经过归一化后的数据容易更快的通过梯度下降找到最优解。
在实际运用中,通过梯度下降的算法求解的模型都需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但对决策树模型并不适用,因为信息增益、信息增益比、基尼指数跟特征是否经过归一化是无关的。
二、类别型特征
描述
类别特征指在有限选项内取值的特征,通常为字符串形式。除决策树等少数模型可以直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型都需要先将类别型特征直接转换成数值型特征。
在对数据进行预处理时,应该如何处理类别型特征?
-
序号编码
通常处理类别间具有大小关系的数据,会按照大小关系给类别特征赋予一个数值IDfrom sklearn.preprocessing import OrdinalEncoder import numpy as np label = OrdinalEncoder() list = ['中国', '美国', '法国', '德国'] list = np.array(list).reshape(-1,1) labels = label.fit_transform(list) print(labels)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
[[0.] [3.] [2.] [1.]]
- 1
- 2
- 3
- 4
如果数据本身并不存在大小关系,使用该编码会给这个特征增加不存在的顺序关系,增加了噪声
-
独热编码—onehot编码
通常用于处理类别间不具有大小关系的特征。from sklearn.preprocessing import LabelEncoder,OneHotEncoder import numpy as np label = LabelEncoder() labels = label.fit_transform(['中国', '美国', '法国', '德国']) print(labels) labels = np.array(labels).reshape(len(labels), 1) # 先将X组织成(sample,feature)的格式 # list = ['中国', '美国', '法国', '德国'] # list = (list).reshape(-1,1) onehot = OneHotEncoder() onehot_label = onehot.fit_transform(labels) print(onehot_label.toarray()) # 这里一定要进行toarray(),转换成array格式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
[0 3 2 1] [[1. 0. 0. 0.] [0. 0. 0. 1.] [0. 0. 1. 0.] [0. 1. 0. 0.]]
- 1
- 2
- 3
- 4
- 5
对于类别取值较多(转换成onehot编码维度会很高)的情况下注意如下问题:
1.使用稀疏向量来节省空间
2.需配合特征选择来降低维度,一方面在逻辑回归模型中,维度的增加会导致参数的数量的增加,容易引起过拟合问题;另一方面,只有部分维度对于分类、预测是有效的。 -
二进制编码—Binary Encoding
先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。二进制编码本质上是利用二进制对ID进行哈希映射,最终得到0/1特征向量,维度少于独热编码,节省了空间。
三、高维组合特征的处理
什么是组合特征?
为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。
如何处理高维组合特征?
利用降维方法来减少两个高维特征组合后需要学习的参数
四、组合特征
将多种高维特征,如果只是简单的两两组合,依然会存在参数过多、过拟合问题,而且并不是所有的特征组合都是有意义的。因此我们需要有效的方法找到应该对哪些特征进行组合。
1.怎么有效地找到组合特征?
基于决策树的特征组合寻找方法,每一条从根节点到叶结点的路径可以看做是一种特征组合方式。
五、文本表示类型
文本是非结构化数据
1.有哪些文本表示模型?
2.模型有什么优缺点?
词袋模型:
含义:将每篇文章看成一袋子词,并忽略每个词出现的顺序。(将文章按单词分开,每篇文章表示成一个长向量,向量中的每一维代表一个单词)
N-gram模型:将连续出现的n个词组成的词组作为一个单独的特征放到向量表示中去
主题模型:从文本库中发现有代表性的主题,并且计算出每篇文章的主体分布。
词嵌入:将词向量化,将每个词都映射到低维空间上的稠密向量
深度学习模型:深度学习模型的每一个隐层都可以认为对应着不同抽象层次的特征。
六、Word2Vec
这部分不做论述
七、图像数据不足的处理方法
当训练一个图像分类模型时,如果训练样本比较少,该如何处理?
1.图像分类任务中,训练数据不足会带来什么问题?
过拟合,模型泛化能力弱
2.如何缓解数据量不足带来的问题?
1.基于模型的方法,主要是采用降低过拟合风险的措施
包括简化模型、添加正则项、集成学习、Dropout超参数
2.基于数据的方法,主要是进行数据扩充。在保持特定信息的前提下,对原始数据进行适当变换以达到扩充数据集的效果。
3.上采样与生成对抗网络
4.迁移学习