In this article, we demonstrate 3 ways to calculate the Normalized Mean Absolute Error in R.
Although the Normalized Mean Absolute Error (NMAE), or Coefficient of Variance of the MAE, is not used very frequently, it still is a useful metric. The NMAE normalizes the Mean Absolute Error (MAE) which is especially convenient when you want to compare the MAE of models with different scales.
But, how do you calculate the Normalized Mean Absolute Error (NMAE) in R?
The easiest way to calculate the Normalized Mean Absolute Error is a two-step process. First, you calculate the Mean Absolute Error, for example with the MAE() function. Then, you use a normalization method such as the average, range, or interquartile range, to find the Normalized Mean Absolute Error (NMAE).
In this article, we discuss all 3 methods to normalize the Mean Absolute Error with R code and examples.
As mentioned before, the Normalized Mean Absolute Error (NMAE) is a validation metric to compare the Mean Absolute Error (MAE) of (time) series with different scales.
For example, in the situation below, we have 2 series with a different Mean Absolute Error. Therefore, one could conclude that the second model performs worse. However, since the scales of the series differ, the Normalized Mean Absolute Error is the same.
In the example above, we used the mean of the actual values to normalize the MAE. However, there isn’t one clear definition of the NMAE. Instead, there are 3 commonly used definitions.
1. Normalization of the Mean Absolute Error with the Mean
The most common way to normalize the Mean Absolute Error is by using the mean of the actual values as the denominator.
2. Normalization of the Mean Absolute Error with the Range
Another frequently used definition of the Normalized Mean Absolute Error is by dividing the MAE by the range of actual value.
3. Normalization of the Mean Absolute Error with the Interquartile Range
Lastly, you can also use the interquartile range to normalize the Mean Absolute Error.
It depends on your situation which definition you should use. Please, check this article for more information about how to calculate the Mean Absolute Error (MAE).
3 Easy Ways to Calculate the Normalized Mean Absolute Error
Before we show how to calculate the Normalized Mean Absolute Error using the 3 definitions, we first create two vectors with random numbers. These vectors will represent the actual values and predicted values in our examples.
We use the SAMPLE.INT() function to create these vectors of random numbers.
set.seed(123)
y <- sample.int(100, 100, replace = TRUE)
y
set.seed(321)
y_hat <- sample.int(100, 100, replace = TRUE)
y_hat
In the examples below, we will use the MAE() function from the Metrics package to find the Mean Absolute Error before any normalization. However, if your data contains missing values, we recommend using the MAE() function from the ie2misc package.
1. Calculate the Normalized Mean Absolute Error with the Mean
As mentioned before, calculating the Normalized Mean Absolute Error in R is mostly done by dividing the Mean Absolute Error by the mean. You can use the MAE() function and the MEAN() function to find the Mean Absolute Error and Mean of the actual values, respectively.
Example
library(Metrics)
mae(actual = y, predicted = y_hat) / mean(y)
2. Calculate the Normalized Mean Absolute Error with the Range
The second way to calculate the NMAE in R is by dividing the Mean Absolute Error by the range of actual values. In others, the difference between the highest and lowest actual value.
If you want to use this definition, you can find the Normalized Mean Absolute Error using the functions MAE(), MAX(), and MIN().
Example
library(Metrics)
mae(actual = y, predicted = y_hat) / (max(y) - min (y))
Alternatively, you could install the DTWBI package and use the COMPUTE.NMAE() function. This function requires two parameters, namely the actual values and the predicted value, and returns the Normalized Mean Absolute Error.
Example
library(DTWBI)
compute.nmae(y, y_hat)
3. Calculate the Normalized Mean Absolute Error with the Interquartile Range
Lastly, you can normalize the Mean Absolute Error with the interquartile range. In other words, the difference between the 75th and 25th percentiles of your actual data. You can find the interquartile range in R with the IQR() function.
Example
library(Metrics)
mae(actual = y, predicted = y_hat) / IQR(y)
From Wikipedia, the free encyclopedia
In statistics, mean absolute error (MAE) is a measure of errors between paired observations expressing the same phenomenon. Examples of Y versus X include comparisons of predicted versus observed, subsequent time versus initial time, and one technique of measurement versus an alternative technique of measurement. MAE is calculated as the sum of absolute errors divided by the sample size:[1]
It is thus an arithmetic average of the absolute errors , where
is the prediction and
the true value. Note that alternative formulations may include relative frequencies as weight factors. The mean absolute error uses the same scale as the data being measured. This is known as a scale-dependent accuracy measure and therefore cannot be used to make comparisons between series using different scales.[2] The mean absolute error is a common measure of forecast error in time series analysis,[3] sometimes used in confusion with the more standard definition of mean absolute deviation. The same confusion exists more generally.
Quantity disagreement and allocation disagreement[edit]
2 data points for which Quantity Disagreement is 0 and Allocation Disagreement is 2 for both MAE and RMSE
It is possible to express MAE as the sum of two components: Quantity Disagreement and Allocation Disagreement. Quantity Disagreement is the absolute value of the Mean Error given by:[4]
Allocation Disagreement is MAE minus Quantity Disagreement.
It is also possible to identify the types of difference by looking at an plot. Quantity difference exists when the average of the X values does not equal the average of the Y values. Allocation difference exists if and only if points reside on both sides of the identity line.[4][5]
[edit]
The mean absolute error is one of a number of ways of comparing forecasts with their eventual outcomes. Well-established alternatives are the mean absolute scaled error (MASE) and the mean squared error. These all summarize performance in ways that disregard the direction of over- or under- prediction; a measure that does place emphasis on this is the mean signed difference.
Where a prediction model is to be fitted using a selected performance measure, in the sense that the least squares approach is related to the mean squared error, the equivalent for mean absolute error is least absolute deviations.
MAE is not identical to root-mean square error (RMSE), although some researchers report and interpret it that way. MAE is conceptually simpler and also easier to interpret than RMSE: it is simply the average absolute vertical or horizontal distance between each point in a scatter plot and the Y=X line. In other words, MAE is the average absolute difference between X and Y. Furthermore, each error contributes to MAE in proportion to the absolute value of the error. This is in contrast to RMSE which involves squaring the differences, so that a few large differences will increase the RMSE to a greater degree than the MAE.[4] See the example above for an illustration of these differences.
Optimality property[edit]
The mean absolute error of a real variable c with respect to the random variable X is
Provided that the probability distribution of X is such that the above expectation exists, then m is a median of X if and only if m is a minimizer of the mean absolute error with respect to X.[6] In particular, m is a sample median if and only if m minimizes the arithmetic mean of the absolute deviations.[7]
More generally, a median is defined as a minimum of
as discussed at Multivariate median (and specifically at Spatial median).
This optimization-based definition of the median is useful in statistical data-analysis, for example, in k-medians clustering.
Proof of optimality[edit]
Statement: The classifier minimising is
.
Proof:
The Loss functions for classification is
Differentiating with respect to a gives
This means
Hence
See also[edit]
- Least absolute deviations
- Mean absolute percentage error
- Mean percentage error
- Symmetric mean absolute percentage error
References[edit]
- ^ Willmott, Cort J.; Matsuura, Kenji (December 19, 2005). «Advantages of the mean absolute error (MAE) over the root mean square error (RMSE) in assessing average model performance». Climate Research. 30: 79–82. doi:10.3354/cr030079.
- ^ «2.5 Evaluating forecast accuracy | OTexts». www.otexts.org. Retrieved 2016-05-18.
- ^ Hyndman, R. and Koehler A. (2005). «Another look at measures of forecast accuracy» [1]
- ^ a b c Pontius Jr., Robert Gilmore; Thontteh, Olufunmilayo; Chen, Hao (2008). «Components of information for multiple resolution comparison between maps that share a real variable». Environmental and Ecological Statistics. 15 (2): 111–142. doi:10.1007/s10651-007-0043-y. S2CID 21427573.
- ^ Willmott, C. J.; Matsuura, K. (January 2006). «On the use of dimensioned measures of error to evaluate the performance of spatial interpolators». International Journal of Geographical Information Science. 20: 89–102. doi:10.1080/13658810500286976. S2CID 15407960.
- ^ Stroock, Daniel (2011). Probability Theory. Cambridge University Press. pp. 43. ISBN 978-0-521-13250-3.
- ^ Nicolas, André (2012-02-25). «The Median Minimizes the Sum of Absolute Deviations (The $ {L}_{1} $ Norm)». StackExchange.
Anomaly detection
Patrick Schneider, Fatos Xhafa, in Anomaly Detection and Complex Event Processing over IoT Data Streams, 2022
Mean Absolute Error (MAE)
Mean absolute error (MAE) is a popular metric because, as with Root mean squared error (RMSE), see next subsection, the error value units match the predicted target value units. Unlike RMSE, the changes in MAE are linear and therefore intuitive. MSE and RMSE penalize larger errors more, inflating or increasing the mean error value due to the square of the error value. In MAE, different errors are not weighted more or less, but the scores increase linearly with the increase in errors. The MAE score is measured as the average of the absolute error values. The Absolute is a mathematical function that makes a number positive. Therefore, the difference between an expected value and a predicted value can be positive or negative and will necessarily be positive when calculating the MAE.
The MAE value can be calculated as follows:
(3.3)MAE=1n∑i=1n|y1−yiˆ|2
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780128238189000134
Characterization of forecast errors and benchmarking of renewable energy forecasts
Stefano Alessandrini, Simone Sperati, in Renewable Energy Forecasting, 2017
9.2.2.6 Golagh test case (Fig. 9.6)
Figure 9.6. Normalized mean absolute error (NMAE) for Golagh test case by Kariniotakis et al. (2004).
The NMAE values for the Golagh wind farm are less dependent on the forecast horizon than for the other wind farms. The range of variation of NMAE for 24 h horizon is 10%–16%, being comparable for longer forecast horizons.
The main evident conclusion coming out from these test cases is the strong dependence of predictability upon the terrain complexity. The performance of the prediction models is related to the complexity of the terrain. Fig. 9.7 represents the average value of the NMAE for the 12 h forecast horizon as a function of RIX index, for each test case.
Figure 9.7. Average normalized mean absolute error (NMAE) for 12 h forecast horizon versus RIX at each test case. Qualitative comparison over six wind farms: Tunø Knob (TUN), Klim (KLI), Wusterhusen (WUS), Sotavento (SOT), Golagh (GOL), Alaiz (ALA) by Kariniotakis et al. (2004).
Higher RIX values correspond to higher values of NMAE. It is also demonstrated that offshore wind farms (Tunø Knob) do not necessarily guarantee a better predictability than wind farms on flat terrain in similar climatic conditions.
Different performances between test cases could also be attributed to the use of different prediction models. In fact, the NWP used in the test case has been provided by the meteorological services of the different countries (Germany, Spain, Denmark, and Ireland). However, some of the cases, Alaiz and Sotavento, have the NWP obtained with the same model and the increase of NMAE with RIX still appears.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780081005040000093
Validation methodologies
Ranadip Pal, in Predictive Modeling of Drug Sensitivity, 2017
4.2.1 Norm-Based Fitness Measures
MAE denotes the ratio of the 1 norm of the error vector Y−Y~ to the number of samples and is defined as
(4.1)MAE=1n∑i=1n|yi−y~i|
Mean bias error (MBE) captures the average bias in the prediction and is calculated as
(4.2)MBE=1n∑i=1n(y~i−yi)
MSE denotes the ratio of the square of the two norms of the error vector to the number of samples and is defined as
(4.3)MSE=1n∑i=1n(yi−y~i)2
Root mean square error (RMSE) denotes the square root of the MSE.
The MBE is usually not used as a measure of the model error as high individual errors in prediction can also produce a low MBE. MBE is primarily used to estimate the average bias in the model and to decide if any steps need to be taken to correct the model bias. The MBE, MAE, and RMSE are related by the following inequalities: MBE≤MAE≤RMSE≤nMAE. If any subsequent theoretical analysis is conducted on the error measure, MSE or RMSE is often preferred, as compared to MAE due to the ease of applying derivatives and other analytical measures. However, studies [2] have pointed out that RMSE is an inappropriate measure for average model performance, as it is a function of three characteristics: the variability in the error distribution, the square root of the number of error samples, and the average error magnitude (MAE). Due to the squaring portion of RMSE, larger errors will have more impact on the MSE than smaller errors. Furthermore, the upper limit of RMSE (MAE≤RMSE≤nMAE) varies with n and can have different interpretations for different sample sizes.
Note that the above measures will have the same units as the variable to be predicted and thus cannot be compared for different variables that are scaled differently. The normalization of the error can be handled either as normalized versions described next or using measures such as correlation coefficients and R2.
NRMSE as used in [3] is defined as
(4.4)NRMSE=∑i=1n(yi−y~i)2∑i=1n(yi−y-)2
or it can be defined as ratio of the RMSE to the range of the data or mean of the data.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B978012805274700004X
Renewable energy system for industrial internet of things model using fusion-AI
Anand Singh Rajawat, … Ankush Ghosh, in Applications of AI and IOT in Renewable Energy, 2022
6.6 Results analysis
We evaluate different AI algorithms on different IIoT based datasets. Dissimilar assessment metrics were used to examine the goodness of the AI-based model, such as mean absolute error, mean absolute percent error, mean squared error, and root mean squared logarithmic error. We similarly selected the state-of-the-art models for the assessment through the proposed Fusion AI-based model.
6.6.1 Mean absolute error
The mean absolute error (MAE) characterizes the alteration among the original and predictable values and is mined as the dataset’s total alteration mean.
MAE=1n∑i=1n|Yi−Yiˆ|
6.6.2 Mean squared error
The mean squared error (MSE) is the alteration between the original value and the predictable value. It is mined by forming the mean formed error of the dataset.
MSE=1n∑i=1n(Yi−Yiˆ)2
6.6.3 Root mean squared logarithmic error
The root mean squared logarithmic error (RMSLE).
RMSLE=1n∑i=1n(log(yiˆ+1)−log(yi+1))2
6.6.4 Mean absolute percent error
The mean absolute percent error (MAPE) is theamount of the accuracy of a prediction. It measures the size of the error (Fig. 6.5; Table 6.1).
Figure 6.5. Comparative analysis in term of accuracy.
Table 6.1. Evaluation metrics.
Model name | MAE | MSE | Root mean square error | RMSLE |
---|---|---|---|---|
Support Vector Machines(SVM) | 45.6755 | 1176.765 | 65.6675 | 0.1487659 |
Recurrent Neural Network(RNN) | 28.9875 | 765.345 | 32.7657 | 0.701233 |
Long Short-term Memory(LSTM) | 26.7865 | 657.765 | 30.6754 | 0.645361 |
Fusion Artificial Intelligence | 14.564 | 352.6785 | 19.5643 | 0.023456 |
MAPE=∑|A−F|A×100N
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780323916998000061
Model development and validation methodology
Yen-Hsiung Kiang, in Fuel Property Estimation and Combustion Process Characterization, 2018
2.9.1 The Use of Mean Absolute Percentage Error/Mean Bias Percentage Error and Mean Absolute Error/Mean Bias Error
In this book, the MAPE/MBPE and MAE/MPE are used selectively. The complete data population is used in the validation analyses.
For the MAE/MBE and MAPE/MBPE methods, there are basic selection criteria.
- 1.
-
If the value of data is large, e.g., higher heating values ranging from 1000 to 10,000, the use of MAPE/MBPE method is a better choice. The reason is that the value of MAE/MBE may be too big and lead to confusion. For example, for a data value of 10,000, the value for MAE is 500 and the corresponding value for MAPE is 5%, which is within good engineering tolerance. However, if the absolute value of 500 is used, it is quite large in an absolute sense and just leads to confusion.
- 2.
-
If the absolute value of data is small (e.g., the chlorine content in the fuels) ranging from 0.1% to 2%, MAPE/MBPE methods should not be used. MAE/MBE methods are to be used to avoid confusion. The reason is that when the real concentration of chlorine in the fuel is 0.3%, if the estimated value is 0.6%, in practical engineering point of view, the estimated value is good enough for the applications. However, when using MAPE method, the value of MAPE is 100%. This greatly enlarges the significance of error. Thus the MAPE/MBPE methods are not recommended in these cases.
- 3.
-
In this book, the following definitions are used. The “deviation” or “% deviation” means the percentage difference from the absolute data value. And, “difference” is the difference of absolute values. For example, for an absolute value of 50, the deviation of ±5% means the range is between 50+5% and 50–5%, or, between absolute values of 47.5 and 52.5. However, the difference of 5 means the range is between 50–5 and 50+5, or between absolute values of 45 and 55.
- 4.
-
In this book, both MAE and MBE as well as MAPE and MBPE are used for the validations of higher heating values. MAE and MBE are only used for the validations of concentrations of carbon, nitrogen, oxygen, nitrogen, sulfur, and chlorine.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780128134733000027
Forecasting of renewable generation for applications in smart grid power systems
Debesh Shankar Tripathy, B. Rajanarayan Prusty, in Advances in Smart Grid Power System, 2021
2.5 Forecast evaluation
Before utilizing forecasts for any real-life applications, they must be evaluated and analyzed based on the type of forecast. Two essential things to keep in mind are the quality of the forecasts to accurately present future realizations by proper modeling of the process, and the value of the forecast derived by using them for decision-making [14]. The quality of forecasts is assessed quantitatively by validating them over a period whose data has not been used for building (identifying and learning/training) the model.
2.5.1 Evaluating point forecasts
Point forecasts are widely assessed by calculating the forecast error via the use of different error measures. The most popular error measures are root mean square error (RMSE) and mean absolute error (MAE), which are discussed below. Apart from these, a variety of other error measures are available: mean square error, mean bias error, mean absolute percentage error, etc.
2.5.1.1 Root mean square error
The RMSE between the ith observation, Yi, and the corresponding forecast Yˆi for n forecast instants is given as
(10.2)RMSE=1n∑i=1n(Yi−Yˆi)2.
2.5.1.2 Mean absolute error
MAE is given as
(10.3)MAE=1n∑i=1n|Yi−Yˆi|.
In Eq. (10.3), the terms have the same meanings as in Eq. (10.2).
Note: RMSE and MAE are used to assess point forecasts but also can be extended to the probabilistic framework by replacing the point forecast with a quantile forecast to get the error measure for the corresponding quantile. Then the errors across different quantiles can be averaged to get a single value.
2.5.2 Evaluating probabilistic forecasts
Probabilistic forecasts, such as quantile, interval, and density forecasts, have different measures for evaluating their quality. Quantile forecasts can be assessed by the quantile score (QS) [12], which uses the PL function to differentially weigh the quantiles. Measures to evaluate the interval forecast include the Winkler score (WS) [12], prediction interval coverage probability (PICP) [15], and prediction interval normalized average width (PINAW) [15], which assess coverage and interval widths. Continuous ranked probability score (CRPS) [15] is the most widely used measure to determine the reliability and sharpness of density forecasts.
2.5.2.1 Quantile score
The QS uses the PL as a measure for the error in quantile forecasts. The PL function is defined as
(10.4)PL(Yi,Yˆi,τ,τundefined)={(1−τ)(Yˆi,τ−Yi)ifYi<Yˆi,ττ(Yi−Yˆi,τ)if Yi≥Yˆi,τ.undefined
In Eq. (10.4), Yi is the ith observation, and Yˆi,τ is the τth quantile forecast of the ith observation. The QS is the average PL across the nq predicted quantiles across the forecast horizon n and is given as
(10.5)QS=1nnq∑i=1n∑undefinedj=1nqPL(Yi,Yˆi,τ,τundefined).undefined
In Eq. (10.5), j is an index variable that represents the number of the quantile forecast. A lower score indicates a better prediction of the quantiles. The QS helps to assess both the reliability and sharpness of the quantile forecasts.
2.5.2.2 Winkler score
The WS is used to assess the accuracy of the coverage as well as the interval width for the PIs. For a PI centered at the median with (1−α)100% nominal coverage, this score is defined as the mean across the forecast horizon of
(10.6)WS={ΔiifLi≤Yi≤UiΔi+2(Li−Yi)/αifYi<LiΔi+2(Yi−Ui)/αifYi>Ui.undefined
In Eq. (10.6), Li is the lower-bound quantile, Ui is the upper-bound quantile, and Δi=Ui−Li is the interval width for the ith observation. It penalizes observations for lying outside the PI and rewards narrower interval widths. Hence, a lower WS is an indication of a better PI.
2.5.2.3 Prediction interval coverage probability
The PICP helps to ensure whether the observed probability distribution is bounded within the PI. The PICP index is calculated by counting the fraction of the number of observations lying within the forecast PI. It is mathematically represented as
(10.7)PICP=1n∑i=1nɛi,
where ɛi is defined as
(10.8)ɛi={1ifYi∈[Li,Ui]0ifYi∉[Li,Ui].
In Eqs. (10.7) and (10.8), the terms have their usual meaning as defined earlier. A higher PICP is desirable, as it indicates that more observations lie within the constructed PI. PICP quantitatively expresses reliability. A valid PICP should always be greater than the nominal confidence level.
2.5.2.4 Prediction interval normalized average width
The sole use of PICP can sometimes be misleading due to concentrating only on coverage of the PIs. The widths of PIs also play a significant role in assessing their informativeness. The quantitative expression of PI width is provided by the PINAW, which is given below:
(10.9)PINAW=1nR∑i=1nΔi.undefined
In Eq. (10.9), Δi is the interval width as in Eq. (10.6), and R is the normalizing factor given by the difference between the maximum and minimum forecast values. Hence, combined use of PICP and PINAW is required for proper evaluation of PIs.
2.5.2.5 Continuous ranked probability score
The CRPS robustly measures the reliability and sharpness of the probabilistic forecast. It is analogous to the MAE for point forecasts because it reduces to the absolute error for the point forecasts, hence allowing comparison of probabilistic and point forecasts. Since it is a measure of the absolute error of the forecast distribution, a lower CRPS is preferable. It considers the entire distribution of the forecasts contrary to QS, which uses the PL to weigh the different quantiles asymmetrically. It can be expressed as below:
(10.10)CRPS(F,y)=∫−∞∞(F(u)−I{y≤u})2du=EF|Y−y|−12EF|Y−Y’|undefined}.
In Eq. (10.10), y is the observation, F(u) is the CDF of density forecasts, I is the Heaviside step function, and Y and Y′ are two random variables with F as the distribution function.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780128243374000102
Intelligence-Based Health Recommendation System Using Big Data Analytics
Abhaya Kumar Sahoo, … Himansu Das, in Big Data Analytics for Intelligent Healthcare Management, 2019
9.4.2 Experimental Result Analysis
Here we compare the results in terms of MAE value among existing methods and the proposed HRS by analyzing the healthcare dataset. As we obtained a lower MAE value for our proposed approach, we can say that our approach is a useful healthcare recommendation system.
In Table 9.3, MAE values are shown for the healthcare dataset where 10,000 patient ratings for 500 doctors are divided among 5 parties. Here p represents a number of parties collaborating, which varies from 1 to 5 where p = 1 meaning that there is no collaboration and all parties are generating predictions individually. The p = 2 signifies that two parties are collaborating and likewise for p = 3, 4, or 5. Fig. 9.7 depicts that MAE value is lower when all parties are collaborating, that is, p = 5. The lower the MAE value, the higher the accuracy. By using a collaborative-based filtering technique on the proposed HRS, we achieve lower MAE values and high accuracy when compared to existing approaches.
Table 9.3. Comparison Among Existing Approaches and Proposed HRS
Contribution | Average MAE Values (Patients) | Average MAE Values (Doctors) |
---|---|---|
Yakut and Polat | 0.724 | 0.795 |
Kaur et al. | 0.739 | 0.807 |
Proposed HRS | 0.649 | 0.717 |
Fig. 9.7. Shows comparison among MAE and number of parties of proposed HRS.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B978012818146100009X
Meta-Model Development
Bouzid Ait-Amir, … Abdelkhalak El Hami, in Embedded Mechatronic Systems 2 (Second Edition), 2020
6.5.3 Model comparison and validation
Once a model is built, the next step is validation. To choose one model or another two properties of the response surface are assessed as to their ability to match the experimental data and make predictions.
Certain mathematical criteria make it possible to test how the model results match the data. This is performed by the coefficient of determination R2, the adjusted R2 coefficient, or the study of the residues, etc.
The determination coefficient R2, which is the criterion generally used in linear regression to test how the model matches the data, is defined by:
[6.2]R2=1−∑i=1nyi−yi^2∑i=1nyi−y¯2
where y is an estimation of the average response and n is the number of points in the design of experiments.
The R2 criterion can be used to measure the percentage of the total variability of the response explained by the model. This coefficient should not be used to compare between various models, since it is highly dependent on the model used. Indeed, R2 increases when the number of terms goes up, even if all the predictors are not significant. To overcome this problem, the adjusted determination coefficient Radj2 can be used instead, defined by:
[6.3]Radj2=1−1n−p+1∑i=1nyi−yi^21n−1∑i=1nyi−yi¯2
where p represents the number of terms in the model (constant term not included). If Radj2 is expressed in terms of R2, it can be noted that Radj2 is always smaller than R2 and that the difference between these two coefficients increases with the number of predictors. Radj2 is, therefore, a compromise between a model which faithfully represents the variability of the response and a model which is not too rich in predictors.
Some methods have underlying hypotheses on the residuals ε^1,…,ε^n. For instance, for regression, the residuals are assumed to be centered. A residual analysis may be useful to compare the information provided by the determination coefficients.
Once the ability of the model to match the experimental data is checked, a second diagnosis is performed to check the ability of the adjusted surface to perform predictions. The experimental design space represents only a small domain of the possible values for the explanatory variables, whereas the adjusted model must be able to construct an approximate value of the response at any point in the field of study. It is therefore necessary to study if the proposed model can be applied to the total field of study and thus provide accurate predictions.
This method consists in comparing the predictions of the model at points which differ from those of the design of experiments. In the case where the number of feasible simulations is not constrained, it is possible to define a set of test points on which the prediction error criteria (MAE, RMSE, etc.) are evaluated. If not, it is possible to use cross-validation techniques.
In order to study the predictive qualities of the model, it is assumed that there are a reasonable number of test points. The indicators proposed below generally measure the mismatch between the prediction calculated by the adjusted model and the value of the response given by the simulator.
The determination coefficient R2 evaluated over a test process (also known as external R2) gives an indication of the prediction ability of the meta-model. The value of R2 can be negative, meaning that the model creates variability in comparison to a model providing constant prediction mismatch.
The mean square error (MSE) corresponds to the mean of the square of the prediction errors (L2– criterion method):
[6.4]MSE=1m∑i=1nyi−yi^2
where m represents the number of data from the test set. This criterion measures the mean square error of the mismatch between the predicted results and the test data. A low MSE value means that the predicted values match the real values.
The root mean square error (RMSE) criterion can also be used. It is defined by: RMSE=MSE
The RMSE depends on the order of magnitude of the observed values. It may, therefore, vary significantly from one application to the next. There are two ways to solve this problem. The first solution is to center and reduce the response (which is the solution usually taken). The second solution is to consider the criteria as being relative both in terms of mean (RRM) and standard deviation (RRE) defined as follows:
[6.5]RRM=1m∑i=1myi−yi^yi
[6.6]RRE=Varyi−yi^yi
The mean absolute error (MAE) criterion (which corresponds to standard L1) is defined by:
[6.7]MAE=1m∑i=1myi−yi^
This criterion is similar to the RMSE coefficient. Nevertheless, it is more robust since it is less sensitive to extreme values than MSE.
All distance measurements (MSE, RMSE and MAE) are equivalent and make it possible to quantify how the approximated solutions match the simulated data. A small value for these criteria means that the estimated model is able to predict the values of the response of the more complex model.
Table 6.8. Comparison of MSE and MAE criteria results for two meta-models (PLS regression and Kriging) on three responses Cmix, PdC and BPR
Cmix | PdC | BPR | ||
---|---|---|---|---|
PLS regression | MSE | 1.4 × 10− 4 | 2.6 × 10− 7 | 2.7 × 10− 2 |
MAE | 1.4 × 10− 2 | 1.6 × 10− 2 | 2.2 × 10− 2 | |
Kriging | MSE | 2×10− 5 | 1.2 × 10− 8 | 4.3 × 10− 4 |
MAE | 5.4 × 10− 3 | 3.6 × 10− 3 | 2.6 × 10− 3 |
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9781785481901500062
27th European Symposium on Computer Aided Process Engineering
Sarah E. Davis, … Mario R. Eden, in Computer Aided Chemical Engineering, 2017
5 Results and Discussion
Four performance measures, MaAE, MPE, RMSE, and MAE, were calculated for each challenge function and a “unique” surrogate model combination. A “unique” surrogate model was trained using each of the data sets, which were generated from each challenge function using LHS, Sobol and Halton sequences. The differences between the performance measures of “unique” surrogate models for each challenge function were not statistically significant. Therefore, the performance metrics of “unique” surrogate models of each challenge function were averaged for the comparisons presented in this section.
The comparisons of MaAE and MPE, and RMSE and MAE provided similar trends. Hence, the results are summarized in terms of MaAE and RMSE. Figure 1(a) portrays how the MaAE changes for challenge functions with different number of inputs for each surrogate model type in a box-plot format. For each surrogate model type and number of inputs, the central mark represents the median, the cross shows the mean, and the edges of the rectangles are the 25th and 75th percentiles. Where present, the whiskers represent the most extreme points that are not considered outliers, and the outliers are plotted as individual dots. Figure 1(b) gives a similar plot for RMSE; and Figures 1(c) and 1(d) show the box-plots for MaAE and RMSE grouped based on challenge function shapes.
Figure 1. Box plots of performance for different surrogate models. Change in (a) MaAE, (b) RMSE with the number of function inputs; and (c) MaAE and (d) RMSE with function shape.
Figure 1(a) reveals that the surrogate models developed using ALAMO yielded the lowest MaAE for functions with two and five inputs, and the ones developed using ANN and ELM the lowest MaAE for functions with four and 10 inputs. The performance of ANN, ALAMO, and ELM models are comparable for functions with three inputs. In terms of RMSE (Figure 1(b)), the models developed using ANNs consistently provided the lowest values for all functions, where the RMSEs of the models developed using ALAMO were comparable to the RMSEs of ANN models for functions with four and 10 inputs. Overall, these comparisons suggest that the models developed using ANNs and ALAMO have comparable accuracy for functions with different dimensions. However, it should be noted that the surrogate models generated by ALAMO are consistently simpler functions than ANN models.
When the performance of surrogate model types are compared based on the shape of the challenge functions, ANN models yielded the smallest RMSE for all function shapes (Figure 1(d)). However, when the models are compared based on MaAE, in general, models developed using ALAMO and ELM yielded lower MaAEs than the ANN models (Figure 1(c)). For example, ALAMO models yielded the lowest MaAE for bowl shaped functions, whereas ELM models for valley shaped functions. Nevertheless, Figures 1(c) and (d) suggest that ANN, ALAMO, and ELM models overall consistently provided more accurate representation of the input-output data sets than the surrogate model forms considered.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780444639653500787
Sky-Imaging Systems for Short-Term Forecasting
Bryan Urquhart, … Jan Kleissl, in Solar Energy Forecasting and Resource Assessment, 2013
9.5.4 Error Metrics
To evaluate the forecast, mean bias error (MBE), mean absolute error (MAE), and root mean square error (RMSE) were computed over the given period during daylight hours (SZA < 80°). The sky imager generates a forecast every 30 s, whereas the plant reports power output every 1 s, so to compare the forecast to actual power production, a 30 s average of power output data centered on the image capture time was used. These error metrics were computed for each of the 31 forecast intervals out to a 15 min forecast horizon.
While the metrics used provide a numerical evaluation of forecast accuracy, they are difficult to assess without a baseline comparison. The use of persistence as a baseline forecast is especially useful for short term forecasts. To generate a persistence forecast for comparison, the plant’s aggregate normalized power was averaged for 1 min prior to forecast issue and was then applied to the remainder of the 15 min forecast window. Adjustments were made for changing solar geometry throughout the 15 min forecast window by computing the clear-sky GI for each of the 30 s intervals.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780123971777000097
title | titleSuffix | description | services | author | ms.author | ms.reviewer | ms.service | ms.subservice | ms.date | ms.topic | ms.custom | ms.openlocfilehash | ms.sourcegitcommit | ms.translationtype | ms.contentlocale | ms.lasthandoff | ms.locfileid |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Оценка результатов экспериментов Аутомл |
Azure Machine Learning |
Узнайте, как просматривать и оценивать диаграммы и метрики для каждого из автоматических запусков экспериментов машинного обучения. |
machine-learning |
gregorybchris |
chgrego |
nibaccam |
machine-learning |
core |
12/09/2020 |
conceptual |
how-to, contperf-fy21q2, automl |
b60e5f656b675a1382b8b4776975723a437183bc |
2c1b93301174fccea00798df08e08872f53f669c |
MT |
ru-RU |
03/22/2021 |
104773119 |
Оценка результатов автоматического эксперимента машинного обучения
Из этой статьи вы узнаете, как оценивать и сравнивать модели, обученные автоматическим экспериментом машинного обучения (автоматизированное обучение). В ходе автоматического эксперимента ML создаются многие запуски, и каждый запуск создает модель. Для каждой модели автоматический ML создает метрики и диаграммы оценки, которые помогают измерять производительность модели.
Например, автоматический ML создает следующие диаграммы на основе типа эксперимента.
Классификация | Регрессия и прогнозирования |
---|---|
Матрица неточностей | Гистограмма остатков |
Кривая операционной характеристики получателя (ROC) | Предсказанные и значения true |
Кривая точности-отзыва (PR) | |
кривая точности прогнозов; | |
Кривая совокупных выигрышей | |
Кривая калибровки |
Предварительные требования
- Подписка Azure. (Если у вас нет подписки Azure, Создайте бесплатную учетную запись , прежде чем начинать работу).
- Машинное обучение Azure эксперимент, созданный с помощью:
- Машинное обучение Azure Studio (код не требуется)
- Пакет SDK для машинное обучение Azure Python
Просмотреть результаты выполнения
После завершения автоматического эксперимента ML журнал запусков можно найти через:
- Браузер с машинное обучение Azure Studio
- Записная книжка Jupyter с помощью мини-приложения Рундетаилс Jupyter
В следующих шагах и видео показано, как просмотреть показатели выполнения и метрики оценки модели и диаграммы в студии.
- Войдите в студию студии и перейдите к рабочей области.
- В меню слева выберите эксперименты.
- Выберите эксперимент из списка экспериментов.
- В таблице в нижней части страницы выберите автоматический запуск ML.
- На вкладке модели выберите имя алгоритма для модели, которую необходимо вычислить.
- На вкладке метрики используйте флажки слева, чтобы просмотреть метрики и диаграммы.
Метрики классификации
Автоматический ML вычисляет метрики производительности для каждой модели классификации, создаваемой для вашего эксперимента. Эти метрики основаны на реализации scikit.
Многие метрики классификации определены для двоичной классификации в двух классах и потребовали усреднения по классам для получения одной оценки для многоклассовой классификации. Scikit — Узнайте о нескольких усредненных методах, три из которых автоматизированный ML предоставляет: макрос, Micro и взвешенный.
- Макрос — вычисление метрики для каждого класса и получение невзвешенного среднего
- Микрорасчет метрики на глобальном уровне путем подсчета итоговых истинных положительных результатов, ложных негативов и ложных срабатываний (независимо от классов).
- Взвешенный — вычисление метрик для каждого класса и получение взвешенного среднего по числу выборок на каждый класс.
Хотя каждый метод усреднения имеет свои преимущества, одним из общих соображений при выборе соответствующего метода является дисбаланс класса. Если у классов разное количество выборок, может быть более информативным использование макроса, в среднем где доли классов имеют одинаковый вес для большинства классов. Дополнительные сведения о двоичных и многоклассовых метриках в автоматизированном ML.
В следующей таблице перечислены метрики производительности модели, которые автоматизированное средство ML вычисляет для каждой модели классификации, создаваемой для вашего эксперимента. Дополнительные сведения см. в документации по scikit-учиться, связанной в поле вычисления каждой метрики.
Метрика | Описание | Вычисление |
---|---|---|
AUC | AUC — это область под кривой рабочих характеристик получателя.
Цель: Ближе к 1 лучше Поддерживаются следующие имена метрик: AUC_macro , среднее арифметическое AUC для каждого класса.AUC_micro , вычисленные путем объединения истинных положительных и ложных положительных результатов от каждого класса. AUC_weighted среднее арифметическое значение оценки для каждого класса, взвешенное по количеству истинных экземпляров в каждом классе. |
Вычисление |
accuracy | Точность — это отношение прогнозов, которые точно соответствуют истинным меткам классов.
Цель: Ближе к 1 лучше |
Вычисление |
average_precision | Для вычисления средней точности используется кривая точности и полноты в качестве взвешенного среднего значения точности, полученного для каждого порогового значения, с увеличением полноты за счет предыдущего порогового значения, используемого в качестве весового коэффициента.
Цель: Ближе к 1 лучше Поддерживаются следующие имена метрик: average_precision_score_macro , среднее арифметическое среднего показателя точности каждого класса.average_precision_score_micro , вычисленные путем объединения истинных положительных и ложных срабатываний при каждой отсечки.average_precision_score_weighted , среднее арифметическое среднее значение точности для каждого класса, взвешенное по количеству истинных экземпляров в каждом классе. |
Вычисление |
balanced_accuracy | Сбалансированная точность — это среднее арифметическое значение полноты для каждого класса.
Цель: Ближе к 1 лучше |
Вычисление |
f1_score | Оценка F1 — это среднее гармоническое значение точности и полноты. Это хорошее сбалансированное измерение как ложных срабатываний, так и ложных отрицательных результатов. Однако он не учитывает истинные отрицательные результаты.
Цель: Ближе к 1 лучше Поддерживаются следующие имена метрик: f1_score_macro : арифметическое среднее значение оценки F1 для каждого класса. f1_score_micro : вычисляется путем подсчета общего количества истинных положительных, ложных отрицательных значений и ложных срабатываний. f1_score_weighted : взвешенное среднее значение частоты класса для оценки F1 для каждого класса. |
Вычисление |
log_loss | Это функция потери данных, используемая в логистической регрессии (мультиноминальное) и расширениях ИТ-сетей, таких как нейронные сети, которая определяется как отрицательная вероятность журнала для истинных меток на основе прогнозов классификатора вероятностная.
Цель: Ближе к 0 лучше |
Вычисление |
norm_macro_recall | Нормализация макроса отзыв макроса — усредненный и нормализованный, поэтому значение случайной производительности имеет оценку 0, а оптимальная производительность имеет оценку 1.
Цель: Ближе к 1 лучше |
(recall_score_macro - R) / (1 - R)
Здесь
|
matthews_correlation | Коэффициент корреляции Matthews — это сбалансированная мера точности, которую можно использовать, даже если один класс содержит гораздо больше выборок, чем другой. Коэффициент 1 обозначает идеальный прогноз, 0 случайный прогноз и-1 Обратный прогноз.
Цель: Ближе к 1 лучше |
Вычисление |
точность | Точность — это способность модели избежать пометки отрицательных выборок как положительных.
Цель: Ближе к 1 лучше Поддерживаются следующие имена метрик: precision_score_macro , среднее арифметическое значений точности для каждого класса. precision_score_micro , вычисляются глобально путем подсчета итоговых истинных положительных результатов и ложных положительных результатов. precision_score_weighted , арифметическое среднее значение точности для каждого класса, взвешенное по числу истинных экземпляров в каждом классе. |
Вычисление |
полнота | Отзыв — это способность модели обнаруживать все положительные выборки.
Цель: Ближе к 1 лучше Поддерживаются следующие имена метрик: recall_score_macro : среднее арифметическое при отзыве для каждого класса. recall_score_micro . вычисляется глобально путем подсчета итоговых истинных положительных результатов, ложных отрицательных результатов и ложных срабатываний.recall_score_weighted : среднее арифметическое для каждого класса, взвешенное по числу истинных экземпляров в каждом классе. |
Вычисление |
weighted_accuracy | Взвешенная точность — точность, в которой каждый выбор имеет взвешенное значение по общему количеству выборок, принадлежащих одному и тому же классу.
Цель: Ближе к 1 лучше |
Вычисление |
Метрики двоичной и многоклассовой классификации
Автоматизированное МАШИНное обучение не различает метрики двоичного и многоклассного языка. Одни и те же метрики проверки сообщают, имеет ли набор данных два класса или более двух. Однако некоторые метрики предназначены для многоклассовой классификации. При применении к двоичному набору данных эти метрики не будут рассматривать класс как true
класс, как можно ожидать. К метрикам, которые явно предназначены для многоклассового класса, добавляется суффикс micro
, macro
или weighted
. Примеры:,,, average_precision_score
f1_score
precision_score
recall_score
и AUC
.
Например, вместо того, чтобы вычислить отзыв как, среднее арифметическое вычисление tp / (tp + fn)
в нескольких классах ( micro
, macro
или weighted
) для обоих классов набора данных двоичной классификации. Это эквивалентно вычислению отзыва для true
класса и false
класса отдельно, а затем получение среднего значения этих двух значений.
Автоматический ML не вычисляет двоичные метрики, то есть метрики для наборов данных двоичной классификации. Однако эти метрики можно вычислить вручную с помощью матрицы путаницы , которую автоматически создает ml для этого конкретного запуска. Например, можно вычислить точность, tp / (tp + fp)
используя истинные положительные и ложные положительные значения, показанные в матричной диаграмме с путаницой в 2×2.
Матрица неточностей
Несогласованные матрицы предоставляют визуальный элемент того, как модель машинного обучения делает систематические ошибки в своих прогнозах для моделей классификации. Слово «путаница» в названии поступает из модели «путаницы» или с неправильной маркировкой. Ячейка в строке i
и столбце j
в матрице путаницы содержит количество выборок в наборе данных для оценки, принадлежащих классу C_i
и классифицированных моделью как класс C_j
.
В студии более темная ячейка указывает на большее число выборок. Выбор нормализованного представления в раскрывающемся списке приводит к нормализации каждой строки матрицы для отображения процента класса, C_i
прогнозируемого в качестве класса C_j
. Преимущество представления RAW по умолчанию состоит в том, что можно определить, является ли дисбаланс в распределении фактических классов причиной невозможности классификации выборок из класса миноритария, распространенной проблемой в несбалансированных наборах данных.
Матрица путаницы хорошей модели будет содержать большинство примеров по диагонали.
Матрица с путаницой для хорошей модели
Матрица неправильной модели
Кривая ROC.
Кривая «операционная характеристика приемника» (ROC) Отображает связь между истинным положительным числом (ТПР) и ложным положительным числом (зарегистрированном) при изменении порогового значения принятия решений. Кривая ROC может быть менее информативной при обучении моделей на наборах данных с высоким дисбалансом классов, так как класс большинства может Drown вклады из классов миноритария.
Область под кривой (AUC) может интерпретироваться как доля правильно классифицированных выборок. Точнее, AUC — вероятность того, что классификатор ранжирует случайным образом выбранный положительный пример выше, чем случайный выбор отрицательного числа. Форма кривой дает интуиция для связи между ТПР и зарегистрированном в качестве функции порога классификации или границы принятия решений.
Кривая, которая приближается к левому верхнему углу диаграммы, приближается к 100% ТПР и 0% зарегистрированном, лучшей возможной модели. Случайная модель создаст ROC кривую вдоль y = x
линии из нижнего левого угла в верхнюю правую. Хуже, чем у случайной модели, ROCная кривая наследуется под y = x
линией.
[!TIP]
Для экспериментов классификации каждый из графиков, созданных для автоматизированных моделей машинного обучения, можно использовать для вычисления модели по каждому классу или усреднения по всем классам. Можно переключаться между этими представлениями, щелкая метки классов в условных обозначениях справа от диаграммы.
ROCная кривая для хорошей модели
Кривая ROC для неправильной модели
Кривая точности-отзыв
Кривая с точностью отзыва отображает связь между точностью и отзывом при изменении порогового значения решения. Отзыв — это способность модели обнаруживать все положительные выборки и точность — это способность модели избежать пометки отрицательных выборок как положительных. Некоторые бизнес-проблемы могут потребовать более высокого отзыва и некоторой большей точности в зависимости от относительной важности исключения ложных негативов и ложных срабатываний.
[!TIP]
Для экспериментов классификации каждый из графиков, созданных для автоматизированных моделей машинного обучения, можно использовать для вычисления модели по каждому классу или усреднения по всем классам. Можно переключаться между этими представлениями, щелкая метки классов в условных обозначениях справа от диаграммы.
Кривая точности-отзыв для хорошей модели
Кривая точности-отзыв для неправильной модели
Кривая совокупных выигрышей
Кривая Накопленная прибыль отображает процент положительных выборок, которые правильно классифицируются как функция процента выборок, рассматриваемых в порядке прогнозной вероятности.
Чтобы вычислить прибыль, сначала отсортируйте все выборки от самого высокого до наименьшей вероятности, прогнозируемой моделью. Затем принимаются x%
максимальные прогнозы достоверности. Разделить число обнаруженных положительных выборок x%
по общему количеству положительных выборок для получения прибыли. Интегральная прибыль — это процент положительных выборок, которые обнаруживаются при рассмотрении некоторого процента данных, которые, скорее всего, будут принадлежать к положительному классу.
Идеальная модель будет ранжировать все положительные выборки выше всех отрицательных выборок, предоставляя совокупную кривую выигрышей, состоящие из двух прямых сегментов. Первая — это линия с наклоном 1 / x
от (0, 0)
до, (x, 1)
где x
— доля выборок, принадлежащих положительному классу ( 1 / num_classes
Если классы сбалансированы). Второй — горизонтальная линия от (x, 1)
до (1, 1)
. В первом сегменте все положительные выборки классифицируются правильно, а совокупное увеличение — в 100%
рамках первого x%
из рассматриваемых примеров.
Базовая модель «Random» будет иметь общую кривую выигрыша, y = x
Если для x%
образцов, которые рассматриваются только x%
в общем количестве положительных выборок, были обнаружены только общие. Идеальная модель будет иметь линейную среднюю кривую, которая касается левого верхнего угла и средней строки макроса с наклоном 1 / num_classes
до 100%, а затем по горизонтали до тех пор, пока процент данных не будет 100.
[!TIP]
Для экспериментов классификации каждый из графиков, созданных для автоматизированных моделей машинного обучения, можно использовать для вычисления модели по каждому классу или усреднения по всем классам. Можно переключаться между этими представлениями, щелкая метки классов в условных обозначениях справа от диаграммы.
Совокупная кривая выигрышей для хорошей модели
Совокупная кривая выигрышей для неправильной модели
Диаграмма точности прогнозов
Кривая точности показывает, сколько раз лучшая модель выполняется по сравнению с случайной моделью. Прогноз определяется как отношение совокупного увеличения к совокупному выигрышю случайной модели.
Эта относительная производительность учитывает тот факт, что классификация усложняется по мере увеличения числа классов. (Случайная модель неправильно прогнозирует большую долю выборок из набора данных с 10 классами по сравнению с набором данных с двумя классами).
Кривая с базовым прогнозом — это y = 1
линия, в которой производительность модели согласуется с моделью случайной модели. В целом, кривая точности для хорошей модели будет выше на этой диаграмме и дальше от оси x, что покажет, что когда модель наиболее надежна в своих прогнозах, она работает много раз лучше, чем случайное догадка.
[!TIP]
Для экспериментов классификации каждый из графиков, созданных для автоматизированных моделей машинного обучения, можно использовать для вычисления модели по каждому классу или усреднения по всем классам. Можно переключаться между этими представлениями, щелкая метки классов в условных обозначениях справа от диаграммы.
Кривая точности прогнозов для хорошей модели
Кривая точности прогнозов для неправильной модели
Кривая калибровки
Кривая калибровки отображает уверенность модели в своих прогнозах относительно пропорции положительных выборок на каждом уровне достоверности. Хорошо откалиброванная модель правильно классифицирует 100% прогнозов, до которых она назначает 100% достоверности, 50% от прогнозов, назначая доверие на уровне 50%, 20% прогнозов и т. д. Вполне откалиброванная модель будет иметь кривую калибровку, следующую за y = x
строкой, где модель точно прогнозирует вероятность того, что выборки относятся к каждому классу.
Чрезмерно уверенная модель будет превышена до нуля, а другая — неопределенной для класса каждого примера, а Кривая калибровки будет выглядеть так же, как в обратном направлении «S». Более надежная модель привязывает меньшую вероятность среднего к классу, который он прогнозирует, и связанная Кривая калибровки будет выглядеть примерно как «S». Кривая калибровки не описывает возможность правильно классифицировать модель, а ее способность правильно назначать прогнозы. Неправильная модель по-прежнему может иметь хорошую кривую калибровку, если модель правильно назначит низкую достоверность и высокую неопределенность.
[!NOTE]
Кривая калибровки чувствительна к числу выборок, поэтому небольшой набор проверки может привести к нежелательным результатам, которые трудно интерпретировать. Это не обязательно означает, что модель не будет правильно откалибрована.
Кривая калибровки для хорошей модели
Кривая калибровки для неправильной модели
Метрики регрессии и прогнозирования
Автоматический ML вычисляет одинаковые метрики производительности для каждой создаваемой модели, независимо от того, является ли это экспериментом регрессии или прогнозирования. Эти метрики также прошли нормализацию, чтобы обеспечить сравнение моделей, обученных данными, с разными диапазонами. Дополнительные сведения см. в разделе нормализация метрик.
В следующей таблице перечислены метрики производительности модели, созданные для экспериментов и прогнозирования. Подобно метрикам классификации, эти метрики также основываются на реализации scikit. Соответствующая документация по scikitной документации связана соответствующим образом в поле вычисления .
Метрика | Описание | Вычисление |
---|---|---|
explained_variance | Описанная дисперсия измеряет степень, до которой учетные записи модели для варианта в целевой переменной. Это процент уменьшения дисперсии исходных данных по отношению к дисперсии ошибок. Если среднее значение ошибки равно 0, то оно равно коэффициенту определения (см. r2_score ниже).
Цель: Ближе к 1 лучше |
Вычисление |
mean_absolute_error | Средняя абсолютная ошибка — это ожидаемое значение абсолютного значения разности между целевым объектом и прогнозом.
Цель: Ближе к 0 лучше Типов |
Вычисление |
mean_absolute_percentage_error | Среднее значение абсолютной ошибки в процентах (MAPE) — это мера среднего различия между прогнозируемым значением и фактическим значением.
Цель: Ближе к 0 лучше |
|
median_absolute_error | Медиана абсолютной погрешности — это медиана всех абсолютных отклонений между целевым и прогнозируемым значениями. Такая потеря устойчива к выбросам.
Цель: Ближе к 0 лучше Типов |
Вычисление |
r2_score; | R2 (коэффициент определения) измеряет пропорциональное уменьшение в среднем квадрате ошибок (MSE) относительно общей дисперсии наблюдаемых данных.
Цель: Ближе к 1 лучше Примечание. R2 часто имеет диапазон (-INF, 1]. Размер MSE может быть больше наблюдаемой дисперсии, поэтому R2 может иметь произвольно большие отрицательные значения в зависимости от данных и прогнозов модели. Автоматический фрагмент машинного обучения сообщил о показателях R2 в значении-1, поэтому значение-1 для R2 , скорее всего, означает, что значение true, если показатель r2 меньше-1. Рассмотрите другие значения метрик и свойства данных при интерпретации отрицательной оценки R2 . |
Вычисление |
root_mean_squared_error | Средняя квадратная ошибка (корень СРЕДНЕКВАДРАТИЧНОЙ ПОГРЕШНОСТИ) — это квадратный корень ожидаемого квадратного различия между целевым объектом и прогнозом. Для несмещенной оценки корень СРЕДНЕКВАДРАТИЧНОЙ ПОГРЕШНОСТИ равно стандартному отклонению.
Цель: Ближе к 0 лучше Типов |
Вычисление |
root_mean_squared_log_error | Корень среднего значения ошибки журнала — квадратный корень ожидаемой квадратной логарифмической ошибки.
Цель: Ближе к 0 лучше Типов |
Вычисление |
spearman_correlation; | Корреляция Спирмена — это непараметрическая мера монотонности связи между двумя наборами данных. В отличие от корреляции Пирсона, для корреляции Спирмена не предполагается, что оба набора данных используют нормальное распределение. Как и другие коэффициенты корреляции, Спеарман может иметь значение от-1 до 1, и 0 не подразумевает корреляцию. Для корреляций-1 или 1 подразумевается Точная монотонная связь.
Спеарман — это метрика корреляции порядка ранжирования, которая означает, что изменения в прогнозируемых или фактических значениях не будут приводить к изменению результата Спеарман, если они не меняют порядок ранжирования или фактических значений. Цель: Ближе к 1 лучше |
Вычисление |
Нормализация метрик
Автоматический ML нормализует метрики регрессии и прогнозирования, что позволяет сравнивать модели, обученные данными, с разными диапазонами. Модель, обученная для данных с большим диапазоном, имеет более высокую ошибку, чем та же модель, обученная данными с меньшим диапазоном, если эта ошибка не нормализована.
Несмотря на то, что стандартный метод нормализации метрик ошибок не существует, автоматизированный ML принимает общий подход к разделению ошибок на диапазон данных: normalized_error = error / (y_max - y_min)
При оценке модели прогнозирования на основе данных временных рядов автоматизированное средство ML выполняет дополнительные действия, чтобы убедиться, что нормализация выполняется по ИДЕНТИФИКАТОРу временного ряда (зернистости), так как у каждого временного ряда вероятность другого распределения целевых значений.
Остатки
Остаточная диаграмма представляет собой гистограмму ошибок прогнозов (остатков), созданных для экспериментов и прогнозирования. Остатки рассчитываются как y_predicted - y_true
для всех выборок, а затем отображаются в виде гистограммы для отображения смещения модели.
В этом примере обратите внимание, что обе модели немного смещены для предсказания ниже фактического значения. Это редко используется для набора данных с асимметричным распределением фактических целевых объектов, но указывает на производительность модели хуже. Хорошая модель будет иметь распределение остатков от нуля до нескольких остатков. Более серьезная модель будет иметь распределенное распределение остатков с меньшим числом выборок, равным нулю.
Диаграмма остатков для хорошей модели
Диаграмма остатков для неправильной модели
Предсказанные и значения true
Для эксперимента и прогнозирования на диаграмме прогнозная и истинная диаграммы отображает связь между целевой функцией (истинными и фактическими значениями) и прогнозами модели. Значения true Binned вдоль оси x и для каждой ячейки. среднее прогнозируемое значение отображается планами погрешностей. Это позволяет определить, является ли модель более смещенной в сторону прогнозирования определенных значений. В строке отображается средний прогноз, а затененная область — дисперсия прогнозов вокруг этого среднего.
Часто наиболее распространенное значение true будет иметь наиболее точные прогнозы с наименьшей дисперсией. Расстояние от линии тренда от идеальной y = x
линии, где существует несколько истинных значений, является хорошим показателем производительности модели при выбросах. В нижней части диаграммы можно использовать гистограмму, в которой объясняется фактическое распределение данных. Включая дополнительные примеры данных, в которых распределение является разреженным, может повысить производительность модели на невидимых данных.
В этом примере обратите внимание, что лучшая модель имеет прогнозируемую и истинную строку, расположенную ближе к идеальной y = x
линии.
Прогнозируемая и истинная диаграмма для хорошей модели
Прогнозируемая и истинная диаграмма для неправильной модели
Пояснения к модели и важность функций
Хотя метрики и диаграммы оценки модели хорошо подходят для измерения общего качества модели, проверка того, какой набор данных использует модель, которая используется для прогнозирования прогнозов, очень важно при тренировке ответственного ии. Именно поэтому автоматизированное ML предоставляет панель мониторинга для интерпретируемости модели, которая позволяет измерять и сообщать об относительных вкладах функций набора данных.
Чтобы просмотреть панель мониторинга интерпретируемости в студии, сделайте следующее:
- Войдите в студию студии и перейдите к рабочей области.
- В меню слева выберите эксперименты .
- Выбор эксперимента из списка экспериментов
- В таблице в нижней части страницы выберите Запуск Аутомл.
- На вкладке модели выберите имя алгоритма для модели, которую необходимо объяснить.
- На вкладке пояснения вы можете увидеть, что уже было создано, если модель лучше
- Чтобы создать новое пояснение, выберите объяснить модель и выберите удаленное вычисление, с помощью которого нужно вычислить объяснения.
Дополнительные сведения о моделях в автоматизированном ML.
[!NOTE]
В настоящее время модель Форекастткн не поддерживается автоматическими объяснениями ML, а другие модели прогнозирования могут иметь ограниченный доступ к средствам интерпретации.
Дальнейшие действия
- Попробуйте пример автоматизированной учебной записной книжки с описанием модели машинного обучения.
- Для автоматических вопросов, связанных с МАШИНным обучением, обращайтесь к askautomatedml@microsoft.com .
What is mean absolute error (MAE)?
Mean absolute error, or MAE, measures the performance of a regression model. The mean absolute error is defined as the average of the all absolute differences between true and predicted values:
$$mathrm{MAE}=frac{1}{n}sum^{n-1}_{i=0}(|y_i-hat{y}_i|)$$
Where:
-
$n$ is the number of predicted values
-
$y_i$ is the actual true value of the $i$-th data
-
$hat{y}_i$ is the predicted value of the $i$-th data
A model with a high value of MAE means that its performance is subpar, while one a MAE of zero would indicate a perfect model without any error in its predictions.
Simple example to calculate mean absolute error (MAE)
Suppose we have three data points (1,3), (2,2) and (3,2). In order to predict the y-value given the x-value, we have built a simple linear model $hat{y}=x$, as shown in the diagram below:
To get a measure of how good our model performs, we can compute the MAE like so:
$$begin{align*}
mathrm{MAE}&=frac{1}{3}left(|3-1|+|2-2|+|2-3|right)\
&=frac{1}{3}left(2+0+1right)\
&=1
end{align*}$$
This means that our predictions are off by one on average.
Why do we take the absolute value?
The reason is that the absolute value prevents positive and negative differences from cancelling each other out. As an example, consider the following example:
Suppose we computed the MAE without taking the absolute value:
$$begin{align*}
mathrm{MAE’}&=frac{1}{3}Big[(1-3)+(2-2)+(3-2)Big]\
&=frac{1}{3}left(-2+0+2right)\
&=0
end{align*}$$
As you can see, the negative and positive difference of the first and third data points have cancelled each other out. As a result, we end up with a MAE’ of 0, which is obviously misleading because we know that our model is not performing all that well. In order to avoid negative and positive differences to cancel each other out, MAE takes the absolute value of the difference.
Why isn’t mean absolute error (MAE) used as a cost function?
Most machine learning models «learn» by minimising the cost function. The mean absolute error is often not chosen as the cost function because the presence of the absolute value makes differentiation harder, which means the function is difficult to optimise. For this reason, mean squared error is typically chosen as the cost function to train machine learning models.
Computing mean absolute error (MAE) using Python’s Scikit-learn
To compute the mean absolute error given a list of true and predicted values:
from sklearn.metrics import mean_absolute_error
y_true = [2,6,5]
y_pred = [7,4,3]
mean_absolute_error(y_true, y_pred)
3.0
Setting multioutput
By default, multioutput='uniform_average'
, which returns a the global mean absolute error:
y_true = [[1,2],[3,4]]
y_pred = [[6,7],[9,8]]
mean_absolute_error(y_true, y_pred)
5.0
Skip to content
Error Metrics: How to Evaluate Your Forecasts
When considering the performance of any forecasting model, the prediction values it produces must be evaluated. This is done by calculating suitable error metrics. An error metric is a way to quantify the performance of a model and provides a way for the forecaster to quantitatively compare different models1. They give us a way to more objectively gauge how well the model executes its tasks.
In this blog post we will cover some commonly used metrics for time series forecasting, how to interpret them, as well as the limitations of each metric. A friendly warning: This involves some math, which is necessary to explain how these metrics work. But the interpretation and limitations are clearly marked, so you can skip directly to the marked sections below the equations for straightforward explanations.
- Mean Absolute Error (MAE)
- Mean Absolute Percentage Error (MAPE)
- Mean Squared Error (MSE)
- Root Mean Squared Error (RMSE)
- Normalized Root Mean Squared Error (NRMSE)
- Weighted Absolute Percentage Error (WAPE)
- Weighted Mean Absolute Percentage Error (WMAPE)
- Range of Errors & Accuracies
- Conclusion
Mean Absolute Error (MAE)
MAE is defined as the average of absolute difference between forecasted values and true values.
Where y’ is forecasted value and y is the true value. n is total number of values in the test set. MAE tells us how big of an error we can expect from the forecast on an average2. The error values are in the original units of forecasted values and MAE = 0 indicates that there is no error in the forecasted values.
The lower the MAE value, the better the model is; a value of zero means there is no error in the forecast. In other words, when comparing multiple models, the model with the lowest MAE is considered better.
However, MAE does not indicate the relative size of the error and it becomes difficult to differentiate big errors from small errors. It can be used with other metrics (see Root Mean Square Error below) to determine if the errors are larger. Additionally, MAE can gloss over problems to do with low data volume; see the last two metrics in this article to address that issue.
Mean Absolute Percentage Error (MAPE)
MAPE is defined as the percentage of the average of absolute difference between forecasted values and true values, divided by true value.
Where y’ is forecasted value and y is the true value. n is total number of values in the test set. Because of the in denominator, it works best with data without zeros and extreme values. If this value is extremely small or large, the MAPE value also takes an extreme value.
The lower the MAPE, the better the model is. Keep in mind that MAPE works best with data without zeros and extreme values. Like MAE, MAPE also understates the impact of large but infrequent errors due to extreme values. To deal with this problem, Mean Square Error can be used. This metric can gloss over problems to do with low data volume; see the last two metrics in this article to deal with that situation.
Mean Squared Error (MSE)
MSE is defined as the average of squares of the error3. It is also defined as the metric that assesses the quality of forecasting model or predictor. MSE also incorporates both the variance (the spread of predicted values from each other) and bias (the distance of predicted value from its true value).
Where y’ is forecasted value and y is the true value. n is total number of values in the test set. MSE is almost always positive and values closer to zero are better. Because of the square term (as seen in the formula above), this metric penalizes large errors or outliers more compared to the small errors.
The closer to zero MSE is, the better. While it solves the extreme value and zero problem of MAE and MAPE, it might be disadvantageous in some cases. This metric can overlook issues when dealing with low data volume; see Weighted Absolute Percentage Error and Weighted Mean Absolute Percentage Error to deal with that.
Root Mean Squared Error (RMSE)
This metric is an extension of MSE and is defined as the square root of mean square error.
Where y’ is forecasted value and y is the true value. n is total number of values in the test set. Like MSE, this metric also penalizes larger errors more.
This metric is also always positive and lower values are better. One advantage of this calculation is that the RMSE value is in the same unit as the forecasted value. This makes it easier to understand compared to MSE.
RMSE can also be compared to MAE to determine whether the forecast contains large but infrequent errors. The larger the difference between RMSE and MAE the more inconsistent the error size.2 This metric can gloss over problems to do with low data volume; see the last two metrics in this article to address that issue.
Normalized Root Mean Squared Error (NRMSE)
NRMSE is an extension of RMSE and is calculated by normalizing RMSE. There are two popular methods for normalizing RMSE: using mean or using the range of the true values (difference of minimum and maximum values).
Where ymax is the maximum true value and ymin is the minimum true value.
NRMSE is often used to compare different datasets or forecasting models that have different scales (units and gross revenue, for example). The smaller the value is, the better the performance of the model. This metric can overlook issues when dealing with low data volume; see Weighted Absolute Percentage Error and Weighted Mean Absolute Percentage Error to address this.
Weighted Absolute Percentage Error (WAPE)
WAPE is defined as the weighted average of the mean absolute error.
Where y’ is forecasted value and y is the true value. n is total number of values in the test set.
The error metrics mentioned above help us measure the performance of the forecasting model but can be deceiving when dealing with low volume data, for example, when the true value of some data points is very small compared to the rest of the data (e.g., intermittent demand/sales data). For such cases, WAPE can be used.
The lower the value of WAPE, the better the performance of the model. WAPE is helpful here because the “weighing” helps distinguish the smaller errors from larger errors. In other words, this metric prevents the small values from being considered as equal to or higher than larger values.4
Weighted Mean Absolute Percentage Error (WMAPE)
WMAPE is an extension of WAPE and is defined as the weighted mean absolute percentage error.
Where y’ is forecasted value and y is the true value. n is total number of values in the test set.
The lower the value of WMAPE, the better the performance of the model. This metric is helpful for low volume data where each observation has different priority when evaluating forecasting models. Observations with higher priority have a higher weight value. The larger the error in high priority forecast values, the larger the WMAPE value is.
Range of Errors & Accuracies
When using the error metrics mentioned above, the actual distribution of the error values is not known. However, this distribution can give further insights into the behavior of the forecasting model and help select the most suitable metric. In the Jedox AIssisted™ Planning Wizard, besides the aforementioned metrics, error distribution is also calculated, i.e., the value of the metric for each data point of the test set. A summary of the distribution, including other relevant values such as the minimum, maximum and median error values, is also provided.
Conclusion
Even though there are multiple metrics, each one provides specific information that may or may not be suitable for your specific use case. This means a metric should be chosen based on the use case and an understanding of the data involved in making the predictions.
Overview error metrics for forecasts
- MAE is useful when absolute error needs to be measured. It is easy to understand but it is not efficient when data has extreme values.
- MAPE is also easy to understand and is used when different forecast models or datasets need to be compared because this is a percentage value. MAPE suffers from the same disadvantage as MAE, i.e., it is not efficient when data has extreme values.
- MSE is useful when spread of the forecast values is important and larger values need to be penalized. However, this metrics is often difficult to interpret because it is a squared value.
- RMSE (NRMSE) is also useful when spread is of importance and larger values need to be penalized. RMSE is easier to interpret when compared to MSE because the RMSE value is of the same scale as the forecasted values.
- WAPE is useful when dealing with low volume data as it is calculated by weighting the error over total true values.
- WMAPE is also useful when dealing with low volume data. WMAPE helps to incorporate the priority by utilizing the weight (priority value) of each observation.
Jedox provides a comprehensive overview of forecast errors and their distribution in the AIssisted™ Planning Wizard, and also an unbiased view into the future with predictive forecasting.
References
1 Error Metrics
2 Absolute Error Forecast Accuracy
3 Mean Squared Error
4 MAPE vs. WAPE (DE)
Your ultimate guide to strategic sales planning
A pillar of modern sales performance management
Jedox
Jedox is the world’s most adaptable planning and performance management platform that empowers organisations to deliver plans that outperform expectations. Over 2,500 organisations in 140 countries trust Jedox to model any scenario, integrate data from any source and simplify cross-organisational plans across all business systems. Jedox enables a culture of decisiveness and confidence so teams can plan for opportunities, react quickly to changes, and uncover what they didn’t know was possible.
Related Articles
Page load link
Go to Top
Есть 3 различных API для оценки качества прогнозов модели:
- Метод оценки оценщика : у оценщиков есть
score
метод, обеспечивающий критерий оценки по умолчанию для проблемы, для решения которой они предназначены. Это обсуждается не на этой странице, а в документации каждого оценщика. - Параметр оценки: инструменты оценки модели с использованием перекрестной проверки (например,
model_selection.cross_val_score
иmodel_selection.GridSearchCV
) полагаются на внутреннюю стратегию оценки . Это обсуждается в разделе Параметр оценки: определение правил оценки модели . - Метрические функции : В
sklearn.metrics
модуле реализованы функции оценки ошибки прогноза для конкретных целей. Эти показатели подробно описаны в разделах по метрикам классификации , MultiLabel ранжирования показателей , показателей регрессии и показателей кластеризации .
Наконец, фиктивные оценки полезны для получения базового значения этих показателей для случайных прогнозов.
3.3.1. В scoring параметрах: определение правил оценки моделей
Выбор и оценка модели с использованием таких инструментов, как model_selection.GridSearchCV
и model_selection.cross_val_score
, принимают scoring
параметр, который контролирует, какую метрику они применяют к оцениваемым оценщикам.
3.3.1.1. Общие случаи: предопределенные значения
Для наиболее распространенных случаев использования вы можете назначить объект подсчета с помощью scoring
параметра; в таблице ниже показаны все возможные значения. Все объекты счетчика следуют соглашению о том, что более высокие возвращаемые значения лучше, чем более низкие возвращаемые значения . Таким образом, метрики, которые измеряют расстояние между моделью и данными, например metrics.mean_squared_error
, доступны как neg_mean_squared_error, которые возвращают инвертированное значение метрики.
Подсчет очков | Функция | Комментарий |
Классификация | ||
‘accuracy’ | metrics.accuracy_score |
|
‘balanced_accuracy’ | metrics.balanced_accuracy_score |
|
‘top_k_accuracy’ | metrics.top_k_accuracy_score |
|
‘average_precision’ | metrics.average_precision_score |
|
‘neg_brier_score’ | metrics.brier_score_loss |
|
‘f1’ | metrics.f1_score |
для двоичных целей |
‘f1_micro’ | metrics.f1_score |
микро-усредненный |
‘f1_macro’ | metrics.f1_score |
микро-усредненный |
‘f1_weighted’ | metrics.f1_score |
средневзвешенное |
‘f1_samples’ | metrics.f1_score |
по многопозиционному образцу |
‘neg_log_loss’ | metrics.log_loss |
требуетсяpredict_proba поддержка |
‘precision’ etc. | metrics.precision_score |
суффиксы применяются как с ‘f1’ |
‘recall’ etc. | metrics.recall_score |
суффиксы применяются как с ‘f1’ |
‘jaccard’ etc. | metrics.jaccard_score |
суффиксы применяются как с ‘f1’ |
‘roc_auc’ | metrics.roc_auc_score |
|
‘roc_auc_ovr’ | metrics.roc_auc_score |
|
‘roc_auc_ovo’ | metrics.roc_auc_score |
|
‘roc_auc_ovr_weighted’ | metrics.roc_auc_score |
|
‘roc_auc_ovo_weighted’ | metrics.roc_auc_score |
|
Кластеризация | ||
‘adjusted_mutual_info_score’ | metrics.adjusted_mutual_info_score |
|
‘adjusted_rand_score’ | metrics.adjusted_rand_score |
|
‘completeness_score’ | metrics.completeness_score |
|
‘fowlkes_mallows_score’ | metrics.fowlkes_mallows_score |
|
‘homogeneity_score’ | metrics.homogeneity_score |
|
‘mutual_info_score’ | metrics.mutual_info_score |
|
‘normalized_mutual_info_score’ | metrics.normalized_mutual_info_score |
|
‘rand_score’ | metrics.rand_score |
|
‘v_measure_score’ | metrics.v_measure_score |
|
Регрессия | ||
‘explained_variance’ | metrics.explained_variance_score |
|
‘max_error’ | metrics.max_error |
|
‘neg_mean_absolute_error’ | metrics.mean_absolute_error |
|
‘neg_mean_squared_error’ | metrics.mean_squared_error |
|
‘neg_root_mean_squared_error’ | metrics.mean_squared_error |
|
‘neg_mean_squared_log_error’ | metrics.mean_squared_log_error |
|
‘neg_median_absolute_error’ | metrics.median_absolute_error |
|
‘r2’ | metrics.r2_score |
|
‘neg_mean_poisson_deviance’ | metrics.mean_poisson_deviance |
|
‘neg_mean_gamma_deviance’ | metrics.mean_gamma_deviance |
|
‘neg_mean_absolute_percentage_error’ | metrics.mean_absolute_percentage_error |
Примеры использования:
>>> from sklearn import svm, datasets >>> from sklearn.model_selection import cross_val_score >>> X, y = datasets.load_iris(return_X_y=True) >>> clf = svm.SVC(random_state=0) >>> cross_val_score(clf, X, y, cv=5, scoring='recall_macro') array([0.96..., 0.96..., 0.96..., 0.93..., 1. ]) >>> model = svm.SVC() >>> cross_val_score(model, X, y, cv=5, scoring='wrong_choice') Traceback (most recent call last): ValueError: 'wrong_choice' is not a valid scoring value. Use sorted(sklearn.metrics.SCORERS.keys()) to get valid options.
Примечание
Значения, перечисленные в виде ValueError
исключения, соответствуют функциям измерения точности прогнозирования, описанным в следующих разделах. Объекты счетчика для этих функций хранятся в словаре sklearn.metrics.SCORERS
.
3.3.1.2. Определение стратегии выигрыша от метрических функций
Модуль sklearn.metrics
также предоставляет набор простых функций, измеряющих ошибку предсказания с учетом истинности и предсказания:
- функции, заканчивающиеся на,
_score
возвращают значение для максимизации, чем выше, тем лучше. - функции, заканчивающиеся на
_error
или_loss
возвращающие значение, которое нужно минимизировать, чем ниже, тем лучше. При преобразовании в объект счетчика с использованиемmake_scorer
установите дляgreater_is_better
параметра значениеFalse
(True
по умолчанию; см. Описание параметра ниже).
Метрики, доступные для различных задач машинного обучения, подробно описаны в разделах ниже.
Многим метрикам не даются имена для использования в качестве scoring
значений, иногда потому, что они требуют дополнительных параметров, например fbeta_score
. В таких случаях вам необходимо создать соответствующий объект оценки. Самый простой способ создать вызываемый объект для оценки — использовать make_scorer
. Эта функция преобразует метрики в вызываемые объекты, которые можно использовать для оценки модели.
Один из типичных вариантов использования — обернуть существующую метрическую функцию из библиотеки значениями, отличными от значений по умолчанию для ее параметров, такими как beta
параметр для fbeta_score
функции:
>>> from sklearn.metrics import fbeta_score, make_scorer >>> ftwo_scorer = make_scorer(fbeta_score, beta=2) >>> from sklearn.model_selection import GridSearchCV >>> from sklearn.svm import LinearSVC >>> grid = GridSearchCV(LinearSVC(), param_grid={'C': [1, 10]}, ... scoring=ftwo_scorer, cv=5)
Второй вариант использования — создание полностью настраиваемого объекта скоринга из простой функции Python с использованием make_scorer
, которая может принимать несколько параметров:
- функция Python, которую вы хотите использовать (
my_custom_loss_func
в примере ниже) - возвращает ли функция Python оценку (
greater_is_better=True
, по умолчанию) или потерю (greater_is_better=False
). В случае потери результат функции python аннулируется объектом скоринга в соответствии с соглашением о перекрестной проверке, согласно которому скоринтеры возвращают более высокие значения для лучших моделей. - только для показателей классификации: требуется ли для предоставленной вами функции Python постоянная уверенность в принятии решений (
needs_threshold=True
). Значение по умолчанию неверно. - любые дополнительные параметры, такие как
beta
илиlabels
вf1_score
.
Вот пример создания пользовательских счетчиков очков и использования greater_is_better
параметра:
>>> import numpy as np >>> def my_custom_loss_func(y_true, y_pred): ... diff = np.abs(y_true - y_pred).max() ... return np.log1p(diff) ... >>> # score will negate the return value of my_custom_loss_func, >>> # which will be np.log(2), 0.693, given the values for X >>> # and y defined below. >>> score = make_scorer(my_custom_loss_func, greater_is_better=False) >>> X = [[1], [1]] >>> y = [0, 1] >>> from sklearn.dummy import DummyClassifier >>> clf = DummyClassifier(strategy='most_frequent', random_state=0) >>> clf = clf.fit(X, y) >>> my_custom_loss_func(y, clf.predict(X)) 0.69... >>> score(clf, X, y) -0.69...
3.3.1.3. Реализация собственного скорингового объекта
Вы можете сгенерировать еще более гибкие модели скоринга, создав свой собственный скоринговый объект с нуля, без использования make_scorer
фабрики. Чтобы вызываемый может быть бомбардиром, он должен соответствовать протоколу, указанному в следующих двух правилах:
- Его можно вызвать с параметрами (estimator, X, y), где estimator это модель, которая должна быть оценена, X это данные проверки и y основная истинная цель для (в контролируемом случае) или None (в неконтролируемом случае).
- Он возвращает число с плавающей запятой, которое количественно определяет
estimator
качество прогнозированияX
со ссылкой наy
. Опять же, по соглашению более высокие числа лучше, поэтому, если ваш секретарь сообщает о проигрыше, это значение следует отменить.
Примечание Использование пользовательских счетчиков в функциях, где n_jobs> 1
Хотя определение пользовательской функции оценки вместе с вызывающей функцией должно работать из коробки с бэкэндом joblib по умолчанию (loky), его импорт из другого модуля будет более надежным подходом и будет работать независимо от бэкэнда joblib.
Например, чтобы использовать n_jobs
больше 1 в примере ниже, custom_scoring_function
функция сохраняется в созданном пользователем модуле ( custom_scorer_module.py
) и импортируется:
>>> from custom_scorer_module import custom_scoring_function >>> cross_val_score(model, ... X_train, ... y_train, ... scoring=make_scorer(custom_scoring_function, greater_is_better=False), ... cv=5, ... n_jobs=-1)
3.3.1.4. Использование множественной метрической оценки
Scikit-learn также позволяет оценивать несколько показателей в GridSearchCV
, RandomizedSearchCV
и cross_validate
.
Есть три способа указать несколько показателей оценки для scoring
параметра:
- Как итерация строковых показателей:
>>> scoring = ['accuracy', 'precision']
- В качестве
dict
сопоставления имени секретаря с функцией подсчета очков:
>>> from sklearn.metrics import accuracy_score >>> from sklearn.metrics import make_scorer >>> scoring = {'accuracy': make_scorer(accuracy_score), ... 'prec': 'precision'}
Обратите внимание, что значения dict могут быть либо функциями счетчика, либо одной из предварительно определенных строк показателей.
- Как вызываемый объект, возвращающий словарь оценок:
>>> from sklearn.model_selection import cross_validate >>> from sklearn.metrics import confusion_matrix >>> # A sample toy binary classification dataset >>> X, y = datasets.make_classification(n_classes=2, random_state=0) >>> svm = LinearSVC(random_state=0) >>> def confusion_matrix_scorer(clf, X, y): ... y_pred = clf.predict(X) ... cm = confusion_matrix(y, y_pred) ... return {'tn': cm[0, 0], 'fp': cm[0, 1], ... 'fn': cm[1, 0], 'tp': cm[1, 1]} >>> cv_results = cross_validate(svm, X, y, cv=5, ... scoring=confusion_matrix_scorer) >>> # Getting the test set true positive scores >>> print(cv_results['test_tp']) [10 9 8 7 8] >>> # Getting the test set false negative scores >>> print(cv_results['test_fn']) [0 1 2 3 2]
3.3.2. Метрики классификации
В sklearn.metrics
модуле реализованы несколько функций потерь, оценки и полезности для измерения эффективности классификации. Некоторые метрики могут потребовать оценок вероятности положительного класса, значений достоверности или значений двоичных решений. Большинство реализаций позволяют каждой выборке вносить взвешенный вклад в общую оценку с помощью sample_weight
параметра.
Некоторые из них ограничены случаем двоичной классификации:
precision_recall_curve (y_true, probas_pred, *) |
Вычислите пары точности-отзыва для разных пороговых значений вероятности. |
roc_curve (y_true, y_score, *[, pos_label, …]) |
Вычислить рабочую характеристику приемника (ROC). |
det_curve (y_true, y_score[, pos_label, …]) |
Вычислите частоту ошибок для различных пороговых значений вероятности. |
Другие также работают в случае мультикласса:
balanced_accuracy_score (y_true, y_pred, *[, …]) |
Вычислите сбалансированную точность. |
cohen_kappa_score (y1, y2, *[, labels, …]) |
Каппа Коэна: статистика, измеряющая согласованность аннотаторов. |
confusion_matrix (y_true, y_pred, *[, …]) |
Вычислите матрицу неточностей, чтобы оценить точность классификации. |
hinge_loss (y_true, pred_decision, *[, …]) |
Средняя потеря петель (нерегулируемая). |
matthews_corrcoef (y_true, y_pred, *[, …]) |
Вычислите коэффициент корреляции Мэтьюза (MCC). |
roc_auc_score (y_true, y_score, *[, average, …]) |
Вычислить площадь под кривой рабочих характеристик приемника (ROC AUC) по оценкам прогнозов. |
top_k_accuracy_score (y_true, y_score, *[, …]) |
Top-k Рейтинг по классификации точности. |
Некоторые также работают в многоярусном регистре:
accuracy_score (y_true, y_pred, *[, …]) |
Классификационная оценка точности. |
classification_report (y_true, y_pred, *[, …]) |
Создайте текстовый отчет, показывающий основные показатели классификации. |
f1_score (y_true, y_pred, *[, labels, …]) |
Вычислите оценку F1, также известную как сбалансированная оценка F или F-мера. |
fbeta_score (y_true, y_pred, *, beta[, …]) |
Вычислите оценку F-beta. |
hamming_loss (y_true, y_pred, *[, sample_weight]) |
Вычислите среднюю потерю Хэмминга. |
jaccard_score (y_true, y_pred, *[, labels, …]) |
Оценка коэффициента сходства Жаккара. |
log_loss (y_true, y_pred, *[, eps, …]) |
Потеря журнала, также известная как потеря логистики или потеря кросс-энтропии. |
multilabel_confusion_matrix (y_true, y_pred, *) |
Вычислите матрицу неточностей для каждого класса или образца. |
precision_recall_fscore_support (y_true, …) |
Точность вычислений, отзыв, F-мера и поддержка для каждого класса. |
precision_score (y_true, y_pred, *[, labels, …]) |
Вычислите точность. |
recall_score (y_true, y_pred, *[, labels, …]) |
Вычислите отзыв. |
roc_auc_score (y_true, y_score, *[, average, …]) |
Вычислить площадь под кривой рабочих характеристик приемника (ROC AUC) по оценкам прогнозов. |
zero_one_loss (y_true, y_pred, *[, …]) |
Потеря классификации нулевая единица. |
А некоторые работают с двоичными и многозначными (но не мультиклассовыми) проблемами:
В следующих подразделах мы опишем каждую из этих функций, которым будут предшествовать некоторые примечания по общему API и определению показателей.
3.3.2.1. От бинарного до мультиклассового и многозначного
Некоторые метрики по существу определены для задач двоичной классификации (например f1_score
, roc_auc_score
). В этих случаях по умолчанию оценивается только положительная метка, предполагая по умолчанию, что положительный класс помечен 1
(хотя это можно настроить с помощью pos_label
параметра).
При расширении двоичной метрики на задачи с несколькими классами или метками данные обрабатываются как набор двоичных задач, по одной для каждого класса. Затем есть несколько способов усреднить вычисления двоичных показателей по набору классов, каждый из которых может быть полезен в некотором сценарии. Если возможно, вы должны выбрать одно из них с помощью average
параметра.
"macro"
просто вычисляет среднее значение двоичных показателей, придавая каждому классу одинаковый вес. В задачах, где редкие занятия тем не менее важны, макро-усреднение может быть средством выделения их производительности. С другой стороны, предположение, что все классы одинаково важны, часто неверно, так что макро-усреднение будет чрезмерно подчеркивать обычно низкую производительность для нечастого класса."weighted"
учитывает дисбаланс классов, вычисляя среднее значение двоичных показателей, в которых оценка каждого класса взвешивается по его присутствию в истинной выборке данных."micro"
дает каждой паре выборка-класс равный вклад в общую метрику (за исключением результата взвешивания выборки). Вместо того, чтобы суммировать метрику для каждого класса, это суммирует дивиденды и делители, составляющие метрики для каждого класса, для расчета общего частного. Микро-усреднение может быть предпочтительным в настройках с несколькими ярлыками, включая многоклассовую классификацию, когда класс большинства следует игнорировать."samples"
применяется только к задачам с несколькими ярлыками. Он не вычисляет меру для каждого класса, вместо этого вычисляет метрику по истинным и прогнозируемым классам для каждой выборки в данных оценки и возвращает их (sample_weight
— взвешенное) среднее значение.- Выбор
average=None
вернет массив с оценкой для каждого класса.
В то время как данные мультикласса предоставляются метрике, как двоичные цели, в виде массива меток классов, данные с несколькими метками указываются как индикаторная матрица, в которой ячейка [i, j] имеет значение 1, если у образца i есть метка j, и значение 0 в противном случае.
3.3.2.2. Оценка точности
Функция accuracy_score
вычисляет точность , либо фракции ( по умолчанию) или количество (нормализует = False) правильных предсказаний.
В классификации с несколькими ярлыками функция возвращает точность подмножества. Если весь набор предсказанных меток для выборки строго соответствует истинному набору меток, то точность подмножества равна 1,0; в противном случае — 0, 0.
Если $hat{y}_i$ прогнозируемое значение $i$-й образец и $y_i$ — соответствующее истинное значение, тогда доля правильных прогнозов по сравнению с $n_{samples}$ определяется как
$$texttt{accuracy}(y, hat{y}) = frac{1}{n_text{samples}} sum_{i=0}^{n_text{samples}-1} 1(hat{y}_i = y_i)$$
где $1(x)$- индикаторная функция .
>>> import numpy as np >>> from sklearn.metrics import accuracy_score >>> y_pred = [0, 2, 1, 3] >>> y_true = [0, 1, 2, 3] >>> accuracy_score(y_true, y_pred) 0.5 >>> accuracy_score(y_true, y_pred, normalize=False) 2
В многопозиционном корпусе с бинарными индикаторами меток:
>>> accuracy_score(np.array([[0, 1], [1, 1]]), np.ones((2, 2))) 0.5
Пример:
- См. В разделе Проверка с перестановками значимости классификационной оценки пример использования показателя точности с использованием перестановок набора данных.
3.3.2.3. Рейтинг точности Top-k
Функция top_k_accuracy_score
представляет собой обобщение accuracy_score
. Разница в том, что прогноз считается правильным, если истинная метка связана с одним из k
наивысших прогнозируемых баллов. accuracy_score
является частным случаем k = 1
.
Функция охватывает случаи двоичной и многоклассовой классификации, но не случай многозначной классификации.
Если $hat{f}_{i,j}$ прогнозируемый класс для $i$-й образец, соответствующий $j$-й по величине прогнозируемый результат и $y_i$ — соответствующее истинное значение, тогда доля правильных прогнозов по сравнению с $n_{samples}$ определяется как
$$texttt{top-k accuracy}(y, hat{f}) = frac{1}{n_text{samples}} sum_{i=0}^{n_text{samples}-1} sum_{j=1}^{k} 1(hat{f}_{i,j} = y_i)$$
где k допустимое количество предположений и 1(x)- индикаторная функция.
>>> import numpy as np >>> from sklearn.metrics import top_k_accuracy_score >>> y_true = np.array([0, 1, 2, 2]) >>> y_score = np.array([[0.5, 0.2, 0.2], ... [0.3, 0.4, 0.2], ... [0.2, 0.4, 0.3], ... [0.7, 0.2, 0.1]]) >>> top_k_accuracy_score(y_true, y_score, k=2) 0.75 >>> # Not normalizing gives the number of "correctly" classified samples >>> top_k_accuracy_score(y_true, y_score, k=2, normalize=False) 3
3.3.2.4. Сбалансированный показатель точности
Функция balanced_accuracy_score
вычисляет взвешенную точность , что позволяет избежать завышенных оценок производительности на несбалансированных данных. Это макросреднее количество оценок отзыва по классу или, что то же самое, грубая точность, где каждая выборка взвешивается в соответствии с обратной распространенностью ее истинного класса. Таким образом, для сбалансированных наборов данных оценка равна точности.
В двоичном случае сбалансированная точность равна среднему арифметическому чувствительности (истинно положительный показатель) и специфичности (истинно отрицательный показатель) или площади под кривой ROC с двоичными прогнозами, а не баллами:
$$texttt{balanced-accuracy} = frac{1}{2}left( frac{TP}{TP + FN} + frac{TN}{TN + FP}right )$$
Если классификатор одинаково хорошо работает в любом классе, этот термин сокращается до обычной точности (т. е. Количества правильных прогнозов, деленного на общее количество прогнозов).
Напротив, если обычная точность выше вероятности только потому, что классификатор использует несбалансированный набор тестов, тогда сбалансированная точность, при необходимости, упадет до $frac{1}{n_classes}$.
Оценка варьируется от 0 до 1 или, когда adjusted=True
используется, масштабируется до диапазона $frac{1}{1 — n_classes}$ до 1 включительно, с произвольной оценкой 0.
Если yi истинная ценность $i$-й образец, и $w_i$ — соответствующий вес образца, затем мы настраиваем вес образца на:
$$hat{w}_i = frac{w_i}{sum_j{1(y_j = y_i) w_j}}$$
где $1(x)$- индикаторная функция . Учитывая предсказанный $hat{y}_i$ для образца $i$, сбалансированная точность определяется как:
$$texttt{balanced-accuracy}(y, hat{y}, w) = frac{1}{sum{hat{w}_i}} sum_i 1(hat{y}_i = y_i) hat{w}_i$$
С adjusted=True
сбалансированной точностью сообщает об относительном увеличении от $texttt{balanced-accuracy}(y, mathbf{0}, w) =frac{1}{n_classes}$. В двоичном случае это также известно как * статистика Юдена * , или информированность .
Примечание
Определение мультикласса здесь кажется наиболее разумным расширением метрики, используемой в бинарной классификации, хотя в литературе нет определенного консенсуса:
- Наше определение: [Mosley2013] , [Kelleher2015] и [Guyon2015] , где [Guyon2015] принимает скорректированную версию, чтобы гарантировать, что случайные предсказания имеют оценку 0 а точные предсказания имеют оценку 1..
- Точность балансировки классов, как описано в [Mosley2013] : вычисляется минимум между точностью и отзывом для каждого класса. Затем эти значения усредняются по общему количеству классов для получения сбалансированной точности.
- Сбалансированная точность, как описано в [Urbanowicz2015] : среднее значение чувствительности и специфичности вычисляется для каждого класса, а затем усредняется по общему количеству классов.
Рекомендации:
- Гийон 2015 ( 1 , 2 ) И. Гайон, К. Беннет, Г. Коули, Х. Дж. Эскаланте, С. Эскалера, Т. К. Хо, Н. Масиа, Б. Рэй, М. Саид, А. Р. Статников, Э. Вьегас, Дизайн конкурса ChaLearn AutoML Challenge 2015 , IJCNN 2015 г.
- Мосли 2013 ( 1 , 2 ) Л. Мосли, Сбалансированный подход к проблеме мультиклассового дисбаланса , IJCV 2010.
- Kelleher2015 Джон. Д. Келлехер, Брайан Мак Нейме, Аойф Д’Арси, Основы машинного обучения для прогнозной аналитики данных: алгоритмы, рабочие примеры и тематические исследования , 2015.
- Урбанович2015 Urbanowicz RJ, Moore, JH ExSTraCS 2.0: описание и оценка масштабируемой системы классификаторов обучения , Evol. Intel. (2015) 8:89.
3.3.2.5. Каппа Коэна
Функция cohen_kappa_score
вычисляет каппа-Коэна статистику. Эта мера предназначена для сравнения меток, сделанных разными людьми-аннотаторами, а не классификатором с достоверной информацией.
Показатель каппа (см. Строку документации) представляет собой число от -1 до 1. Баллы выше 0,8 обычно считаются хорошим совпадением; ноль или ниже означает отсутствие согласия (практически случайные метки).
Оценка Каппа может быть вычислена для двоичных или многоклассовых задач, но не для задач с несколькими метками (за исключением ручного вычисления оценки для каждой метки) и не более чем для двух аннотаторов.
>>> from sklearn.metrics import cohen_kappa_score >>> y_true = [2, 0, 2, 2, 0, 1] >>> y_pred = [0, 0, 2, 2, 0, 2] >>> cohen_kappa_score(y_true, y_pred) 0.4285714285714286
3.3.2.6. Матрица неточностей ¶
Точность функции confusion_matrix
вычисляет классификацию пути вычисления матрицы путаницы с каждой строкой , соответствующей истинный классом (Википедия и другие ссылки могут использовать различные конвенции для осей).
По определению запись i,j в матрице неточностей — количество наблюдений в группе i, но предполагается, что он будет в группе j. Вот пример:
>>> from sklearn.metrics import confusion_matrix >>> y_true = [2, 0, 2, 2, 0, 1] >>> y_pred = [0, 0, 2, 2, 0, 2] >>> confusion_matrix(y_true, y_pred) array([[2, 0, 0], [0, 0, 1], [1, 0, 2]])
plot_confusion_matrix
может использоваться для визуального представления матрицы неточностей, как показано в примере матрицы неточностей, который создает следующий рисунок:
Параметр normalize
позволяет сообщать коэффициенты вместо подсчетов. Матрица путаница может быть нормализована в 3 различными способами: 'pred'
, 'true'
и 'all'
которые будут делить счетчики на сумму каждого столбца, строки или всей матрицы, соответственно.
>>> y_true = [0, 0, 0, 1, 1, 1, 1, 1] >>> y_pred = [0, 1, 0, 1, 0, 1, 0, 1] >>> confusion_matrix(y_true, y_pred, normalize='all') array([[0.25 , 0.125], [0.25 , 0.375]])
Для двоичных задач мы можем получить подсчет истинно отрицательных, ложноположительных, ложноотрицательных и истинно положительных результатов следующим образом:
>>> y_true = [0, 0, 0, 1, 1, 1, 1, 1] >>> y_pred = [0, 1, 0, 1, 0, 1, 0, 1] >>> tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel() >>> tn, fp, fn, tp (2, 1, 2, 3)
Пример:
- См. В разделе Матрица неточностей пример использования матрицы неточностей для оценки качества выходных данных классификатора.
- См. В разделе Распознавание рукописных цифр пример использования матрицы неточностей для классификации рукописных цифр.
- См. Раздел Классификация текстовых документов с использованием разреженных функций для примера использования матрицы неточностей для классификации текстовых документов.
3.3.2.7. Отчет о классификации
Функция classification_report
создает текстовый отчет , показывающий основные показатели классификации. Вот небольшой пример с настраиваемыми target_names
и предполагаемыми ярлыками:
>>> from sklearn.metrics import classification_report >>> y_true = [0, 1, 2, 2, 0] >>> y_pred = [0, 0, 2, 1, 0] >>> target_names = ['class 0', 'class 1', 'class 2'] >>> print(classification_report(y_true, y_pred, target_names=target_names)) precision recall f1-score support class 0 0.67 1.00 0.80 2 class 1 0.00 0.00 0.00 1 class 2 1.00 0.50 0.67 2 accuracy 0.60 5 macro avg 0.56 0.50 0.49 5 weighted avg 0.67 0.60 0.59 5
Пример:
- См. В разделе Распознавание рукописных цифр пример использования отчета о классификации рукописных цифр.
- См. Раздел Классификация текстовых документов с использованием разреженных функций, где приведен пример использования отчета о классификации для текстовых документов.
- См. Раздел « Оценка параметров с использованием поиска по сетке с перекрестной проверкой», где приведен пример использования отчета о классификации для поиска по сетке с вложенной перекрестной проверкой.
3.3.2.8. Потеря Хэмминга
hamming_loss
вычисляет среднюю потерю Хэмминга или расстояние Хемминга между двумя наборами образцов.
Если $hat{y}_j$ прогнозируемое значение для $j$-я этикетка данного образца, $y_j$ — соответствующее истинное значение, а $n_{labels}$ — количество классов или меток, то потеря Хэмминга $L_{Hamming}$ между двумя образцами определяется как:
$$L_{Hamming}(y, hat{y}) = frac{1}{n_text{labels}} sum_{j=0}^{n_text{labels} — 1} 1(hat{y}_j not= y_j)$$
где $1(x)$- индикаторная функция .
>>> from sklearn.metrics import hamming_loss >>> y_pred = [1, 2, 3, 4] >>> y_true = [2, 2, 3, 4] >>> hamming_loss(y_true, y_pred) 0.25
В многопозиционном корпусе с бинарными индикаторами меток:
>>> hamming_loss(np.array([[0, 1], [1, 1]]), np.zeros((2, 2))) 0.75
Примечание
В мультиклассовой классификации потери Хэмминга соответствуют расстоянию Хэмминга между y_true
и, y_pred
что аналогично функции потерь нуля или единицы . Однако, в то время как потеря нуля или единицы наказывает наборы предсказаний, которые не строго соответствуют истинным наборам, потеря Хэмминга наказывает отдельные метки. Таким образом, потеря Хэмминга, ограниченная сверху потерей нуля или единицы, всегда находится между нулем и единицей включительно; и прогнозирование надлежащего подмножества или надмножества истинных меток даст исключительную потерю Хэмминга от нуля до единицы.
3.3.2.9. Точность, отзыв и F-меры
Интуитивно, точность — это способность классификатора не маркировать как положительный образец, который является отрицательным, а отзыв — это способность классификатора находить все положительные образцы.
F-мера ($F_beta$ а также $F_1$ меры) можно интерпретировать как взвешенное гармоническое среднее значение точности и полноты. А $F_beta$ мера достигает своего лучшего значения на уровне 1 и худшего результата на уровне 0. С $beta = 1$, $F_beta$ а также $F_1$ эквивалентны, а отзыв и точность одинаково важны.
precision_recall_curve
вычисляет кривую точности-отзыва на основе наземной метки истинности и оценки, полученной классификатором путем изменения порога принятия решения.
Функция average_precision_score
вычисляет среднюю точность (AP) от оценки прогнозирования. Значение от 0 до 1 и выше — лучше. AP определяется как
$$text{AP} = sum_n (R_n — R_{n-1}) P_n$$
где $P_n$ а также $R_n$- точность и отзыв на n-м пороге. При случайных прогнозах AP — это доля положительных образцов.
Ссылки [Manning2008] и [Everingham2010] представляют альтернативные варианты AP, которые интерполируют кривую точности-отзыва. В настоящее время average_precision_score
не реализован какой-либо вариант с интерполяцией. Ссылки [Davis2006] и [Flach2015] описывают, почему линейная интерполяция точек на кривой точности-отзыва обеспечивает чрезмерно оптимистичный показатель эффективности классификатора. Эта линейная интерполяция используется при вычислении площади под кривой с помощью правила трапеции в auc
.
Несколько функций позволяют анализировать точность, отзыв и оценку F-мер:
average_precision_score (y_true, y_score, *) |
Вычислить среднюю точность (AP) из оценок прогнозов. |
f1_score (y_true, y_pred, *[, labels, …]) |
Вычислите оценку F1, также известную как сбалансированная оценка F или F-мера. |
fbeta_score (y_true, y_pred, *, beta[, …]) |
Вычислите оценку F-beta. |
precision_recall_curve (y_true, probas_pred, *) |
Вычислите пары точности-отзыва для разных пороговых значений вероятности. |
precision_recall_fscore_support (y_true, …) |
Точность вычислений, отзыв, F-мера и поддержка для каждого класса. |
precision_score (y_true, y_pred, *[, labels, …]) |
Вычислите точность. |
recall_score (y_true, y_pred, *[, labels, …]) |
Вычислите рекол. |
Обратите внимание, что функция precision_recall_curve
ограничена двоичным регистром. Функция average_precision_score
работает только в двоичном формате классификации и MultiLabel индикатора. В функции plot_precision_recall_curve
графики точности вспомнить следующим образом .
Примеры:
- См. Раздел Классификация текстовых документов с использованием разреженных функций для примера использования
f1_score
для классификации текстовых документов. - См. Раздел « Оценка параметров с использованием поиска по сетке с перекрестной проверкой», где приведен пример
precision_score
иrecall_score
использование для оценки параметров с помощью поиска по сетке с вложенной перекрестной проверкой. - См. В разделе Precision-Recall пример использования
precision_recall_curve
для оценки качества вывода классификатора.
Рекомендации:
- [Manning2008] г. CD Manning, P. Raghavan, H. Schütze, Introduction to Information Retrieval , 2008.
- [Everingham2010] М. Эверингем, Л. Ван Гул, CKI Уильямс, Дж. Винн, А. Зиссерман, Задача классов визуальных объектов Pascal (VOC) , IJCV 2010.
- [Davis2006] Дж. Дэвис, М. Гоадрич, Взаимосвязь между точным воспроизведением и кривыми ROC , ICML 2006.
- [Flach2015] П.А. Флэч, М. Кулл, Кривые точности-отзыва-выигрыша: PR-анализ выполнен правильно , NIPS 2015.
3.3.2.9.1. Бинарная классификация
В задаче бинарной классификации термины «положительный» и «отрицательный» относятся к предсказанию классификатора, а термины «истинный» и «ложный» относятся к тому, соответствует ли этот прогноз внешнему суждению ( иногда известное как «наблюдение»). Учитывая эти определения, мы можем сформулировать следующую таблицу:
Фактический класс (наблюдение) | ||
Прогнозируемый класс (ожидание) | tp (истинно положительный результат) Правильный результат | fp (ложное срабатывание) Неожиданный результат |
Прогнозируемый класс (ожидание) | fn (ложноотрицательный) Отсутствует результат | tn (истинно отрицательное) Правильное отсутствие результата |
В этом контексте мы можем определить понятия точности, отзыва и F-меры:
$$text{precision} = frac{tp}{tp + fp},$$
$$text{recall} = frac{tp}{tp + fn},$$
$$F_beta = (1 + beta^2) frac{text{precision} times text{recall}}{beta^2 text{precision} + text{recall}}.$$
Вот несколько небольших примеров бинарной классификации:
>>> from sklearn import metrics >>> y_pred = [0, 1, 0, 0] >>> y_true = [0, 1, 0, 1] >>> metrics.precision_score(y_true, y_pred) 1.0 >>> metrics.recall_score(y_true, y_pred) 0.5 >>> metrics.f1_score(y_true, y_pred) 0.66... >>> metrics.fbeta_score(y_true, y_pred, beta=0.5) 0.83... >>> metrics.fbeta_score(y_true, y_pred, beta=1) 0.66... >>> metrics.fbeta_score(y_true, y_pred, beta=2) 0.55... >>> metrics.precision_recall_fscore_support(y_true, y_pred, beta=0.5) (array([0.66..., 1. ]), array([1. , 0.5]), array([0.71..., 0.83...]), array([2, 2])) >>> import numpy as np >>> from sklearn.metrics import precision_recall_curve >>> from sklearn.metrics import average_precision_score >>> y_true = np.array([0, 0, 1, 1]) >>> y_scores = np.array([0.1, 0.4, 0.35, 0.8]) >>> precision, recall, threshold = precision_recall_curve(y_true, y_scores) >>> precision array([0.66..., 0.5 , 1. , 1. ]) >>> recall array([1. , 0.5, 0.5, 0. ]) >>> threshold array([0.35, 0.4 , 0.8 ]) >>> average_precision_score(y_true, y_scores) 0.83...
3.3.2.9.2. Мультиклассовая и многозначная классификация
В задаче классификации по нескольким классам и меткам понятия точности, отзыва и F-меры могут применяться к каждой метке независимо. Есть несколько способов , чтобы объединить результаты по этикеткам, указанных в average
аргументе к average_precision_score
(MultiLabel только) f1_score
, fbeta_score
, precision_recall_fscore_support
, precision_score
и recall_score
функция, как описано выше . Обратите внимание, что если включены все метки, «микро» -усреднение в настройке мультикласса обеспечит точность, отзыв и $F$ все они идентичны по точности. Также обратите внимание, что «взвешенное» усреднение может дать оценку F, которая не находится между точностью и отзывом.
Чтобы сделать это более явным, рассмотрим следующие обозначения:
- $y$ набор предсказанных ($sample$, $label$) пары
- $hat{y}$ набор истинных ($sample$, $label$) пары
- $L$ набор лейблов
- $S$ набор образцов
- $y_s$ подмножество $y$ с образцом $s$, т.е $y_s := left{(s’, l) in y | s’ = sright}$.
- $y_l$ подмножество $y$ с этикеткой $l$
- по аналогии, $hat{y}_s$ а также $hat{y}_l$ являются подмножествами $hat{y}$
- $P(A, B) := frac{left| A cap B right|}{left|Aright|}$ для некоторых наборов $A$ и $B$
- $R(A, B) := frac{left| A cap B right|}{left|Bright|}$ (Условные обозначения различаются в зависимости от обращения $B = emptyset$; эта реализация использует $R(A, B):=0$, и аналогичные для $P$.)
- $$F_beta(A, B) := left(1 + beta^2right) frac{P(A, B) times R(A, B)}{beta^2 P(A, B) + R(A, B)}$$
Тогда показатели определяются как:
average | Точность | Отзывать | F_beta |
«micro» | $P(y, hat{y})$ | $R(y, hat{y})$ | $F_beta(y, hat{y})$ |
«samples» | $frac{1}{left|Sright|} sum_{s in S} P(y_s, hat{y}_s)$ | $frac{1}{left|Sright|} sum_{s in S} R(y_s, hat{y}_s)$ | $frac{1}{left|Sright|} sum_{s in S} F_beta(y_s, hat{y}_s)$ |
«macro» | $frac{1}{left|Lright|} sum_{l in L} P(y_l, hat{y}_l)$ | $frac{1}{left|Lright|} sum_{l in L} R(y_l, hat{y}_l)$ | $frac{1}{left|Lright|} sum_{l in L} F_beta(y_l, hat{y}_l)$ |
«weighted» | $frac{1}{sum_{l in L} left|hat{y}lright|} sum{l in L} left|hat{y}_lright| P(y_l, hat{y}_l)$ | $frac{1}{sum_{l in L} left|hat{y}lright|} sum{l in L} left|hat{y}_lright| R(y_l, hat{y}_l)$ | $frac{1}{sum_{l in L} left|hat{y}lright|} sum{l in L} left|hat{y}lright| Fbeta(y_l, hat{y}_l)$ |
None | $langle P(y_l, hat{y}_l) | l in L rangle$ | $langle R(y_l, hat{y}_l) | l in L rangle$ | $langle F_beta(y_l, hat{y}_l) | l in L rangle$ |
>>> from sklearn import metrics >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> metrics.precision_score(y_true, y_pred, average='macro') 0.22... >>> metrics.recall_score(y_true, y_pred, average='micro') 0.33... >>> metrics.f1_score(y_true, y_pred, average='weighted') 0.26... >>> metrics.fbeta_score(y_true, y_pred, average='macro', beta=0.5) 0.23... >>> metrics.precision_recall_fscore_support(y_true, y_pred, beta=0.5, average=None) (array([0.66..., 0. , 0. ]), array([1., 0., 0.]), array([0.71..., 0. , 0. ]), array([2, 2, 2]...))
Для мультиклассовой классификации с «отрицательным классом» можно исключить некоторые метки:
>>> metrics.recall_score(y_true, y_pred, labels=[1, 2], average='micro') ... # excluding 0, no labels were correctly recalled 0.0
Точно так же метки, отсутствующие в выборке данных, могут учитываться при макро-усреднении.
>>> metrics.precision_score(y_true, y_pred, labels=[0, 1, 2, 3], average='macro') 0.166...
3.3.2.10. Оценка коэффициента сходства Жаккара
Функция jaccard_score
вычисляет среднее значение коэффициентов сходства Jaccard , также называемый индексом Jaccard, между парами множеств меток.
Коэффициент подобия Жаккара i-ые образцы, с набором меток наземной достоверности yi и прогнозируемый набор меток y^i, определяется как
$$J(y_i, hat{y}_i) = frac{|y_i cap hat{y}_i|}{|y_i cup hat{y}_i|}.$$
jaccard_score
работает как precision_recall_fscore_support
наивно установленная мера, применяемая изначально к бинарным целям, и расширена для применения к множественным меткам и мультиклассам за счет использования average
(см. выше ).
В двоичном случае:
>>> import numpy as np >>> from sklearn.metrics import jaccard_score >>> y_true = np.array([[0, 1, 1], ... [1, 1, 0]]) >>> y_pred = np.array([[1, 1, 1], ... [1, 0, 0]]) >>> jaccard_score(y_true[0], y_pred[0]) 0.6666...
В многопозиционном корпусе с бинарными индикаторами меток:
>>> jaccard_score(y_true, y_pred, average='samples') 0.5833... >>> jaccard_score(y_true, y_pred, average='macro') 0.6666... >>> jaccard_score(y_true, y_pred, average=None) array([0.5, 0.5, 1. ])
Задачи с несколькими классами преобразуются в двоичную форму и обрабатываются как соответствующая задача с несколькими метками:
>>> y_pred = [0, 2, 1, 2] >>> y_true = [0, 1, 2, 2] >>> jaccard_score(y_true, y_pred, average=None) array([1. , 0. , 0.33...]) >>> jaccard_score(y_true, y_pred, average='macro') 0.44... >>> jaccard_score(y_true, y_pred, average='micro') 0.33...
3.3.2.11. Петля лосс
Функция hinge_loss
вычисляет среднее расстояние между моделью и данными с использованием петля лосс, односторонний показателем , который учитывает только ошибки прогнозирования. (Потери на шарнирах используются в классификаторах максимальной маржи, таких как опорные векторные машины.)
Если метки закодированы с помощью +1 и -1, $y$: истинное значение, а $w$ — прогнозируемые решения на выходе decision_function
, тогда потери на шарнирах определяются как:
$$L_text{Hinge}(y, w) = maxleft{1 — wy, 0right} = left|1 — wyright|_+$$
Если имеется более двух ярлыков, hinge_loss
используется мультиклассовый вариант, разработанный Crammer & Singer. Вот статья, описывающая это.
Если $y_w$ прогнозируемое решение для истинного лейбла и $y_t$ — это максимум предсказанных решений для всех других меток, где предсказанные решения выводятся функцией принятия решений, тогда потеря шарнира в нескольких классах определяется следующим образом:
$$L_text{Hinge}(y_w, y_t) = maxleft{1 + y_t — y_w, 0right}$$
Вот небольшой пример, демонстрирующий использование hinge_loss
функции с классификатором svm в задаче двоичного класса:
>>> from sklearn import svm >>> from sklearn.metrics import hinge_loss >>> X = [[0], [1]] >>> y = [-1, 1] >>> est = svm.LinearSVC(random_state=0) >>> est.fit(X, y) LinearSVC(random_state=0) >>> pred_decision = est.decision_function([[-2], [3], [0.5]]) >>> pred_decision array([-2.18..., 2.36..., 0.09...]) >>> hinge_loss([-1, 1, 1], pred_decision) 0.3...
Вот пример, демонстрирующий использование hinge_loss
функции с классификатором svm в мультиклассовой задаче:
>>> X = np.array([[0], [1], [2], [3]]) >>> Y = np.array([0, 1, 2, 3]) >>> labels = np.array([0, 1, 2, 3]) >>> est = svm.LinearSVC() >>> est.fit(X, Y) LinearSVC() >>> pred_decision = est.decision_function([[-1], [2], [3]]) >>> y_true = [0, 2, 3] >>> hinge_loss(y_true, pred_decision, labels) 0.56...
3.3.2.12. Лог лосс
Лог лосс, также называемые потерями логистической регрессии или кросс-энтропийными потерями, определяются на основе оценок вероятности. Он обычно используется в (полиномиальной) логистической регрессии и нейронных сетях, а также в некоторых вариантах максимизации ожидания и может использоваться для оценки выходов вероятности ( predict_proba
) классификатора вместо его дискретных прогнозов.
Для двоичной классификации с истинной меткой $y in {0,1}$ и оценка вероятности $p = operatorname{Pr}(y = 1)$, логарифмическая потеря на выборку представляет собой отрицательную логарифмическую вероятность классификатора с истинной меткой:
$$L_{log}(y, p) = -log operatorname{Pr}(y|p) = -(y log (p) + (1 — y) log (1 — p))$$
Это распространяется на случай мультикласса следующим образом. Пусть истинные метки для набора выборок будут закодированы размером 1 из K как двоичная индикаторная матрица $Y$, т.е. $y_{i,k}=1$ если образец $i$ есть ярлык $k$ взят из набора $K$ этикетки. Пусть $P$ — матрица оценок вероятностей, с $p_{i,k} = operatorname{Pr}(y_{i,k} = 1)$. Тогда потеря журнала всего набора равна
$$L_{log}(Y, P) = -log operatorname{Pr}(Y|P) = — frac{1}{N} sum_{i=0}^{N-1} sum_{k=0}^{K-1} y_{i,k} log p_{i,k}$$
Чтобы увидеть, как это обобщает приведенную выше потерю двоичного журнала, обратите внимание, что в двоичном случае $p_{i,0} = 1 — p_{i,1}$ и $y_{i,0} = 1 — y_{i,1}$, поэтому разложив внутреннюю сумму на $y_{i,k} in {0,1}$ дает двоичную потерю журнала.
В log_loss
функции вычисляет журнал потеря дана список меток приземной истины и матриц вероятностей, возвращенный оценщик predict_proba
методом.
>>> from sklearn.metrics import log_loss >>> y_true = [0, 0, 1, 1] >>> y_pred = [[.9, .1], [.8, .2], [.3, .7], [.01, .99]] >>> log_loss(y_true, y_pred) 0.1738...
Первое [.9, .1] в y_pred означает 90% вероятность того, что первая выборка будет иметь метку 0. Лог лос неотрицательны.
3.3.2.13. Коэффициент корреляции Мэтьюза
Функция matthews_corrcoef
вычисляет коэффициент корреляции Матфея (MCC) для двоичных классов. Цитата из Википедии:
«Коэффициент корреляции Мэтьюза используется в машинном обучении как мера качества двоичных (двухклассных) классификаций. Он учитывает истинные и ложные положительные и отрицательные результаты и обычно рассматривается как сбалансированная мера, которую можно использовать, даже если классы очень разных размеров. MCC — это, по сути, значение коэффициента корреляции между -1 и +1. Коэффициент +1 представляет собой идеальное предсказание, 0 — среднее случайное предсказание и -1 — обратное предсказание. Статистика также известна как коэффициент фи ».
В бинарном (двухклассовом) случае $tp$, $tn$, $fp$ а также $fn$ являются соответственно количеством истинно положительных, истинно отрицательных, ложноположительных и ложноотрицательных результатов, MCC определяется как
$$MCC = frac{tp times tn — fp times fn}{sqrt{(tp + fp)(tp + fn)(tn + fp)(tn + fn)}}.$$
В случае мультикласса коэффициент корреляции Мэтьюза может быть определен в терминах confusion_matrix
C для Kклассы. Чтобы упростить определение, рассмотрим следующие промежуточные переменные:
- $t_k=sum_{i}^{K} C_{ik}$ количество занятий k действительно произошло,
- $p_k=sum_{i}^{K} C_{ki}$ количество занятий k был предсказан,
- $c=sum_{k}^{K} C_{kk}$ общее количество правильно спрогнозированных образцов,
- $s=sum_{i}^{K} sum_{j}^{K} C_{ij}$ общее количество образцов.
Тогда мультиклассовый MCC определяется как:
$$MCC = frac{ c times s — sum_{k}^{K} p_k times t_k }{sqrt{ (s^2 — sum_{k}^{K} p_k^2) times (s^2 — sum_{k}^{K} t_k^2) }}$$
Когда имеется более двух меток, значение MCC больше не будет находиться в диапазоне от -1 до +1. Вместо этого минимальное значение будет где-то между -1 и 0 в зависимости от количества и распределения наземных истинных меток. Максимальное значение всегда +1.
Вот небольшой пример, иллюстрирующий использование matthews_corrcoef
функции:
>>> from sklearn.metrics import matthews_corrcoef >>> y_true = [+1, +1, +1, -1] >>> y_pred = [+1, -1, +1, +1] >>> matthews_corrcoef(y_true, y_pred) -0.33...
3.3.2.14. Матрица путаницы с несколькими метками
Функция multilabel_confusion_matrix
вычисляет класс-накрест ( по умолчанию) или samplewise (samplewise = True) MultiLabel матрицы спутанности для оценки точности классификации. Multilabel_confusion_matrix также обрабатывает данные мультикласса, как если бы они были многоклассовыми, поскольку это преобразование, обычно применяемое для оценки проблем мультикласса с метриками двоичной классификации (такими как точность, отзыв и т. д.).
При вычислении классовой матрицы путаницы с несколькими метками $C$, количество истинных негативов для класса i является $C_{i,0,0}$, ложноотрицательные $C_{i,1,0}$, истинные положительные стороны $C_{i,1,1}$ а ложные срабатывания $C_{i,0,1}$.
Вот пример, демонстрирующий использование multilabel_confusion_matrix
функции с вводом многозначной индикаторной матрицы:
>>> import numpy as np >>> from sklearn.metrics import multilabel_confusion_matrix >>> y_true = np.array([[1, 0, 1], ... [0, 1, 0]]) >>> y_pred = np.array([[1, 0, 0], ... [0, 1, 1]]) >>> multilabel_confusion_matrix(y_true, y_pred) array([[[1, 0], [0, 1]], [[1, 0], [0, 1]], [[0, 1], [1, 0]]])
Или можно построить матрицу неточностей для каждой метки образца:
>>> multilabel_confusion_matrix(y_true, y_pred, samplewise=True) array([[[1, 0], [1, 1]], [[1, 1], [0, 1]]])
Вот пример, демонстрирующий использование multilabel_confusion_matrix
функции с многоклассовым вводом:
>>> y_true = ["cat", "ant", "cat", "cat", "ant", "bird"] >>> y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"] >>> multilabel_confusion_matrix(y_true, y_pred, ... labels=["ant", "bird", "cat"]) array([[[3, 1], [0, 2]], [[5, 0], [1, 0]], [[2, 1], [1, 2]]])
Вот несколько примеров, демонстрирующих использование multilabel_confusion_matrix
функции для расчета отзыва (или чувствительности), специфичности, количества выпадений и пропусков для каждого класса в задаче с вводом многозначной индикаторной матрицы.
Расчет отзыва (также называемого истинно положительным коэффициентом или чувствительностью) для каждого класса:
>>> y_true = np.array([[0, 0, 1], ... [0, 1, 0], ... [1, 1, 0]]) >>> y_pred = np.array([[0, 1, 0], ... [0, 0, 1], ... [1, 1, 0]]) >>> mcm = multilabel_confusion_matrix(y_true, y_pred) >>> tn = mcm[:, 0, 0] >>> tp = mcm[:, 1, 1] >>> fn = mcm[:, 1, 0] >>> fp = mcm[:, 0, 1] >>> tp / (tp + fn) array([1. , 0.5, 0. ])
Расчет специфичности (также называемой истинно отрицательной ставкой) для каждого класса:
>>> tn / (tn + fp) array([1. , 0. , 0.5])
Расчет количества выпадений (также называемый частотой ложных срабатываний) для каждого класса:
>>> fp / (fp + tn) array([0. , 1. , 0.5])
Расчет процента промахов (также называемого ложноотрицательным показателем) для каждого класса:
>>> fn / (fn + tp) array([0. , 0.5, 1. ])
3.3.2.15. Рабочая характеристика приемника (ROC)
Функция roc_curve
вычисляет рабочую характеристическую кривую приемника или кривую ROC . Цитата из Википедии:
«Рабочая характеристика приемника (ROC), или просто кривая ROC, представляет собой графический график, который иллюстрирует работу системы двоичного классификатора при изменении ее порога дискриминации. Он создается путем построения графика доли истинных положительных результатов из положительных (TPR = частота истинных положительных результатов) по сравнению с долей ложных положительных результатов из отрицательных (FPR = частота ложных положительных результатов) при различных настройках пороговых значений. TPR также известен как чувствительность, а FPR — это единица минус специфичность или истинно отрицательный показатель ».
Для этой функции требуется истинное двоичное значение и целевые баллы, которые могут быть либо оценками вероятности положительного класса, либо значениями достоверности, либо двоичными решениями. Вот небольшой пример использования roc_curve
функции:
>>> import numpy as np >>> from sklearn.metrics import roc_curve >>> y = np.array([1, 1, 2, 2]) >>> scores = np.array([0.1, 0.4, 0.35, 0.8]) >>> fpr, tpr, thresholds = roc_curve(y, scores, pos_label=2) >>> fpr array([0. , 0. , 0.5, 0.5, 1. ]) >>> tpr array([0. , 0.5, 0.5, 1. , 1. ]) >>> thresholds array([1.8 , 0.8 , 0.4 , 0.35, 0.1 ])
На этом рисунке показан пример такой кривой ROC:
Функция roc_auc_score
вычисляет площадь под операционной приемника характеристика (ROC) кривой, которая также обозначается через ППК или AUROC. При вычислении площади под кривой roc информация о кривой суммируется в одном номере. Для получения дополнительной информации см. Статью в Википедии о AUC.
По сравнению с такими показателями, как точность подмножества, потеря Хэмминга или оценка F1, ROC не требует оптимизации порога для каждой метки.
3.3.2.15.1. Двоичный регистр
В двоичном случае вы можете либо предоставить оценки вероятности, используя classifier.predict_proba()
метод, либо значения решения без пороговых значений, заданные classifier.decision_function()
методом. В случае предоставления оценок вероятности следует указать вероятность класса с «большей меткой». «Большая метка» соответствует classifier.classes_[1]
и, следовательно classifier.predict_proba(X) [:, 1]. Следовательно, параметр y_score имеет размер (n_samples,).
>>> from sklearn.datasets import load_breast_cancer >>> from sklearn.linear_model import LogisticRegression >>> from sklearn.metrics import roc_auc_score >>> X, y = load_breast_cancer(return_X_y=True) >>> clf = LogisticRegression(solver="liblinear").fit(X, y) >>> clf.classes_ array([0, 1])
Мы можем использовать оценки вероятностей, соответствующие clf.classes_[1]
.
>>> y_score = clf.predict_proba(X)[:, 1] >>> roc_auc_score(y, y_score) 0.99...
В противном случае мы можем использовать значения решения без порога.
>>> roc_auc_score(y, clf.decision_function(X)) 0.99...
3.3.2.15.2. Мультиклассовый кейс
Функция roc_auc_score
также может быть использована в нескольких классах классификации . В настоящее время поддерживаются две стратегии усреднения: алгоритм «один против одного» вычисляет среднее попарных оценок AUC ROC, а алгоритм «один против остальных» вычисляет среднее значение оценок ROC AUC для каждого класса по сравнению со всеми другими классами. В обоих случаях предсказанные метки предоставляются в виде массива со значениями от 0 до n_classes
, а оценки соответствуют оценкам вероятности того, что выборка принадлежит определенному классу. Алгоритмы OvO и OvR поддерживают равномерное взвешивание ( average='macro'
) и по распространенности ( average='weighted'
).
Алгоритм «один против одного» : вычисляет средний AUC всех возможных попарных комбинаций классов. [HT2001] определяет метрику AUC мультикласса, взвешенную равномерно:
$$frac{1}{c(c-1)}sum_{j=1}^{c}sum_{k > j}^c (text{AUC}(j | k) + text{AUC}(k | j))$$
где $c$ количество классов и $text{AUC}(j | k)$ AUC с классом $j$ как положительный класс и класс $k$ как отрицательный класс. В общем, $text{AUC}(j | k) neq text{AUC}(k | j))$ в случае мультикласса. Этот алгоритм используется, установив аргумент ключевого слова , multiclass
чтобы 'ovo'
и average
в 'macro'
.
[HT2001] мультиклассируют AUC метрика может быть расширена , чтобы быть взвешены по распространенности:
$$frac{1}{c(c-1)}sum_{j=1}^{c}sum_{k > j}^c p(j cup k)( text{AUC}(j | k) + text{AUC}(k | j))$$
где cколичество классов. Этот алгоритм используется, установив аргумент ключевого слова , multiclass
чтобы 'ovo'
и average
в 'weighted'
. В 'weighted'
опции возвращает распространенность усредненные , как описано в [FC2009] .
Алгоритм «один против остальных» : вычисляет AUC каждого класса относительно остальных [PD2000] . Алгоритм функционально такой же, как и в случае с несколькими этикетками. Чтобы включить этот алгоритм, установите для аргумента ключевого слова multiclass
значение 'ovr'
. Как и OvO, OvR поддерживает два типа усреднения: 'macro'
[F2006] и 'weighted'
[F2001] .
В приложениях , где высокий процент ложных срабатываний не терпимый параметр max_fpr
из roc_auc_score
может быть использовано , чтобы суммировать кривую ROC до заданного предела.
3.3.2.15.3. Кейс с несколькими метками
В классификации несколько меток, функция roc_auc_score
распространяются путем усреднения меток , как выше . В этом случае вы должны указать y_score
форму . Таким образом, при использовании оценок вероятности необходимо выбрать вероятность класса с большей меткой для каждого выхода.(n_samples, n_classes)
>>> from sklearn.datasets import make_multilabel_classification >>> from sklearn.multioutput import MultiOutputClassifier >>> X, y = make_multilabel_classification(random_state=0) >>> inner_clf = LogisticRegression(solver="liblinear", random_state=0) >>> clf = MultiOutputClassifier(inner_clf).fit(X, y) >>> y_score = np.transpose([y_pred[:, 1] for y_pred in clf.predict_proba(X)]) >>> roc_auc_score(y, y_score, average=None) array([0.82..., 0.86..., 0.94..., 0.85... , 0.94...])
И значения решений не требуют такой обработки.
>>> from sklearn.linear_model import RidgeClassifierCV >>> clf = RidgeClassifierCV().fit(X, y) >>> y_score = clf.decision_function(X) >>> roc_auc_score(y, y_score, average=None) array([0.81..., 0.84... , 0.93..., 0.87..., 0.94...])
Примеры:
- См. В разделе « Рабочие характеристики приемника» (ROC) пример использования ROC для оценки качества выходных данных классификатора.
- См. В разделе « Рабочие характеристики приемника» (ROC) с перекрестной проверкой пример использования ROC для оценки качества выходных данных классификатора с помощью перекрестной проверки.
- См. В разделе Моделирование распределения видов пример использования ROC для моделирования распределения видов.
- HT2001 ( 1 , 2 ) Рука, DJ и Тилль, RJ, (2001). Простое обобщение области под кривой ROC для задач классификации нескольких классов. Машинное обучение, 45 (2), стр. 171-186.
- FC2009 Ферри, Сезар и Эрнандес-Оралло, Хосе и Модройу, Р. (2009). Экспериментальное сравнение показателей эффективности для классификации. Письма о распознавании образов. 30. 27-38.
- PD2000 Провост Ф., Домингос П. (2000). Хорошо обученные ПЭТ: Улучшение деревьев оценки вероятностей (Раздел 6.2), Рабочий документ CeDER № IS-00-04, Школа бизнеса Стерна, Нью-Йоркский университет.
- F2006 Фосетт, Т., 2006. Введение в анализ ROC. Письма о распознавании образов, 27 (8), стр. 861-874.
- F2001Фосетт, Т., 2001. Использование наборов правил для максимизации производительности ROC в интеллектуальном анализе данных, 2001. Труды Международной конференции IEEE, стр. 131-138.
3.3.2.16. Компромисс при обнаружении ошибок (DET)
Функция det_curve
вычисляет кривую компенсации ошибок обнаружения (DET) [WikipediaDET2017] . Цитата из Википедии:
«График компромисса ошибок обнаружения (DET) — это графическая диаграмма частоты ошибок для систем двоичной классификации, отображающая частоту ложных отклонений по сравнению с частотой ложных приемов. Оси x и y масштабируются нелинейно по их стандартным нормальным отклонениям (или просто с помощью логарифмического преобразования), в результате получаются более линейные кривые компромисса, чем кривые ROC, и большая часть области изображения используется для выделения важных различий в критический рабочий регион ».
Кривые DET представляют собой вариацию кривых рабочих характеристик приемника (ROC), где ложная отрицательная скорость нанесена на ось y вместо истинной положительной скорости. Кривые DET обычно строятся в масштабе нормального отклонения путем преобразования $phi^{-1}$ (с участием $phi$ — кумулятивная функция распределения). Полученные кривые производительности явно визуализируют компромисс типов ошибок для заданных алгоритмов классификации. См. [Martin1997], где приведены примеры и мотивация.
На этом рисунке сравниваются кривые ROC и DET двух примеров классификаторов для одной и той же задачи классификации:
Характеристики:
- Кривые DET образуют линейную кривую по шкале нормального отклонения, если оценки обнаружения нормально (или близки к нормальному) распределены. В [Navratil2007] было показано, что обратное не обязательно верно, и даже более общие распределения могут давать линейные кривые DET.
- При обычном преобразовании масштаба с отклонением точки распределяются таким образом, что занимает сравнительно большее пространство графика. Следовательно, кривые с аналогичными характеристиками классификации легче различить на графике DET.
- С ложноотрицательной скоростью, «обратной» истинной положительной скорости, точкой совершенства для кривых DET является начало координат (в отличие от верхнего левого угла для кривых ROC).
Приложения и ограничения:
Кривые DET интуитивно понятны для чтения и, следовательно, позволяют быстро визуально оценить работу классификатора. Кроме того, кривые DET можно использовать для анализа пороговых значений и выбора рабочей точки. Это особенно полезно, если требуется сравнение типов ошибок.
С другой стороны, кривые DET не представляют свою метрику в виде единого числа. Поэтому для автоматической оценки или сравнения с другими задачами классификации лучше подходят такие показатели, как производная площадь под кривой ROC.
Примеры:
- См. Кривую компенсации ошибок обнаружения (DET) для примера сравнения кривых рабочих характеристик приемника (ROC) и кривых компенсации ошибок обнаружения (DET).
Рекомендации:
- ВикипедияDET2017 Авторы Википедии. Компромисс ошибки обнаружения. Википедия, свободная энциклопедия. 4 сентября 2017 г., 23:33 UTC. Доступно по адресу: https://en.wikipedia.org/w/index.php?title=Detection_error_tradeoff&oldid=798982054 . По состоянию на 19 февраля 2018 г.
- Мартин 1997 А. Мартин, Дж. Доддингтон, Т. Камм, М. Ордовски и М. Пшибоцки, Кривая DET в оценке эффективности задач обнаружения , NIST 1997.
- Навратил2007 Дж. Наврактил и Д. Клусачек, « О линейных DET », 2007 г. Международная конференция IEEE по акустике, обработке речи и сигналов — ICASSP ’07, Гонолулу, Гавайи, 2007 г., стр. IV-229-IV-232.
3.3.2.17. Нулевой проигрыш
Функция zero_one_loss
вычисляет сумму или среднее значение потери 0-1 классификации ($L_{0−1}$) над $n_{samples}$. По умолчанию функция нормализуется по выборке. Чтобы получить сумму $L_{0−1}$, установите normalize
значение False
.
В классификации по zero_one_loss
нескольким меткам подмножество оценивается как единое целое, если его метки строго соответствуют прогнозам, и как ноль, если есть какие-либо ошибки. По умолчанию функция возвращает процент неправильно спрогнозированных подмножеств. Чтобы вместо этого получить количество таких подмножеств, установите normalize
значение False
Если $hat{y}_i$ прогнозируемое значение $i$-й образец и $y_i$ — соответствующее истинное значение, тогда потеря 0-1 $L_{0−1}$ определяется как:
$$L_{0-1}(y_i, hat{y}_i) = 1(hat{y}_i not= y_i)$$
где $1(x)$- индикаторная функция.
>>> from sklearn.metrics import zero_one_loss >>> y_pred = [1, 2, 3, 4] >>> y_true = [2, 2, 3, 4] >>> zero_one_loss(y_true, y_pred) 0.25 >>> zero_one_loss(y_true, y_pred, normalize=False) 1
В случае с несколькими метками с двоичными индикаторами меток, где первый набор меток [0,1] содержит ошибку:
>>> zero_one_loss(np.array([[0, 1], [1, 1]]), np.ones((2, 2))) 0.5 >>> zero_one_loss(np.array([[0, 1], [1, 1]]), np.ones((2, 2)), normalize=False) 1
Пример:
- См. В разделе « Рекурсивное исключение функции с перекрестной проверкой» пример использования нулевой потери для выполнения рекурсивного исключения функции с перекрестной проверкой.
3.3.2.18. Потеря очков по Брайеру
Функция brier_score_loss
вычисляет оценку Шиповник для бинарных классов [Brier1950] . Цитата из Википедии:
«Оценка Бриера — это правильная функция оценки, которая измеряет точность вероятностных прогнозов. Это применимо к задачам, в которых прогнозы должны назначать вероятности набору взаимоисключающих дискретных результатов ».
Эта функция возвращает среднеквадратичную ошибку фактического результата. y∈{0,1} и прогнозируемая оценка вероятности $p=Pr(y=1)$ ( pred_proba ) как выведено :
$$BS = frac{1}{n_{text{samples}}} sum_{i=0}^{n_{text{samples}} — 1}(y_i — p_i)^2$$
Потеря по шкале Бриера также составляет от 0 до 1, и чем ниже значение (средняя квадратичная разница меньше), тем точнее прогноз.
Вот небольшой пример использования этой функции:
>>> import numpy as np >>> from sklearn.metrics import brier_score_loss >>> y_true = np.array([0, 1, 1, 0]) >>> y_true_categorical = np.array(["spam", "ham", "ham", "spam"]) >>> y_prob = np.array([0.1, 0.9, 0.8, 0.4]) >>> y_pred = np.array([0, 1, 1, 0]) >>> brier_score_loss(y_true, y_prob) 0.055 >>> brier_score_loss(y_true, 1 - y_prob, pos_label=0) 0.055 >>> brier_score_loss(y_true_categorical, y_prob, pos_label="ham") 0.055 >>> brier_score_loss(y_true, y_prob > 0.5) 0.0
Балл Бриера можно использовать для оценки того, насколько хорошо откалиброван классификатор. Однако меньшая потеря по шкале Бриера не всегда означает лучшую калибровку. Это связано с тем, что по аналогии с разложением среднеквадратичной ошибки на дисперсию смещения потеря оценки по Бриеру может быть разложена как сумма потерь калибровки и потерь при уточнении [Bella2012]. Потеря калибровки определяется как среднеквадратическое отклонение от эмпирических вероятностей, полученных из наклона ROC-сегментов. Потери при переработке можно определить как ожидаемые оптимальные потери, измеренные по площади под кривой оптимальных затрат. Потери при уточнении могут изменяться независимо от потерь при калибровке, таким образом, более низкие потери по шкале Бриера не обязательно означают более качественную калибровку модели. «Только когда потеря точности остается неизменной, более низкая потеря по шкале Бриера всегда означает лучшую калибровку» [Bella2012] , [Flach2008] .
Пример:
- См. Раздел « Калибровка вероятности классификаторов», где приведен пример использования потерь по шкале Бриера для выполнения калибровки вероятности классификаторов.
Рекомендации:
- Brier1950 Дж. Брайер, Проверка прогнозов, выраженных в терминах вероятности , Ежемесячный обзор погоды 78.1 (1950)
- Bella2012 ( 1 , 2 ) Белла, Ферри, Эрнандес-Оралло и Рамирес-Кинтана «Калибровка моделей машинного обучения» в Хосров-Пур, М. «Машинное обучение: концепции, методологии, инструменты и приложения». Херши, Пенсильвания: Справочник по информационным наукам (2012).
- Flach2008 Флак, Питер и Эдсон Мацубара. «О классификации, ранжировании и оценке вероятности». Дагштульский семинар. Schloss Dagstuhl-Leibniz-Zentrum от Informatik (2008).
3.3.3. Метрики ранжирования с несколькими ярлыками
В многоэлементном обучении с каждой выборкой может быть связано любое количество меток истинности. Цель состоит в том, чтобы дать высокие оценки и более высокий рейтинг наземным лейблам.
3.3.3.1. Ошибка покрытия
Функция coverage_error
вычисляет среднее число меток , которые должны быть включены в окончательном предсказании таким образом, что все истинные метки предсказанные. Это полезно, если вы хотите знать, сколько меток с наивысшими баллами вам нужно предсказать в среднем, не пропуская ни одной истинной. Таким образом, наилучшее значение этого показателя — среднее количество истинных ярлыков.
Примечание
Оценка нашей реализации на 1 больше, чем оценка, приведенная в Tsoumakas et al., 2010. Это расширяет ее для обработки вырожденного случая, когда экземпляр имеет 0 истинных меток.
Формально, учитывая двоичную индикаторную матрицу наземных меток истинности $y in left{0, 1right}^{n_text{samples} times n_text{labels}}$ и оценка, связанная с каждой меткой $hat{f} in mathbb{R}^{n_text{samples} times n_text{labels}}$ покрытие определяется как
$$coverage(y, hat{f}) = frac{1}{n_{text{samples}}} sum_{i=0}^{n_{text{samples}} — 1} max_{j:y_{ij} = 1} text{rank}_{ij}$$
с участием $text{rank}{ij} = left|left{k: hat{f}{ik} geq hat{f}_{ij} right}right|$. Учитывая определение ранга, связи y_scores
разрываются путем присвоения максимального ранга, который был бы присвоен всем связанным значениям.
Вот небольшой пример использования этой функции:
>>> import numpy as np >>> from sklearn.metrics import coverage_error >>> y_true = np.array([[1, 0, 0], [0, 0, 1]]) >>> y_score = np.array([[0.75, 0.5, 1], [1, 0.2, 0.1]]) >>> coverage_error(y_true, y_score) 2.5
3.3.3.2. Средняя точность ранжирования метки
В label_ranking_average_precision_score
функции реализует маркировать ранжирование средней точности (LRAP). Этот показатель связан с average_precision_score
функцией, но основан на понятии ранжирования меток, а не на точности и отзыве.
Средняя точность ранжирования меток (LRAP) усредняет по выборкам ответ на следующий вопрос: для каждой основной метки истинности какая доля меток с более высоким рейтингом была истинной? Этот показатель эффективности будет выше, если вы сможете лучше ранжировать метки, связанные с каждым образцом. Полученная оценка всегда строго больше 0, а наилучшее значение равно 1. Если имеется ровно одна релевантная метка для каждой выборки, средняя точность ранжирования меток эквивалентна среднему обратному рангу .
Формально, учитывая двоичную индикаторную матрицу наземных меток истинности $y in left{0, 1right}^{n_text{samples} times n_text{labels}}$ и оценка, связанная с каждой меткой $hat{f} in mathbb{R}^{n_text{samples} times n_text{labels}}$, средняя точность определяется как
$$LRAP(y, hat{f}) = frac{1}{n_{text{samples}}} sum_{i=0}^{n_{text{samples}} — 1} frac{1}{||y_i||0} sum{j:y_{ij} = 1} frac{|mathcal{L}{ij}|}{text{rank}{ij}}$$
где $mathcal{L}{ij} = left{k: y{ik} = 1, hat{f}{ik} geq hat{f}{ij} right}$, $text{rank}{ij} = left|left{k: hat{f}{ik} geq hat{f}_{ij} right}right|$, |cdot| вычисляет мощность набора (т. е. количество элементов в наборе), и $||cdot||_0$ это $ell_0$ «Norm» (который вычисляет количество ненулевых элементов в векторе).
Вот небольшой пример использования этой функции:
>>> import numpy as np >>> from sklearn.metrics import label_ranking_average_precision_score >>> y_true = np.array([[1, 0, 0], [0, 0, 1]]) >>> y_score = np.array([[0.75, 0.5, 1], [1, 0.2, 0.1]]) >>> label_ranking_average_precision_score(y_true, y_score) 0.416...
3.3.3.3. Потеря рейтинга
Функция label_ranking_loss
вычисляет ранжирование потери , которые в среднем более образцы числа пар меток, которые неправильно упорядочены, т.е. истинные метки имеют более низкую оценку , чем ложные метки, взвешенную по обратной величине числа упорядоченных пар ложных и истинных меток. Наименьшая возможная потеря рейтинга равна нулю.
Формально, учитывая двоичную индикаторную матрицу наземных меток истинности $y in left{0, 1right}^{n_text{samples} times n_text{labels}}$ и оценка, связанная с каждой меткой $hat{f} in mathbb{R}^{n_text{samples} times n_text{labels}}$ потеря ранжирования определяется как
$$ranking_loss(y, hat{f}) = frac{1}{n_{text{samples}}} sum_{i=0}^{n_{text{samples}} — 1} frac{1}{||y_i||0(ntext{labels} — ||y_i||0)} left|left{(k, l): hat{f}{ik} leq hat{f}{il}, y{ik} = 1, y_{il} = 0 right}right|$$
где $|cdot|$ вычисляет мощность набора (т. е. количество элементов в наборе) и $||cdot||_0$ это $ell_0$ «Norm» (который вычисляет количество ненулевых элементов в векторе).
Вот небольшой пример использования этой функции:
>>> import numpy as np >>> from sklearn.metrics import label_ranking_loss >>> y_true = np.array([[1, 0, 0], [0, 0, 1]]) >>> y_score = np.array([[0.75, 0.5, 1], [1, 0.2, 0.1]]) >>> label_ranking_loss(y_true, y_score) 0.75... >>> # With the following prediction, we have perfect and minimal loss >>> y_score = np.array([[1.0, 0.1, 0.2], [0.1, 0.2, 0.9]]) >>> label_ranking_loss(y_true, y_score) 0.0
Рекомендации:
- Цумакас, Г., Катакис, И., и Влахавас, И. (2010). Майнинг данных с несколькими метками. В справочнике по интеллектуальному анализу данных и открытию знаний (стр. 667-685). Springer США.
3.3.3.4. Нормализованная дисконтированная совокупная прибыль
Дисконтированный совокупный выигрыш (DCG) и Нормализованный дисконтированный совокупный выигрыш (NDCG) — это показатели ранжирования, реализованные в dcg_score
и ndcg_score
; они сравнивают предсказанный порядок с оценками достоверности, такими как релевантность ответов на запрос.
Со страницы Википедии о дисконтированной совокупной прибыли:
«Дисконтированная совокупная прибыль (DCG) — это показатель качества ранжирования. При поиске информации он часто используется для измерения эффективности алгоритмов поисковой системы или связанных приложений. Используя шкалу градуированной релевантности документов в наборе результатов поисковой системы, DCG измеряет полезность или выгоду документа на основе его позиции в списке результатов. Прирост накапливается сверху вниз в списке результатов, причем прирост каждого результата дисконтируется на более низких уровнях »
DCG упорядочивает истинные цели (например, релевантность ответов на запросы) в предсказанном порядке, затем умножает их на логарифмическое убывание и суммирует результат. Сумма может быть усечена после первогоKрезультатов, и в этом случае мы называем это DCG @ K. NDCG или NDCG @ $K$ — это DCG, деленная на DCG, полученную с помощью точного прогноза, так что оно всегда находится между 0 и 1. Обычно NDCG предпочтительнее DCG.
По сравнению с потерей ранжирования, NDCG может принимать во внимание оценки релевантности, а не ранжирование на основе фактов. Таким образом, если основополагающая информация состоит только из упорядочивания, предпочтение следует отдавать потере ранжирования; если основополагающая информация состоит из фактических оценок полезности (например, 0 для нерелевантного, 1 для релевантного, 2 для очень актуального), можно использовать NDCG.
Для одного образца, учитывая вектор непрерывных значений истинности для каждой цели $y in R^M$, где $M$ это количество выходов, а прогноз $hat{y}$, что индуцирует функцию ранжирования $f$, оценка DCG составляет
$$sum_{r=1}^{min(K, M)}frac{y_{f(r)}}{log(1 + r)}$$
а оценка NDCG — это оценка DCG, деленная на оценку DCG, полученную для $y$.
Рекомендации:
- Запись в Википедии о дисконтированной совокупной прибыли
- Джарвелин, К., и Кекалайнен, Дж. (2002). Оценка IR методов на основе накопленного коэффициента усиления. Транзакции ACM в информационных системах (TOIS), 20 (4), 422-446.
- Ван, Ю., Ван, Л., Ли, Ю., Хе, Д., Чен, В., и Лю, Т. Ю. (2013, май). Теоретический анализ показателей рейтинга NDCG. В материалах 26-й ежегодной конференции по теории обучения (COLT 2013)
- МакШерри Ф. и Наджорк М. (2008, март). Эффективность вычислений при поиске информации измеряется эффективно при наличии связанных оценок. В Европейской конференции по поиску информации (стр. 414-421). Шпрингер, Берлин, Гейдельберг.
3.3.4. Метрики регрессии
В sklearn.metrics
модуле реализованы несколько функций потерь, оценки и полезности для измерения эффективности регрессии. Некоторые из них были расширены , чтобы обработать случай multioutput: mean_squared_error
, mean_absolute_error
, explained_variance_score
и r2_score
.
У этих функций есть multioutput
аргумент ключевого слова, который определяет способ усреднения результатов или проигрышей для каждой отдельной цели. По умолчанию используется значение 'uniform_average'
, которое определяет равномерно взвешенное среднее значение по выходным данным. Если передается ndarray
форма shape (n_outputs,)
, то ее записи интерпретируются как веса, и возвращается соответствующее средневзвешенное значение. Если multioutput
есть 'raw_values'
указан, то все неизменные индивидуальные баллы или потери будут возвращены в массиве формы (n_outputs,)
.
r2_score
и explained_variance_score
принять дополнительное значение 'variance_weighted'
для multioutput
параметра. Эта опция приводит к взвешиванию каждой индивидуальной оценки по дисперсии соответствующей целевой переменной. Этот параметр определяет количественно зафиксированную немасштабированную дисперсию на глобальном уровне. Если целевые переменные имеют разную шкалу, то этот балл придает большее значение хорошему объяснению переменных с более высокой дисперсией. multioutput='variance_weighted'
— значение по умолчанию r2_score
для обратной совместимости. В будущем это будет изменено на uniform_average
.
3.3.4.1. Оценка объясненной дисперсии
explained_variance_score
вычисляет объясненной дисперсии регрессии балл.
Если $hat{y}$ — расчетный целевой объем производства, y соответствующий (правильный) целевой результат, и $Var$- Дисперсия , квадрат стандартного отклонения, то объясненная дисперсия оценивается следующим образом:
$$explained_{}variance(y, hat{y}) = 1 — frac{Var{ y — hat{y}}}{Var{y}}$$
Наилучшая возможная оценка — 1.0, более низкие значения — хуже.
Вот небольшой пример использования explained_variance_score
функции:
>>> from sklearn.metrics import explained_variance_score >>> y_true = [3, -0.5, 2, 7] >>> y_pred = [2.5, 0.0, 2, 8] >>> explained_variance_score(y_true, y_pred) 0.957... >>> y_true = [[0.5, 1], [-1, 1], [7, -6]] >>> y_pred = [[0, 2], [-1, 2], [8, -5]] >>> explained_variance_score(y_true, y_pred, multioutput='raw_values') array([0.967..., 1. ]) >>> explained_variance_score(y_true, y_pred, multioutput=[0.3, 0.7]) 0.990...
3.3.4.2. Максимальная ошибка
Функция max_error
вычисляет максимальную остаточную ошибку , показатель , который фиксирует худшую ошибку случае между предсказанным значением и истинным значением. В идеально подобранной модели регрессии с одним выходом он max_error
будет находиться 0
в обучающем наборе, и хотя это маловероятно в реальном мире, этот показатель показывает степень ошибки, которую имела модель при подборе.
Если $hat{y}_i$ прогнозируемое значение $i$-й образец, и $y_i$ — соответствующее истинное значение, тогда максимальная ошибка определяется как
$$text{Max Error}(y, hat{y}) = max(| y_i — hat{y}_i |)$$
Вот небольшой пример использования функции max_error
:
>>> from sklearn.metrics import max_error >>> y_true = [3, 2, 7, 1] >>> y_pred = [9, 2, 7, 1] >>> max_error(y_true, y_pred) 6
max_error
не поддерживает multioutput.
3.3.4.3. Средняя абсолютная ошибка
Функция mean_absolute_error
вычисляет среднюю абсолютную погрешность , риск метрики , соответствующей ожидаемого значение абсолютной потери или ошибок $l1$-нормальная потеря.
Если $hat{y}_i$ прогнозируемое значение $i$-й образец, и $y_i$ — соответствующее истинное значение, тогда средняя абсолютная ошибка (MAE), оцененная за $n_{samples}$ определяется как
$$text{MAE}(y, hat{y}) = frac{1}{n_{text{samples}}} sum_{i=0}^{n_{text{samples}}-1} left| y_i — hat{y}_i right|.$$
Вот небольшой пример использования функции mean_absolute_error
:
>>> from sklearn.metrics import mean_absolute_error >>> y_true = [3, -0.5, 2, 7] >>> y_pred = [2.5, 0.0, 2, 8] >>> mean_absolute_error(y_true, y_pred) 0.5 >>> y_true = [[0.5, 1], [-1, 1], [7, -6]] >>> y_pred = [[0, 2], [-1, 2], [8, -5]] >>> mean_absolute_error(y_true, y_pred) 0.75 >>> mean_absolute_error(y_true, y_pred, multioutput='raw_values') array([0.5, 1. ]) >>> mean_absolute_error(y_true, y_pred, multioutput=[0.3, 0.7]) 0.85...
3.3.4.4. Среднеквадратичная ошибка
Функция mean_squared_error
вычисляет среднюю квадратическую ошибку , риск метрики , соответствующую ожидаемое значение квадрата (квадратичной) ошибки или потерю.
Если $hat{y}_i$ прогнозируемое значение $i$-й образец, и $y_i$ — соответствующее истинное значение, тогда среднеквадратичная ошибка (MSE), оцененная на $n_{samples}$ определяется как
$$text{MSE}(y, hat{y}) = frac{1}{n_text{samples}} sum_{i=0}^{n_text{samples} — 1} (y_i — hat{y}_i)^2.$$
Вот небольшой пример использования функции mean_squared_error
:
>>> from sklearn.metrics import mean_squared_error >>> y_true = [3, -0.5, 2, 7] >>> y_pred = [2.5, 0.0, 2, 8] >>> mean_squared_error(y_true, y_pred) 0.375 >>> y_true = [[0.5, 1], [-1, 1], [7, -6]] >>> y_pred = [[0, 2], [-1, 2], [8, -5]] >>> mean_squared_error(y_true, y_pred) 0.7083...
Примеры:
- См. В разделе Регрессия повышения градиента пример использования среднеквадратичной ошибки для оценки регрессии повышения градиента.
3.3.4.5. Среднеквадратичная логарифмическая ошибка
Функция mean_squared_log_error
вычисляет риск метрики , соответствующий ожидаемому значению квадрата логарифмической (квадратичной) ошибки или потери.
Если $hat{y}_i$ прогнозируемое значение $i$-й образец, и $y_i$ — соответствующее истинное значение, тогда среднеквадратичная логарифмическая ошибка (MSLE), оцененная на $n_{samples}$ определяется как
$$text{MSLE}(y, hat{y}) = frac{1}{n_text{samples}} sum_{i=0}^{n_text{samples} — 1} (log_e (1 + y_i) — log_e (1 + hat{y}_i) )^2.$$
Где $log_e (x)$ означает натуральный логарифм $x$. Эту метрику лучше всего использовать, когда цели имеют экспоненциальный рост, например, численность населения, средние продажи товара в течение нескольких лет и т. Д. Обратите внимание, что эта метрика штрафует за заниженную оценку больше, чем за завышенную оценку.
Вот небольшой пример использования функции mean_squared_log_error
:
>>> from sklearn.metrics import mean_squared_log_error >>> y_true = [3, 5, 2.5, 7] >>> y_pred = [2.5, 5, 4, 8] >>> mean_squared_log_error(y_true, y_pred) 0.039... >>> y_true = [[0.5, 1], [1, 2], [7, 6]] >>> y_pred = [[0.5, 2], [1, 2.5], [8, 8]] >>> mean_squared_log_error(y_true, y_pred) 0.044...
3.3.4.6. Средняя абсолютная ошибка в процентах
mean_absolute_percentage_error
(MAPE), также известный как среднее абсолютное отклонение в процентах (МАПД), является метрикой для оценки проблем регрессии. Идея этой метрики — быть чувствительной к относительным ошибкам. Например, он не изменяется глобальным масштабированием целевой переменной.
Если $hat{y}_i$ прогнозируемое значение $i$-й образец и $y_i$ — соответствующее истинное значение, тогда средняя абсолютная процентная ошибка (MAPE), оцененная за $n_{samples}$ определяется как
$$text{MAPE}(y, hat{y}) = frac{1}{n_{text{samples}}} sum_{i=0}^{n_{text{samples}}-1} frac{{}left| y_i — hat{y}_i right|}{max(epsilon, left| y_i right|)}$$
где $epsilon$ — произвольное маленькое, но строго положительное число, чтобы избежать неопределенных результатов, когда y равно нулю.
В функции mean_absolute_percentage_error
опоры multioutput.
Вот небольшой пример использования функции mean_absolute_percentage_error
:
>>> from sklearn.metrics import mean_absolute_percentage_error >>> y_true = [1, 10, 1e6] >>> y_pred = [0.9, 15, 1.2e6] >>> mean_absolute_percentage_error(y_true, y_pred) 0.2666...
В приведенном выше примере, если бы мы использовали mean_absolute_error
, он бы проигнорировал небольшие значения магнитуды и только отразил бы ошибку в предсказании максимального значения магнитуды. Но эта проблема решена в случае MAPE, потому что он вычисляет относительную процентную ошибку по отношению к фактическому выходу.
3.3.4.7. Средняя абсолютная ошибка
Это median_absolute_error
особенно интересно, потому что оно устойчиво к выбросам. Убыток рассчитывается путем взятия медианы всех абсолютных различий между целью и прогнозом.
Если $hat{y}_i$ прогнозируемое значение $i$-й образец и $y_i$ — соответствующее истинное значение, тогда средняя абсолютная ошибка (MedAE), оцененная на $n_{samples}$ определяется как
$$text{MedAE}(y, hat{y}) = text{median}(mid y_1 — hat{y}_1 mid, ldots, mid y_n — hat{y}_n mid).$$
median_absolute_error
Не поддерживает multioutput.
Вот небольшой пример использования функции median_absolute_error
:
>>> from sklearn.metrics import median_absolute_error >>> y_true = [3, -0.5, 2, 7] >>> y_pred = [2.5, 0.0, 2, 8] >>> median_absolute_error(y_true, y_pred) 0.5
3.3.4.8. R² балл, коэффициент детерминации
Функция r2_score
вычисляет коэффициент детерминации , как правило , обозначенный как R².
Он представляет собой долю дисперсии (y), которая была объяснена независимыми переменными в модели. Он обеспечивает показатель степени соответствия и, следовательно, меру того, насколько хорошо невидимые выборки могут быть предсказаны моделью через долю объясненной дисперсии.
Поскольку такая дисперсия зависит от набора данных, R² не может быть значимо сопоставимым для разных наборов данных. Наилучшая возможная оценка — 1,0, и она может быть отрицательной (потому что модель может быть произвольно хуже). Постоянная модель, которая всегда предсказывает ожидаемое значение y, игнорируя входные характеристики, получит оценку R² 0,0.
Если $hat{y}_i$ прогнозируемое значение $i$-й образец и $y_i$ соответствующее истинное значение для общего n образцов, расчетный R² определяется как:
$$R^2(y, hat{y}) = 1 — frac{sum_{i=1}^{n} (y_i — hat{y}i)^2}{sum{i=1}^{n} (y_i — bar{y})^2}$$
где $bar{y} = frac{1}{n} sum_{i=1}^{n} y_i$ и $sum_{i=1}^{n} (y_i — hat{y}i)^2 = sum{i=1}^{n} epsilon_i^2$.
Обратите внимание, что r2_score
вычисляется нескорректированное R² без поправки на смещение выборочной дисперсии y.
Вот небольшой пример использования функции r2_score
:
>>> from sklearn.metrics import r2_score >>> y_true = [3, -0.5, 2, 7] >>> y_pred = [2.5, 0.0, 2, 8] >>> r2_score(y_true, y_pred) 0.948... >>> y_true = [[0.5, 1], [-1, 1], [7, -6]] >>> y_pred = [[0, 2], [-1, 2], [8, -5]] >>> r2_score(y_true, y_pred, multioutput='variance_weighted') 0.938... >>> y_true = [[0.5, 1], [-1, 1], [7, -6]] >>> y_pred = [[0, 2], [-1, 2], [8, -5]] >>> r2_score(y_true, y_pred, multioutput='uniform_average') 0.936... >>> r2_score(y_true, y_pred, multioutput='raw_values') array([0.965..., 0.908...]) >>> r2_score(y_true, y_pred, multioutput=[0.3, 0.7]) 0.925...
Пример:
- См. В разделе « Лассо и эластичная сеть для разреженных сигналов» приведен пример использования показателя R² для оценки лассо и эластичной сети для разреженных сигналов.
3.3.4.9. Средние отклонения Пуассона, Гаммы и Твиди
Функция mean_tweedie_deviance
вычисляет среднюю ошибку Deviance Tweedie с power
параметром ($p$). Это показатель, который выявляет прогнозируемые ожидаемые значения целей регрессии.
Существуют следующие особые случаи:
- когда
power=0
это эквивалентноmean_squared_error
. - когда
power=1
это эквивалентноmean_poisson_deviance
. - когда
power=2
это эквивалентноmean_gamma_deviance
.
Если $hat{y}_i$ прогнозируемое значение $i$-й образец и $y_i$ — соответствующее истинное значение, тогда средняя ошибка отклонения Твиди (D) для мощности $p$, оценивается более $n_{samples}$ определяется как
Отклонение от твиди — однородная функция степени 2-power
. Таким образом, гамма-распределение power=2
означает, что одновременно масштабируется y_true
и y_pred
не влияет на отклонение. Для распределения Пуассона power=1
отклонение масштабируется линейно, а для нормального распределения ( power=0
) — квадратично. В общем, чем выше, power
тем меньше веса придается крайним отклонениям между истинными и прогнозируемыми целевыми значениями.
Например, давайте сравним два прогноза 1.0 и 100, которые оба составляют 50% от их соответствующего истинного значения.
Среднеквадратичная ошибка ( power=0
) очень чувствительна к разнице прогнозов второй точки:
>>> from sklearn.metrics import mean_tweedie_deviance >>> mean_tweedie_deviance([1.0], [1.5], power=0) 0.25 >>> mean_tweedie_deviance([100.], [150.], power=0) 2500.0
Если увеличить power
до 1:
>>> mean_tweedie_deviance([1.0], [1.5], power=1) 0.18... >>> mean_tweedie_deviance([100.], [150.], power=1) 18.9...
разница в ошибках уменьшается. Наконец, установив power=2
:
>>> mean_tweedie_deviance([1.0], [1.5], power=2) 0.14... >>> mean_tweedie_deviance([100.], [150.], power=2) 0.14...
мы получим идентичные ошибки. Таким образом, отклонение when power=2
чувствительно только к относительным ошибкам.
3.3.5. Метрики кластеризации
В модуле sklearn.metrics
реализованы несколько функций потерь, оценки и полезности. Для получения дополнительной информации см. Раздел « Оценка производительности кластеризации » для кластеризации экземпляров и « Оценка бикластеризации» для бикластеризации.
3.3.6. Фиктивные оценки
При обучении с учителем простая проверка работоспособности состоит из сравнения своей оценки с простыми практическими правилами. DummyClassifier
реализует несколько таких простых стратегий классификации:
stratified
генерирует случайные прогнозы, соблюдая распределение классов обучающего набора.most_frequent
всегда предсказывает наиболее частую метку в обучающем наборе.prior
всегда предсказывает класс, который максимизирует предыдущий класс (какmost_frequent
) иpredict_proba
возвращает предыдущий класс.uniform
генерирует предсказания равномерно в случайном порядке.constant
всегда предсказывает постоянную метку, предоставленную пользователем. Основная мотивация этого метода — оценка F1, когда положительный класс находится в меньшинстве.
Обратите внимание, что со всеми этими стратегиями predict
метод полностью игнорирует входные данные!
Для иллюстрации DummyClassifier
сначала создадим несбалансированный набор данных:
>>> from sklearn.datasets import load_iris >>> from sklearn.model_selection import train_test_split >>> X, y = load_iris(return_X_y=True) >>> y[y != 1] = -1 >>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
Далее сравним точность SVC
и most_frequent
:
>>> from sklearn.dummy import DummyClassifier >>> from sklearn.svm import SVC >>> clf = SVC(kernel='linear', C=1).fit(X_train, y_train) >>> clf.score(X_test, y_test) 0.63... >>> clf = DummyClassifier(strategy='most_frequent', random_state=0) >>> clf.fit(X_train, y_train) DummyClassifier(random_state=0, strategy='most_frequent') >>> clf.score(X_test, y_test) 0.57...
Мы видим, что SVC
это не намного лучше, чем фиктивный классификатор. Теперь давайте изменим ядро:
>>> clf = SVC(kernel='rbf', C=1).fit(X_train, y_train) >>> clf.score(X_test, y_test) 0.94...
Мы видим, что точность увеличена почти до 100%. Для лучшей оценки точности рекомендуется стратегия перекрестной проверки, если она не требует слишком больших затрат на ЦП. Для получения дополнительной информации см. Раздел « Перекрестная проверка: оценка производительности оценщика ». Более того, если вы хотите оптимизировать пространство параметров, настоятельно рекомендуется использовать соответствующую методологию; подробности см. в разделе « Настройка гиперпараметров оценщика ».
В более общем плане, когда точность классификатора слишком близка к случайной, это, вероятно, означает, что что-то пошло не так: функции бесполезны, гиперпараметр настроен неправильно, классификатор страдает от дисбаланса классов и т. Д.
DummyRegressor
также реализует четыре простых правила регрессии:
mean
всегда предсказывает среднее значение тренировочных целей.median
всегда предсказывает медианное значение тренировочных целей.quantile
всегда предсказывает предоставленный пользователем квантиль учебных целей.constant
всегда предсказывает постоянное значение, предоставляемое пользователем.
Во всех этих стратегиях predict
метод полностью игнорирует входные данные.