spark xgboost自定义损失函数和评价函数
一、spark xgboost自定义损失函数
xgboost定义损失函数的是通过setCustomObj定义,要想定义损失函数,首先我们得知道其接收的数据类型是什么类型的
可见它需要的数据类型是ObjectiveTrait的实现类。
可见,我们只需重载getGradient方法即可。代码如下
/**
* 自定义损失函数
*/
class MyObject extends ObjectiveTrait {
var penalty = 1.0f //默认的惩罚系数是1
def this(penalty:Float){
this(penalty)
this.penalty=penalty
}
@Override
def getGradient(predicts: Array[Array[Float]