如何在Keras中自定义机器学习功能目的
作者头像
  • 成敏慰杰
  • 2020-04-27 18:49:31 2

Keras 提供了多种目标函数,帮助我们评估深度学习模型的表现。由于 Keras 拥有丰富的目标函数选项,选择最适合的函数可能会比较复杂。在某些情况下,可能需要自定义目标函数,因为 Keras 内置的目标函数可能无法满足特定需求,而自定义目标函数将直接影响模型的性能。

在本文中,我们将通过几个简单的自定义目标函数来演示如何实现二元分类任务。为了更好地理解相关概念,我们将参考下面的混淆矩阵。 混淆矩阵

首先,我们需要导入必要的 Python 库。

精度(Precision)

python def precision(y_true, y_pred): true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1))) predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1))) return true_positives / (predicted_positives + K.epsilon())

请注意,y_true 和 y_pred 不是 NumPy 数组,而是 Theano 或 TensorFlow 张量。因此,我们使用 Keras 后端提供的操作来计算目标值。

召回率(Recall)或灵敏度(Sensitivity)

python def recall(y_true, y_pred): true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1))) possible_positives = K.sum(K.round(K.clip(y_true, 0, 1))) return true_positives / (possible_positives + K.epsilon())

特异性(Specificity)

python def specificity(y_true, y_pred): true_negatives = K.sum(K.round(K.clip((1 - y_true) * (1 - y_pred), 0, 1))) possible_negatives = K.sum(K.round(K.clip(1 - y_true, 0, 1))) return true_negatives / (possible_negatives + K.epsilon())

F beta 分数

python def f_beta_score(y_true, y_pred): beta = 1 precision = precision(y_true, y_pred) recall = recall(y_true, y_pred) numer = (1 + beta ** 2) * (precision * recall) denom = ((beta ** 2) * precision) + recall + K.epsilon() return numer / denom

在 F-beta 分数中,选择不同的 beta 值可以影响目标函数对召回率和精度的侧重程度。例如,在 F1 分数中,召回率和精度具有同等的重要性;而在 F2 分数中,召回率的重要性是精度的两倍。

以上就是关于 Keras 目标函数的一些基本介绍和实现方法。希望这些信息能对你有所帮助。

    本文来源:图灵汇
责任编辑: : 成敏慰杰
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
何在定义目的机器功能学习Keras
    下一篇