UtilityFunction
更多信息
- 设置 UtilityFunctionf 下,分配给实际值 va 和预测值 vp 的效用值是 f[va,vp].
- 在 Classify 的情况下,f 通常使相关性组成的相关性,格式为 <|class1<|class1u11,class2u12…|>,…|>. 其中 uij 是效用矩阵,而 i 是实际类别,j 是预测类别.
范例
打开所有单元 关闭所有单元基本范例 (2)
c = Classify[{0 -> "healthy", 1 -> "healthy", 2 -> "diseased", 3 -> "healthy", 4 -> "diseased", 5 -> "diseased"}]c[1.5, "Probabilities"]c[1.5]将决策效用设置为惩罚将 "diseased" 类成员误分类为 "healthy" 的情况:
c[1.5, UtilityFunction -> <|
"healthy" -> <|"healthy" -> 1, "diseased" -> 0|>, "diseased" -> <|"healthy" -> -3, "diseased" -> 1|>
|>]p = Predict[{1 -> 2.2, 2 -> 4.4, 3 -> 5.5, 4 -> 7.7, 5 -> 9.4}]p[4]p[4, UtilityFunction -> Function[{actual, prediction}, -Piecewise[{{Exp[prediction - actual], actual < prediction}, {Exp[3 * (actual - prediction)], actual ≥ prediction}}] ]]范围 (7)
设置分类器训练时使用的 UtilityFunction:
c = Classify[{0 -> "healthy", 1 -> "healthy", 2 -> "diseased", 3 -> "healthy", 4 -> "diseased", 5 -> "diseased"}, UtilityFunction -> <|
"healthy" -> <|"healthy" -> 1, "diseased" -> 0|>, "diseased" -> <|"healthy" -> -3, "diseased" -> 1|>
|>]c[1.5]从 ClassifierFunction 中提取 UtilityFunction:
Information[ClassifierFunction[Association["ExampleNumber" -> 6, "ClassNumber" -> 2,
"Input" -> Association["Preprocessor" -> MachineLearning`MLProcessor["ToMLDataset",
Association["Input" -> Association["f1" -> Association["Type" -> "Numerical"]],
... te" -> DateObject[{2026, 2, 5, 14, 28,
25.083556`8.151964087135537}, "Instant", "Gregorian", 1.], "ProcessorCount" -> 4,
"ProcessorType" -> "x86-64", "OperatingSystem" -> "MacOSX", "SystemWordLength" -> 64,
"Evaluations" -> {}]]], UtilityFunction]使用一个包含 Indeterminate 决策可能性(独立于选项 IndeterminateThreshold)的效用函数:
ClassifierFunction[Association["ExampleNumber" -> 6, "ClassNumber" -> 2,
"Input" -> Association["Preprocessor" -> MachineLearning`MLProcessor["ToMLDataset",
Association["Input" -> Association["f1" -> Association["Type" -> "Numerical"]],
... te" -> DateObject[{2026, 2, 5, 14, 28,
25.083556`8.151964087135537}, "Instant", "Gregorian", 1.], "ProcessorCount" -> 4,
"ProcessorType" -> "x86-64", "OperatingSystem" -> "MacOSX", "SystemWordLength" -> 64,
"Evaluations" -> {}]]][1.5, UtilityFunction -> <|
"healthy" -> <|"healthy" -> 1, "diseased" -> 0, Indeterminate -> 0.8|>, "diseased" -> <|"healthy" -> 0, "diseased" -> 1, Indeterminate -> 0.9|>
|>]修改 UtilityFunction 的值,获取新的 ClassifierFunction:
Classify[ClassifierFunction[Association["ExampleNumber" -> 6, "ClassNumber" -> 2,
"Input" -> Association["Preprocessor" -> MachineLearning`MLProcessor["ToMLDataset",
Association["Input" -> Association["f1" -> Association["Type" -> "Numerical"]],
... te" -> DateObject[{2026, 2, 5, 14, 28,
25.083556`8.151964087135537}, "Instant", "Gregorian", 1.], "ProcessorCount" -> 4,
"ProcessorType" -> "x86-64", "OperatingSystem" -> "MacOSX", "SystemWordLength" -> 64,
"Evaluations" -> {}]]], UtilityFunction -> <|
"healthy" -> <|"healthy" -> 1, "diseased" -> 0|>, "diseased" -> <|"healthy" -> 0, "diseased" -> 1|>
|>]设置预测器训练时使用的 UtilityFunction:
p = Predict[{1 -> 2.2, 2 -> 4.4, 3 -> 5.5, 4 -> 7.7, 5 -> 9.4}, UtilityFunction -> Function[{actual, prediction}, -Piecewise[{{Exp[prediction - actual], actual < prediction}, {Exp[3 * (actual - prediction)], actual ≥ prediction}}] ]]p[4]从 PredictorFunction 中提取 UtilityFunction 当前的值:
Information[PredictorFunction[Association["ExampleNumber" -> 5,
"Input" -> Association["Preprocessor" -> MachineLearning`MLProcessor["ToMLDataset",
Association["Input" -> Association["f1" -> Association["Type" -> "Numerical"]],
"Output" -> As ... te" -> DateObject[{2026, 2, 5, 14, 32,
38.007625`8.332445711286626}, "Instant", "Gregorian", 1.], "ProcessorCount" -> 4,
"ProcessorType" -> "x86-64", "OperatingSystem" -> "MacOSX", "SystemWordLength" -> 64,
"Evaluations" -> {}]]], UtilityFunction]修改 UtilityFunction 的值,获取新的 PredictorFunction:
Predict[PredictorFunction[Association["ExampleNumber" -> 5,
"Input" -> Association["Preprocessor" -> MachineLearning`MLProcessor["ToMLDataset",
Association["Input" -> Association["f1" -> Association["Type" -> "Numerical"]],
"Output" -> As ... te" -> DateObject[{2026, 2, 5, 14, 32,
38.007625`8.332445711286626}, "Instant", "Gregorian", 1.], "ProcessorCount" -> 4,
"ProcessorType" -> "x86-64", "OperatingSystem" -> "MacOSX", "SystemWordLength" -> 64,
"Evaluations" -> {}]]], UtilityFunction -> Function[DiracDelta[#2 - #1]]]应用 (1)
trainingset = ExampleData[{"MachineLearning", "Mushroom"}, "TrainingData"];testset = ExampleData[{"MachineLearning", "Mushroom"}, "TestData"];c = Classify[RandomSample[trainingset, 100]]ClassifierMeasurements[c, testset, "ConfusionMatrixPlot"]当分类器有一个不同的 UtilityFunction 值时,可视化获得的混淆矩阵:
utility = <|
"edible" -> <|"edible" -> 1, "poisonous" -> 0, Indeterminate -> 0.5|>,
"poisonous" -> <|"edible" -> -10, "poisonous" -> 1, Indeterminate -> 0.8|>
|>;ClassifierMeasurements[c, testset, "ConfusionMatrixPlot", UtilityFunction -> utility]属性和关系 (4)
ClassifierFunction 的默认效用函数值为单位矩阵:
Information[Classify[{0 -> "healthy", 1 -> "healthy", 2 -> "diseased", 3 -> "healthy", 4 -> "diseased", 5 -> "diseased"}], UtilityFunction]ClassifierFunction[Association["ExampleNumber" -> 6, "ClassNumber" -> 2,
"Input" -> Association["Preprocessor" -> MachineLearning`MLProcessor["ToMLDataset",
Association["Input" -> Association["f1" -> Association["Type" -> "Numerical"]],
... te" -> DateObject[{2026, 2, 5, 14, 50,
41.562291`8.371274456737947}, "Instant", "Gregorian", 1.], "ProcessorCount" -> 4,
"ProcessorType" -> "x86-64", "OperatingSystem" -> "MacOSX", "SystemWordLength" -> 64,
"Evaluations" -> {}]]][1.5, "ExpectedUtilities", UtilityFunction -> <|
"diseased" -> <|"diseased" -> 1, "healthy" -> -3, Indeterminate -> 0.1|>,
"healthy" -> <| "diseased" -> 0, "healthy" -> 1, Indeterminate -> 0.1|>
|>]ClassifierFunction[Association["ExampleNumber" -> 6, "ClassNumber" -> 2,
"Input" -> Association["Preprocessor" -> MachineLearning`MLProcessor["ToMLDataset",
Association["Input" -> Association["f1" -> Association["Type" -> "Numerical"]],
... te" -> DateObject[{2026, 2, 5, 14, 50,
41.562291`8.371274456737947}, "Instant", "Gregorian", 1.], "ProcessorCount" -> 4,
"ProcessorType" -> "x86-64", "OperatingSystem" -> "MacOSX", "SystemWordLength" -> 64,
"Evaluations" -> {}]]][1.5, UtilityFunction -> <|
"diseased" -> <|"diseased" -> 1, "healthy" -> -3, Indeterminate -> 0.1|>,
"healthy" -> <| "diseased" -> 0, "healthy" -> 1, Indeterminate -> 0.1|>
|>]{{1., -3, 0.1}, {0., 1., 0.1}}.Lookup[c[1.5, "Probabilities"], {"diseased", "healthy"}]PredictorFunction 的默认效用函数值为 Dirac delta 函数:
Information[Predict[{1 -> 2.2, 2 -> 4.4, 3 -> 5.5, 4 -> 7.7, 5 -> 9.4}], UtilityFunction]PredictorFunction 的预测旨在最大化期望的效用值:
Predict[{1 -> 2.2, 2 -> 4.4, 3 -> 5.5, 4 -> 7.7, 5 -> 9.4}][4, UtilityFunction -> Function[{actual, prediction}, -Piecewise[{{Exp[prediction - actual], actual < prediction}, {Exp[3 * (actual - prediction)], actual ≥ prediction}}] ]]文本
Wolfram Research (2014),UtilityFunction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/UtilityFunction.html.
CMS
Wolfram 语言. 2014. "UtilityFunction." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/UtilityFunction.html.
APA
Wolfram 语言. (2014). UtilityFunction. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/UtilityFunction.html 年
BibTeX
@misc{reference.wolfram_2026_utilityfunction, author="Wolfram Research", title="{UtilityFunction}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/UtilityFunction.html}", note=[Accessed: 09-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_utilityfunction, organization={Wolfram Research}, title={UtilityFunction}, year={2014}, url={https://reference.wolfram.com/language/ref/UtilityFunction.html}, note=[Accessed: 09-November-2026]}