《精通特征工程》

感想

这本书会介绍很多工程化的方法,有力地提升你的模型性能。

笔记

数据二值化

在使用百万歌曲数据集时,我们要构建一个向用户推荐歌曲的推荐器,预测某个用户喜欢某首歌曲的成都。原始的收听次数不是衡量用户喜好的强壮指标。更好的做法是将所有大于1的次数设置为1.

区间量化(分箱)

原始点评数量跨越了若干个数量级,这可能对学习方法造成破坏。区间量化将连续型数值映射为离散数值,表示对密度的测量。有固定分箱和分位数分箱两种。

固定分箱是指每个分箱会包含一个具体范围的数值,可以是线性的也可以是指数的。代码见p11.

分位数分箱是指将数据划分为相等的若干份数的值,如中位数划分为两半。代码见p13.

对数变换

对于重尾分布的正数值来说,对数变换是一个强大的工具。为线性模型在输入特征空间的低端争取更多的“呼吸空间”,否则模型就要在输入变化很小的情况下拟合变化非常大的目标值。

指数变换

指数变换和对数变换都是方差稳定变换,前者可以改变变量的分布,使得方差不再依赖于均值。如x是高一二泊松变换,取它的平方根变换,新变化的方差就近似一个常数,而不是与均值相等。

平方根变换和对数变换可以推广为Box-Cox变换。p20。 代码在p21.最优box-cox变换可以将正尾部拉近正态分布。

特征缩放

min-max缩放, (x-min(x)) / (max(x) - min(x))

方差缩放 (x - mean(x)) / (sqrt(var(x)))

欧几里得范数归一化,公式与计算在p26.

注意:对于稀疏数据,不要中心化。因为大多数分类器对如词袋模型的稀疏输入都进行了优化,中心化之后会带来计算负担。

注意:特征缩放仅改变尺度,但是不改变分布的形状。特征缩放一般用于输入特征的尺度相差较大时,如网站的日访问量达数十万次,但是购买行为只有几千次,这会给模型训练算法带来数值稳定性方面的问题。

(思考:特征变换用于不同样本的同一个特征,特征缩放用于同一个样本的不同特征 所以在很多维特征作为输入时,是否需要考虑特征变换用于提高模型性能?)

交互特征:可以对线性模型进行扩展,使之从y=x1w1 + x2w2 变为y=x1w1 + x2w2 + x1x2w3, 这时x1*x2就是一组交互特征。定义与代码在p29.交互特征使正确率有一定的提升。

特征选择:

  • 过滤 计算每个特征与y的相关性或者互信息,去掉某个阈值下的特征
  • 打包 试验特征的子集
  • 嵌入式方法 将特征选择作为模型训练过程的一种方法。如训练决策树时需要不断选择一个特征对树进行分割。或者欧几里得范数,鼓励模型使用更少的特征。

文本数据特征

使用词袋模型

过滤特征:停用词 词性标注与文本分块
从词袋模型到tf-idf(词频-逆文档频率)

分类变量

one-hot编码
虚拟编码 one-hot允许有k个自由度,而变量本身只需要k-1个。虚拟编码中有一个分类是全0,称为参照类
效果编码 与虚拟编码类似,这里有一个分类是-1

p70 三种编码的比较,有点长。

如果有很多分类,可以用特征散列化将初始特征向量压缩为m维向量(代码见p72),还可以用分箱计数(p74)将one-hot编码转换为分箱计数统计量(这里不太懂,优势在哪里)。

PCA降维

待增补。

模型堆叠

待增补。

学术论文推荐器

待增补。
综合使用了前述的各种方法,很有实践意义。

提到的数据集

Echo Nest Taste Profile

是百万歌曲数据集(Million Song Dataset)的正式用户数据子集,包含了100万用户在Echo Nest网站上完整的音乐收听历史。

Yelp点评

Yelp数据集是用户对商家的点评数据,每个商家都用0个或多个分类进行标记。

在线新闻流行度

包括了Mashable网站发表的39797篇新闻文章,时间跨度为2年,共60个特征。p15.

Avazu主办Kaggle竞赛

