metrics: add sample_weight support