标签: objective-function

如何解释机器学习模型的"损失"和"准确性"

当我使用Theano或Tensorflow训练我的神经网络时,他们将报告每个时期称为"损失"的变量.

我该如何解释这个变量?更高或更低的损失,或者它对我的神经网络的最终性能(准确性)意味着什么?

machine-learning mathematical-optimization neural-network deep-learning objective-function

174
推荐指数
3
解决办法
14万
查看次数

如何在python中为xgboost编写自定义评估指标?

我想在Python中添加用于xgboost的kappa评估指标.我无法理解如何将Python函数与xgboost连接起来.

根据xgboost文档,"用户可以添加多个评估指标,对于python用户,请记住将指标作为参数对列表而不是映射传递,以便后者'eval_metric'不会覆盖前一个"

这已在xgboost的Github页面中针对R而不是针对Python而提出.

例如,如果kappa函数是:

def kappa(preds, y):
    # perform kappa calculation
    return score
Run Code Online (Sandbox Code Playgroud)

如何使用xgboost实现它?'kappa'eval_metric参数中指定为字符串会导致XGBoostError: unknown evaluation metric type: kappa.

同样指定kappa方法对象的结果XGBoostError: unknown evaluation metric type: <function kappa at 0x7fbef4b03488>.

如何在python中的xgboost中使用自定义评估指标?

machine-learning xgboost objective-function

11
推荐指数
1
解决办法
6721
查看次数

如何在python xgboost中传递多个自定义指标(eval_metric)?

该folloiwng代码不工作,在那里aucerraoeerr被定制的评估指标,它正在与只有一个eval_metric要么aucerraoeerr

prtXGB.fit(trainData, targetVar, early_stopping_rounds=10, 
eval_metric= [aucerr, aoeerr], eval_set=[(valData, valTarget)])
Run Code Online (Sandbox Code Playgroud)

但是,以下带有内置评估指标的代码正在运行

prtXGB.fit(trainData, targetVar, early_stopping_rounds=10, 
eval_metric= ['auc', 'logloss'], eval_set=[(valData, valTarget)])
Run Code Online (Sandbox Code Playgroud)

这是我的自定义函数

def aucerr(y_predicted, y_true):
    labels = y_true.get_label()
    auc1 = metrics.roc_auc_score(labels,y_predicted)
    return 'AUCerror', abs(1-auc1)

def aoeerr(y_predicted, y_true):
    labels = y_true.get_label()
    actuals = sum(labels)
    predicted = sum(y_predicted)
    ae = actuals/predicted
    return 'AOEerror', abs(1-ae)
Run Code Online (Sandbox Code Playgroud)

python machine-learning auc xgboost objective-function

5
推荐指数
0
解决办法
2335
查看次数

GAN 的损失函数的理想值是多少

最初由 IJ Goodfellow 提出的 GAN 使用以下损失函数,

D_loss = - log[D(X)] - log[1 - D(G(Z))]

G_loss = - log[D(G(Z))]
Run Code Online (Sandbox Code Playgroud)

因此,鉴别器尝试最小化 D_loss,生成器尝试最小化 G_loss,其中 X 和 Z 分别是训练输入和噪声输入。D(.) 和 G(.) 分别是鉴别器和生成器神经网络的映射。

正如原始论文所说,当 GAN 被训练几个步骤时,它会达到一个生成器和判别器都无法改进的点,并且 D(Y) 到处都是 0.5,Y 是判别器的一些输入。在这种情况下,当 GAN 被充分训练到这一点时,

D_loss = - log(0.5) - log(1 - 0.5) = 0.693 + 0.693 = 1.386

G_loss = - log(0.5) = 0.693
Run Code Online (Sandbox Code Playgroud)

那么,为什么我们不能使用 D_loss 和 G_loss 值作为评估 GAN 的指标呢?

如果两个损失函数偏离了这些理想值,那么 GAN 肯定需要训练好或架构需要设计好。正如原始论文中的定理 1 所讨论的,这些是 D_loss 和 G_loss 的最佳值,但为什么不能将它们用作评估指标?

loss neural-network objective-function generative-adversarial-network

5
推荐指数
1
解决办法
3956
查看次数

如何在or-tools中定义复杂的目标函数?

我想知道如何使用 or-tools 定义复杂的目标函数(如果可能的话)。

下面的基本示例展示了如何使用 python 中的 Or-tools 解决基本线性问题:

solver = pywraplp.Solver('lp_pricing_problem', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)

# Define variables with a range from 0 to 1000.
x = solver.NumVar(0, 1000, 'Variable_x')
y = solver.NumVar(0, 1000, 'Variable_y')

# Define some constraints.
solver.Add(x >= 17)
solver.Add(x <= 147)
solver.Add(y >= 61)
solver.Add(y <= 93)

# Minimize 0.5*x + 2*y
objective = solver.Objective()
objective.SetCoefficient(x, 0.5)
objective.SetCoefficient(y, 2)
objective.SetMinimization()

status = solver.Solve()

# Print the solution
if status == solver.OPTIMAL:
    print("x: {}, y: {}".format(x.solution_value(), y.solution_value())) # x: 17.0, …
Run Code Online (Sandbox Code Playgroud)

python linear-programming least-squares or-tools objective-function

5
推荐指数
1
解决办法
4545
查看次数