微软学术图谱数据集

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
前言   ix
第 1 章 机器学习流程 1
1.1 数据 1
1.2 任务 1
1.3 模型 2
1.4 特征 3
1.5 模型评价 3
第 2 章 简单而又奇妙的数值 4
2.1 标量、向量和空间 5
2.2 处理计数 7
2.2.1 二值化 7
2.2.2 区间量化(分箱) 9
2.3 对数变换 13
2.3.1 对数变换实战 16
2.3.2 指数变换:对数变换的推广 19
2.4 特征缩放/ 归一化 24
2.4.1 min-max 缩放 24
2.4.2 特征标准化/ 方差缩放 24
2.4.3 2
归一化 25
2.5 交互特征 28
2.6 特征选择 30
2.7 小结 31
2.8 参考文献 32
第3 章 文本数据:扁平化、过滤和分块 33
3.1 元素袋:将自然文本转换为扁平向量 34
3.1.1 词袋 34
3.1.2 n 元词袋 37
3.2 使用过滤获取清洁特征 39
3.2.1 停用词 39
3.2.2 基于频率的过滤 40
3.2.3 词干提取 42
3.3 意义的单位:从单词、n 元词到短语 43
3.3.1 解析与分词 43
3.3.2 通过搭配提取进行短语检测 44
3.4 小结 50
3.5 参考文献 51
第4 章 特征缩放的效果:从词袋到tf-idf 52
4.1 tf-idf:词袋的一种简单扩展 52
4.2 tf-idf 方法测试 54
4.2.1 创建分类数据集 55
4.2.2 使用tf-idf 变换来缩放词袋 56
4.2.3 使用逻辑回归进行分类 57
4.2.4 使用正则化对逻辑回归进行调优 58
4.3 深入研究:发生了什么 62
4.4 小结 64
4.5 参考文献 64
第5 章 分类变量:自动化时代的数据计数 65
5.1 分类变量的编码 66
5.1.1 one-hot 编码 66
5.1.2 虚拟编码 66
5.1.3 效果编码 69
5.1.4 各种分类变量编码的优缺点 70
5.2 处理大型分类变量 70
5.2.1 特征散列化 71
5.2.2 分箱计数 73
5.3 小结 79
5.4 参考文献 80
第6 章 数据降维:使用PCA 挤压数据 82
6.1 直观理解 82
6.2 数学推导 84
6.2.1 线性投影 84
6.2.2 方差和经验方差 85
6.2.3 主成分:第 一种表示形式 86
6.2.4 主成分:矩阵- 向量表示形式 86
6.2.5 主成分的通用解 86
6.2.6 特征转换 87
6.2.7 PCA 实现 87
6.3 PCA 实战 88
6.4 白化与ZCA 89
6.5 PCA 的局限性与注意事项 90
6.6 用例 91
6.7 小结 93
6.8 参考文献 93
第7 章 非线性特征化与k-均值模型堆叠 94
7.1 k-均值聚类 95
7.2 使用聚类进行曲面拼接 97
7.3 用于分类问题的k-均值特征化 100
7.4 优点、缺点以及陷阱 105
7.5 小结 107
7.6 参考文献 107
第8 章 自动特征生成:图像特征提取和深度学习 108
8.1 最简单的图像特征(以及它们因何失效) 109
8.2 人工特征提取:SIFT 和HOG 110
8.2.1 图像梯度 110
8.2.2 梯度方向直方图 113
8.2.3 SIFT 体系 116
8.3 通过深度神经网络学习图像特征 117
8.3.1 全连接层 117
8.3.2 卷积层 118
8.3.3 ReLU 变换 122
8.3.4 响应归一化层 123
8.3.5 池化层 124
8.3.6 AlexNet 的结构 124
8.4 小结 127
8.5 参考文献 128
第9 章 回到特征:建立学术论文推荐器 129
9.1 基于项目的协同过滤 129
9.2 第 一关:数据导入、清理和特征解析 130
9.3 第二关:更多特征工程和更智能的模型 136
9.4 第三关:更多特征= 更多信息 141
9.5 小结 144
9.6 参考文献 144
附录A 线性建模与线性代数基础 145
A.1 线性分类概述 145
A.2 矩阵的解析 147
A.2.1 从向量到子空间 148
A.2.2 奇异值分解(SVD) 150
A.2.3 数据矩阵的四个基本子空间 151
A.3 线性系统求解 153
A.4 参考文献 155
作者简介 156
封面简介 156
0%