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)
訓練集合および"Mushroom"データ集合の検定集合をロードする:
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)のデルタ関数である:
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 Language. 2014. "UtilityFunction." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/UtilityFunction.html.
APA
Wolfram Language. (2014). UtilityFunction. Wolfram Language & System Documentation Center. Retrieved from 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: 01-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: 01-November-2026]}