书名

《机器学习之路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生成的描述语义的特征向量是有信息损失的,而且一些明显的人工特征对分类帮助很明显。