特征工程
良好特征的特点:
- 避免使用很少使用的离散特征值,良好的特征值应该出现5次以上
- 最好具有清晰明确的含义
- 不要将”神奇“的值域实际数据混为一谈,即不包含超出范围的异常值
- 考虑上游不稳定,即特征的定义不随时间变化
数据缩放:
- [min,max]
- (value-mean)/stddev
处理离群值:
数据清理:
奥卡姆剃刀:如无必要,勿增实体,切勿浪费较多东西去做,用较少的东西,同样可以做好的事情
机器学习领域:可以通过降低复杂模型的复杂度来防止过拟合,称之为正则化
结构风险最小化
![](https://i-blog.csdnimg.cn/blog_migrate/99a28dc05b9b6777700a5706d8312d98.png)
![](https://i-blog.csdnimg.cn/blog_migrate/37160d877b9ebed13ea93753c81c9395.png)
执行 L2 正则化对模型具有以下影响
造成预测偏差的可能原因包括:
- 特征集不完整
- 数据集混乱
- 模型实现流水线中有错误?
- 训练样本有偏差
- 正则化过强
L1 和 L2 正则化。
L2 和 L1 采用不同的方式降低权重:
因此,L2 和 L1 具有不同的导数:
- L2 的导数为 2 * 权重。
- L1 的导数为 k(一个常数,其值与权重无关)。
神经网络是更复杂版本的特征组合。实质上,神经网络会学习适合您的相应特征组合。
常常用于解决非线性分类问题,通过线性隐藏层加上非线性的激活函数,多层非线性模型的叠加建模
![](https://i-blog.csdnimg.cn/blog_migrate/acef048abd22489ae064c0bf605d2cf0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d611589c4e0af487a5a94123cf3247c0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9755a66fb4bb23a9b46c1cddf08b2c24.png)
反向传播算法是最常见的一种神经网络训练算法。借助这种算法,梯度下降法在多层神经网络中将成为可行方法。
失败案例
很多常见情况都会导致反向传播算法出错。
梯度消失
较低层(更接近输入)的梯度可能会变得非常小。在深度网络中,计算这些梯度时,可能涉及许多小项的乘积。
当较低层的梯度逐渐消失到 0 时,这些层的训练速度会非常缓慢,甚至不再训练。
ReLU 激活函数有助于防止梯度消失。
梯度爆炸
如果网络中的权重过大,则较低层的梯度会涉及许多大项的乘积。在这种情况下,梯度就会爆炸:梯度过大导致难以收敛。
批标准化可以降低学习速率,因而有助于防止梯度爆炸。
ReLU 单元消失
一旦 ReLU 单元的加权和低于 0,ReLU 单元就可能会停滞。它会输出对网络输出没有任何贡献的 0 激活,而梯度在反向传播算法期间将无法再从中流过。由于梯度的来源被切断,ReLU 的输入可能无法作出足够的改变来使加权和恢复到 0 以上。
降低学习速率有助于防止 ReLU 单元消失。
丢弃正则化
这是称为丢弃的另一种形式的正则化,可用于神经网络。其工作原理是,在梯度下降法的每一步中随机丢弃一些网络单元。丢弃得越多,正则化效果就越强:
- 0.0 = 无丢弃正则化。
- 1.0 = 丢弃所有内容。模型学不到任何规律。
- 0.0 和 1.0 之间的值更有用。
多类别神经网络
Softmax 将这一想法延伸到多类别领域。也就是说,在多类别问题中,Softmax 会为每个类别分配一个用小数表示的概率。这些用小数表示的概率相加之和必须是 1.0。与其他方式相比,这种附加限制有助于让训练过程更快速地收敛。
![](https://i-blog.csdnimg.cn/blog_migrate/d3493b253468134b294d35b463ca2374.png)
Softmax 选项
请查看以下 Softmax 变体:
类别数量较少时,完整 Softmax 代价很小,但随着类别数量的增加,它的代价会变得极其高昂。候选采样可以提高处理具有大量类别的问题的效率。
一个标签与多个标签
Softmax 假设每个样本只是一个类别的成员。但是,一些样本可以同时是多个类别的成员。对于此类示例:
- 您不能使用 Softmax。
- 您必须依赖多个逻辑回归。
例如,假设您的样本是只包含一项内容(一块水果)的图片。Softmax 可以确定该内容是梨、橙子、苹果等的概率。如果您的样本是包含各种各样内容(几碗不同种类的水果)的图片,您必须改用多个逻辑回归。
嵌套是一种相对低维的空间,您可以将高维矢量映射到这种低维空间里。通过使用嵌套,可以让在大型输入(比如代表字词的稀疏矢量)上进行机器学习变得更加容易。在理想情况下,嵌套可以将语义上相似的不同输入映射到嵌套空间里的邻近处,以此来捕获输入的语义。一个模型学习到的嵌套,也可以被其他模型重用。
嵌套的应用:协同过滤,分类
Embedding在数学上表示一个maping:
, 也就是一个function。
其中该函数满足两个性质:
- injective (单射的):就是我们所说的单射函数,每个Y只有唯一的X对应;
- structure-preserving(结构保存):比如在X所属的空间上
,那么映射后在Y所属空间上同理
。
那么对于word embedding, 就是找到一个映射(函数)将单词(word)映射到另外一个空间(其中这个映射具有injective和structure-preserving的特点), 生成在一个新的空间上的表达,该表达就是word representation.
PCA主成分分析是一种标准的降维技术
从广义上讲,训练模型的方式有两种:
- 静态模型采用离线训练方式。也就是说,我们只训练模型一次,然后使用训练后的模型一段时间。
- 动态模型采用在线训练方式。也就是说,数据会不断进入系统,我们通过不断地更新系统将这些数据整合到模型中。
您可以选择以下任一推理策略:
- 离线推理,指的是使用 MapReduce 或类似方法批量进行所有可能的预测。然后,将预测记录到 SSTable 或 Bigtable 中,并将它们提供给一个缓存/查询表。
- 在线推理,指的是使用服务器根据需要进行预测。
静态推理与动态推理 (Static vs. Dynamic Inference)
您可以选择以下任一推理策略:
- 离线推理,指的是使用 MapReduce 或类似方法批量进行所有可能的预测。然后,将预测记录到 SSTable 或 Bigtable 中,并将它们提供给一个缓存/查询表。
- 在线推理,指的是使用服务器根据需要进行预测。
视频讲座总结
以下是离线推理的优缺点:
- 优点:不需要过多担心推理成本。
- 优点:可以使用批量方法或某些巨型 MapReduce 方法。
- 优点:可以在推送之前对预测执行后期验证。
- 缺点:只能对我们知晓的数据进行预测,不适用于存在长尾的情况。
- 缺点:更新可能延迟数小时或数天。
以下是在线推理的优缺点:
- 优点:可在新项目加入时对其进行预测,非常适合存在长尾的情况。
- 缺点:计算量非常大,对延迟较为敏感,可能会限制模型的复杂度。
- 缺点:监控需求更多。
下面简要说明了有效的机器学习准则:
- 确保第一个模型简单易用。
- 着重确保数据管道的正确性。
- 使用简单且可观察的指标进行训练和评估。
- 拥有并监控您的输入特征。
- 将您的模型配置视为代码:进行审核并记录在案。
- 记下所有实验的结果,尤其是“失败”的结果。
https://developers.google.cn/machine-learning/rules-of-ml/