书名 | 《机器学习之路caffe、keras、scikit-learn实战》 |
作者 | 阿布、胥嘉幸 |
出版社 | 电子工业 |
出版日期 | 2017年8月 |
阅读进度 | 基本全部 |
如下为笔记内容:
框架对比
实验级:性能较差,容易上手,不易定制
工业级:上手难,定制容易
深度学习
机器学习和深度学习是研究弱人工智能实现方式的一门科学。深度学习的价值是挖掘人工挖不到的特征,提高模型的成绩。
深度学习之所以使用“深”的方式扩展模型,是因为:
- 深层模型训练更快
- 深层模型预测效果更好
相关实例,参考专栏。
分类
逻辑分类模型预测一般分三步:
- 计算线性函数
- 使用链式法则的反向传播算法,把运算量下降到只和神经元数目本身成正比O(n)
- 从分数到概率的转换
sigmoid(x)=11+e−x s i g m o i d ( x ) = 1 1 + e − x
softmax(s)=esi∑jesj s o f t m a x ( s ) = e s i ∑ j e s j
- 从概率到标签的转换
模型评估, 使用交叉熵。
D(y,p)=yln(p)+(1−y)(1−ln(p))
D
(
y
,
p
)
=
y
l
n
(
p
)
+
(
1
−
y
)
(
1
−
l
n
(
p
)
)
,其中,p=softmax(score(wx+b))
p
=
s
o
f
t
m
a
x
(
s
c
o
r
e
(
w
x
+
b
)
)
损失函数:
loss(w,b)=−1M∑jD(yi,pi)
l
o
s
s
(
w
,
b
)
=
−
1
M
∑
j
D
(
y
i
,
p
i
)
均值公式:
μ=∑Ni=1xiN
μ
=
∑
i
=
1
N
x
i
N
方差公式:
σ2=∑ni=1(xi−μ)2n
σ
2
=
∑
i
=
1
n
(
x
i
−
μ
)
2
n
预处理数据公式:
xi=xi−mean(X)std(X)
x
i
=
x
i
−
m
e
a
n
(
X
)
s
t
d
(
X
)
去均值和归一化使梯度下降收敛更快,更平稳。
模型调试
过拟合:
- 使用正则化,参数C更小使边界线更柔和。如L2正则化:
loss(w,b)=−1M∑iD(yi,pi)+1M⋅wTwC - 减少特征,降低模型复杂度
- 增加训练数据量
欠拟合
交叉验证(N-fold Cross-validation)
GridSearch(GridSearchCV)搜索最优参数
模型评估
混淆矩阵
- 准确率
- 主要用于类别均匀的样本数据中
- 精确率和召回率
对于二分类TP,TN,FP,FN:
- 正样本准确率:Precision=TPTP+FP
- F1分数
精确率和召回率同等重要,
F1=11Precision+1Recall
评估曲线ROC
AUC指标(常用)
回归
分类与回归主要区别:
- 目标数值类型不同(离散,连续)
- 损失函数设计不同
- 评估指标选择不同
损失函数:
loss(w,b)=−1M∑i(y−y_pred)2
l
o
s
s
(
w
,
b
)
=
−
1
M
∑
i
(
y
−
y
_
p
r
e
d
)
2
评估指标:
- 误差平均值
- 误差中位数
- 均方差(常用)
- 均方差平方根(常用)
- r方,也称确定系数(常用)
模型融合(Ensamble)
可以防止过拟合,更适合非线性模型(能力强,有个性)。
群体对个体模型的要求:
- 个体正确率大于50%
- 个体判断问题存在差异,有“个性”
融合方式:
- Bagging
有放回抽样,等权重投票
- 随机森林(Random Forest)
- Boosting
生成模型个体序列,后面的尝试修复前面模型的错误,前后依赖
- Ada-Boosting
- Gradient-Boosting/GBDT/XGBoost
- Stacking(融合不同模型)
注意合理使用数据集,防止信息泄露,融合方式如下:
- 加权投票
- 使用新的线性模型融合
经验之谈
数据集中噪声的比例决定了机器学习模型的成绩上限。对模型的最终影响因素:原始数据质量,特征质量> 特征工程 > 模型工程 、模型融合。
数据分割成训练集和测试集,要先分开在执行归一化。
神经元越多,模型能力越强大,训练时越容易发生过拟合(不同数据集上波动大,适应力低)。
预处理空间数据:过滤冗余,增加样本。
数据既可以按照维度分类,也可以按照时空意义分类(空间维度数组和时间序列)。RNN是提取时间特征的模型,分析了输入序列的特征描述,并将这些描述信息映射到输出序列,即RNN模型完成序列到序列的映射。因此有诸如下应用:
- 翻译系统
- 语音识别系统,语言解释(DeepCoder)
- 结合CNN、RNN的看图说话(答题),颜值打分
- 辨别任务(是否同一作者)
NLP有时使用传统的机器学习而非全部的深度学习,是因为诸如word2vec是从“别的数据集”学习到的语义模型,word2vec生成的描述语义的特征向量是有信息损失的,而且一些明显的人工特征对分类帮助很明显。