精华内容
下载资源
问答
  • 机器学习 二分类分类阈值 分类评估 (Classification Evaluation) The metric we use to evaluate our classifier depends on the nature of the problem we want to solve and the potential consequences of ...

    机器学习 二分类分类阈值

    分类评估 (Classification Evaluation)

    The metric we use to evaluate our classifier depends on the nature of the problem we want to solve and the potential consequences of prediction error. Let’s examine a very common example of cancer diagnosis (ie. classified as having cancer or not having cancer). We want our model to predict as many actual/true cancer diagnoses as possible but we also know that it is statistically impossible to correctly identify all true cancer diagnoses. Our model will eventually classify/predict someone to have cancer when they actually don’t have cancer (false positive) and predict someone not to have cancer when they actually have cancer (false negative). The question we have to ask ourselves is “What is worse? Predicting someone to have cancer when they actually don’t or predicting someone not to have cancer when they do?”. The answer in this example is obvious as the consequences of telling someone they don’t have cancer when they do far outweigh the former. Let’s keep this example in mind but let’s review the commonly used classification performance metrics.

    我们用来评估分类器的指标取决于我们要解决的问题的性质以及预测误差的潜在后果。 让我们检查一个非常常见的癌症诊断示例(即,分类为患有癌症或未患有癌症)。 我们希望我们的模型能够预测尽可能多的实际/真实癌症诊断,但我们也知道,从统计上讲不可能正确识别所有真实的癌症诊断。 我们的模型最终将分类/预测某人实际上没有癌症时(假阳性)患有癌症,并预测某人实际上没有癌症时(假阴性)患有癌症。 我们必须问自己的问题是:“更糟的是什么? 预测某人实际上没有癌症,还是预测某人没有癌症?”。 这个例子的答案是显而易见的,因为告诉某人没有癌症的后果要远远超过前者。 让我们牢记这个示例,但让我们回顾一下常用的分类性能指标。

    分类效果指标 (Classification Performance Metrics)

    混淆矩阵 (Confusion Matrix)

    Image for post

    A confusion matrix summarizes are the model’s predictions. It gives us the number of correct predictions (True Positives and True Negatives) and the number of incorrect predictions (False Positives and False Negatives). In our cancer example, if our model predicted someone to have cancer and the person has cancer that’s a true positive. When our model predicted someone not to have cancer and that person does not have cancer that’s a true negative. When our model predicted someone to have cancer but that person does not have cancer that’s a false positive (ie. the model falsely predicted a positive cancer diagnosis). Finally, when our model predicted someone not to have cancer but they do that’s a false negative (ie. the model falsely predicted a negative cancer diagnosis).

    混淆矩阵总结的是模型的预测。 它为我们提供了正确预测的数量(真肯定和否定)和不正确预测的数量(假肯定和否定)。 在我们的癌症示例中,如果我们的模型预测某人患有癌症并且该人患有癌症,那将是真正的阳性。 当我们的模型预测某人没有癌症,而该人没有癌症时,这是真正的负面结果。 当我们的模型预测某人患有癌症,但该人没有癌症时,即为假阳性(即该模型错误地预测为阳性癌症诊断)。 最终,当我们的模型预测某人没有癌症,但是他们这样做时,那就是假阴性(即模型错误地预测出癌症诊断为阴性)。

    Much of the remaining performance metrics are derived from the confusion matrix therefore, it is imperative you have a good understand.

    其余大部分性能指标均来自混淆矩阵,因此,您必须有一个很好的了解。

    准确性 (Accuracy)

    In simplest terms, accuracy details how often our model is correct. In other words, is the number of correct predictions (TP, TF) divided by the total number of predictions. Accuracy is typically the first metric but it can be very misleading if not considered carefully. For example, let’s consider an imbalanced dataset that was used to train our model. We have 1000 non-cancer diagnoses and 10 cancer diagnoses. A model was able to correctly predict 900 of the non-cancer diagnoses and 1 of the cancer diagnoses would have an accuracy of 0.89% ((900+1)/1010=0.89).

    用最简单的术语来说,准确性详细说明了我们的模型正确的频率。 换句话说,是正确预测(TP,TF)的数量除以预测的总数。 精度通常是第一个度量标准,但是如果不仔细考虑的话,可能会产生很大的误导。 例如,让我们考虑用于训练模型的不平衡数据集。 我们有1000个非癌症诊断和10个癌症诊断。 一个模型能够正确预测900项非癌症诊断,其中1项癌症诊断的准确性为0.89%((900 + 1)/1010=0.89)。

    (TP+TN)/(TP+FP+FN+TN)

    (TP + TN)/(TP + FP + FN + TN)

    Image for post

    精度(也称为特异性) (Precision (also called Specificity))

    Precision tells us what percentage of the predicted positive class was correct. In other words, what percentage of predicted cancer diagnoses actually had cancer. Precision cares only that our model accurately predicted the positive class. I like to think of Precision as a measure of how “picky” or how “sure” a model is that it’s correctly predicting positive cancer diagnoses. A different example might be related to a zombie apocalypse. Even allowing one infected zombie into your camp will cause everyone to get infected. A model that has high precision would make sure that those people you let into your camp are healthy. However, the model would also have a high false-negative count (ie. healthy people who are considered infected). High precision relates to low FP rates. Preferred when the consequences of false positives are high.

    精确度告诉我们预测的阳性类别中正确的百分比。 换句话说,预测癌症诊断出的癌症实际百分比是多少。 精度只关心我们的模型准确地预测了阳性类别。 我喜欢将Precision视为衡量模型正确预测癌症诊断的准确程度的一种方法。 一个不同的例子可能与僵尸启示录有关。 即使允许一个被感染的僵尸进入您的营地,也会导致每个人都被感染。 具有高精度的模型可以确保您放进营地的那些人健康。 但是,该模型还将具有较高的假阴性计数(即,被认为感染了健康的人)。 高精度与低FP率有关。 当误报的后果很高时,首选。

    TP/(TP+FP)

    TP /(TP + FP)

    Image for post

    召回(也称为灵敏度) (Recall (also called Sensitivity))

    Recall is the percentage of actual positives our model predicted to be positive. What percentage of people diagnosed with cancer (by a doctor) our model predicted to have cancer. Recall cares less about accurately predicting positive cases but making sure we have captured all the positive cases since the consequences of classifying someone not to have cancer when they do are much graver. We want our model to have high recall to classify as many actual cancer diagnoses as having cancer. Unfortunately, this means that the model will also classify a larger number of individuals who do not have cancer as having cancer (ie. false positives). High recall relates to low FN rates. Preferred when the consequences of false negatives are high.

    回忆是我们的模型预测为阳性的实际阳性百分比。 我们的模型预测(被医生)诊断出患有癌症的人数占癌症的百分比。 回想起来不太在乎准确地预测阳性病例,而是要确保我们捕获了所有阳性病例,因为将某人分类为没有患癌症的后果要严重得多。 我们希望我们的模型具有较高的召回率,以便将与癌症一样多的实际癌症诊断分类。 不幸的是,这意味着该模型还将把没有癌症的大量个体分类为患有癌症(即假阳性)。 高召回率与低FN率有关。 当假阴性的后果很高时,首选。

    TP/(TP+FN)

    TP /(TP + FN)

    Image for post

    F1分数 (F1 Score)

    It is mathematically impossible to have both high precision and high recall and this is where the F1-score comes in handy. F1-score is the harmonic average of precision and recall. If you’re trying to produce a model that balances precision and recall, F1-score is a great option. F1-score is also a good option when you have an imbalanced dataset. A good F1-score means you have low FP and low FN.

    从数学上讲,不可能兼具高精度和高召回率,这就是F1得分派上用场的地方。 F1分数是精度和召回率的谐波平均值。 如果您要生成平衡精度和召回率的模型,则F1分数是一个不错的选择。 当数据集不平衡时,F1分数也是一个不错的选择。 出色的F1得分意味着您的FP和FN较低。

    2*(Recall * Precision) / (Recall + Precision)

    2 *(调用*精度)/(调用+精度)

    ROC曲线/ AUC分数 (ROC Curve/AUC Score)

    The receiver operating characteristics curve (ROC) plots the true positive rate against the false-positive rate at any probability threshold. The threshold is the specified cut off for an observation to be classified as either 0 (no cancer) or 1 (has cancer).

    接收器工作特性曲线(ROC)在任何概率阈值下绘制真实的阳性率相对于假阳性率。 阈值是将观察值分类为0(无癌)或1(有癌)的指定截止值。

    That was a mouthful……..

    那真是令人mouth目结舌……..

    This will help us better understand what is a threshold, how we can adjust the model’s prediction by changing the threshold, and how a ROC curve is created. This example will also bring in the concepts of TP, TN, FN, and FP you learned above.

    这将帮助我们更好地理解什么是阈值,如何通过更改阈值来调整模型的预测以及如何创建ROC曲线。 此示例还将引入您在上面学到的TP,TN,FN和FP的概念。

    Follow along all this will make sense, I promise :)

    我保证,遵循所有这些都是有意义的:)

    Image for post

    Logistic regression is a binary classifier and in the example above, we are trying to correctly predict obesity based on only one feature/predictor, weight. We have a dataset of 9 observations, where 4 (green) observations are not obese and 5 (red) are obese. Based on the sigmoid function (the curvy line) produced by the log regression the first 3 green non-obese observations have a 0% chance of being predicted as obese based on their weight. The last 3 red obese observations also have a 100% probability of being predicted as obese. The second red obese observation has a ~70% chance of being predicted as obese.

    Logistic回归是一种二元分类器,在上面的示例中,我们尝试仅基于一个特征/预测因子(体重)正确预测肥胖。 我们有9个观测值的数据集,其中4个(绿色)观测值不是肥胖的,而5个(红色)观测值是肥胖的。 根据对数回归产生的S形函数(曲线),前3个绿色非肥胖观察值的体重预测为肥胖的机率为0%。 最后3次红色肥胖的观察也有100%的概率被预测为肥胖。 第二个红色肥胖观察者有约70%的机会被预测为肥胖。

    Image for post

    However, the 4th green non-obese observation has a ~85% chance of being predicted as obese based on its weight (must be very muscular), but we know that’s the wrong prediction. Furthermore, the first obese observation has a ~15% chance of being obese which once again the wrong prediction. Keep in mind the threshold is 0.5, therefore, any data point which falls at 51% probability of being obese will be classified as obese and any data point which falls below 50% will be classified as non-obese.

    但是,第四次绿色非肥胖观察有大约85%的机会根据其体重被预测为肥胖(必须非常肌肉发达),但我们知道这是错误的预测。 此外,首次肥胖的观察者有约15%的机会变得肥胖,这又是错误的预测。 请记住,该阈值为0.5,因此,任何肥胖率低于51%的数据点都将被归类为肥胖,而低于50%的数据点将被归类为非肥胖。

    Image for post

    Let’s assume the consequences of incorrectly predicting someone not to be obese when they actually are obese are significant. In other words, we want to adjust the model in a way that would capture or predict as many actual obese individuals as possible (ie. high recall). In order to accomplish this task, we need to change our threshold. With the threshold lowered to 0.2, our model will correctly predict all 5 obese observations as obese. Any data point which falls above the 0.2 threshold will be classified as obese and vice versa.

    让我们假设错误地预测某人实际上是肥胖的后果是很重要的。 换句话说,我们希望以能够捕获或预测尽可能多的实际肥胖个体(即高召回率)的方式调整模型。 为了完成此任务,我们需要更改阈值。 将阈值降低到0.2,我们的模型将正确预测所有5个肥胖观察为肥胖。 任何低于0.2阈值的数据点将被归类为肥胖,反之亦然。

    Image for post

    However, by lowering the threshold to 0.2 the fourth non-obese observation was now predicted as obese. This is the trade-off we make when adjusting the model’s threshold.

    但是,通过将阈值降低到0.2,现在可以预测第四次非肥胖观察为肥胖。 这是我们在调整模型阈值时要做出的权衡。

    Once again let’s consider our cancer example. We would be ok with a model with a 0.2 threshold as it would correctly predict all actual cancer diagnoses (ie. True Positives) and have a very high recall rate. However, the model would make a trade-off as it would ultimately predict more individuals who actually didn’t have cancer as having cancer (ie. False Positives). The consequences of the false positives are less severe than incorrectly predicting someone to not have cancer when they do.

    再次让我们考虑我们的癌症例子。 我们可以使用阈值为0.2的模型,因为它可以正确预测所有实际的癌症诊断(即“真阳性”),并且召回率非常高。 但是,该模型会做出权衡,因为它最终将预测实际上没有患癌症的更多人患有癌症(即误报)。 误报的后果要比错误地预测某人患上癌症没有那么严重。

    Image for post

    Now a model with a 0.9 threshold would do the opposite of a 0.2 threshold. It would make sure to predict all 4 non-obese individuals as non-obese, however, the first two obese individuals would ultimately be predicted as non-obese. Now that we understand the threshold and its purpose let’s return to the ROC curve.

    现在,具有0.9阈值的模型将与0.2阈值相反。 这将确保将所有4个非肥胖个体预测为非肥胖,但是,最终将把前两个肥胖个体预测为非肥胖。 现在我们了解了阈值及其目的,让我们回到ROC曲线。

    So where does the ROC Curve come into play?

    那么ROC曲线在哪里发挥作用?

    This was an easy example with only 9 data points where the threshold was easy to see and interpret. What if you have a million observations and a more complicated situation compared to our obesity or cancer example. What would be the best threshold in that situation? Do we have to make a bunch of these graphs to find a threshold that best suits our needs?”. The answer is No. A ROC curve is a great way to quickly summarize this data so you can choose your threshold.

    这是一个简单的示例,只有9个数据点,阈值易于查看和解释。 如果与我们的肥胖症或癌症示例相比,如果您有一百万次观察并且情况更加复杂,该怎么办? 在那种情况下最好的门槛是什么? 我们是否必须制作一堆这些图表以找到最适合我们需求的阈值?”。 答案是否定的。ROC曲线是快速汇总此数据的好方法,因此您可以选择阈值。

    Here is an example of a ROC curve (green line), notice the true positive rate (actually obese and predicted as obese) on the y-axis and false positive rate (non-obese but predicted as obese) on the x-axis. Finally, remember an ROC is used to summarize the TP rate and the FP rate at various thresholds. The curve wouldn’t show you the thresholds but it will show you what your false-positive rate will be at various true positive rates.

    这是一个ROC曲线(绿线)的示例,请注意y轴上的真实阳性率(实际上是肥胖且预测为肥胖)和x轴上的假阳性率(非肥胖但预测为肥胖)。 最后,请记住,ROC用于总结各种阈值下的TP速率和FP速率。 曲线不会显示您的阈值,但会显示您在各种真实阳性率下的假阳性率。

    Image for post

    真实正利率 (True Positive Rate)

    Image for post
    True Positive Rate=TP/(TP+FN) 真实正利率= TP /(TP + FN)

    误报率 (False Positive Rate)

    Image for post
    False Positive Rate=FP/(FP+TN) 误报率= FP /(FP + TN)

    Let’s quickly compare 3 separate thresholds on the ROC curve. A threshold of 0.9 has the following confusion matrix from which we can calculate a TP rate of 0.6 and a FP rate of 0.

    让我们快速比较ROC曲线上的3个独立阈值。 阈值0.9具有以下混淆矩阵,从中可以计算出TP率为0.6和FP率为0。

    Image for post

    Let’s plot the TP rate and FP rate points on our ROC curve. Let’s also plot the TP and FP rates for thresholds of 0.6 and 0.2 for demonstration.

    让我们在ROC曲线上绘制TP速率和FP速率点。 我们还绘制了阈值0.6和0.2的TP和FP速率进行演示。

    Image for post

    The green dashed line represents the ROC curve. The individual blue points are the result of 4 separate confusion matrixes where the threshold was adjusted. Now ask yourself, “If this was the cancer example and you wanted to make sure you captured/predicted all actual cancer diagnoses, which threshold would you choose?”

    绿色虚线表示ROC曲线。 各个蓝点是调整阈值的4个单独的混淆矩阵的结果。 现在问自己:“如果这是癌症的例子,并且您想确保捕获/预测了所有实际的癌症诊断,那么您会选择哪个阈值?”

    If you said 0.2 you are correct! At this threshold, your TP rate is 100% which means you’re capturing/predicting all actual cancer diagnoses. Your FP rate is ~0.33 which means your model is misclassifying some non-cancer diagnoses as having cancer but that’s alright. Scaring someone and having them spend the money to get tested carries fewer consequences than telling someone they don’t have cancer when they do.

    如果您说0.2,那是正确的! 在此阈值下,您的TP率为100%,这意味着您正在捕获/预测所有实际的癌症诊断。 您的FP率为〜0.33,这意味着您的模型将某些非癌症诊断错误地归类为患有癌症,但这没关系。 吓someone某人并让他们花钱进行测试所带来的后果要比告诉某人没有癌症时要少。

    Now the ROC simply connects each point to help with visualizing threshold move from very conservative to more lenient. Finally, the ROC curve helps with visualizing the AUC.

    现在,ROC只需将每个点连接起来,以帮助可视化阈值从非常保守到更宽松的变化。 最后,ROC曲线有助于可视化AUC。

    So what is the Area Under the Curve (AUC)?

    那么,曲线下面积(AUC)是多少?

    You will often see a ROC graph with many ROC curves and each curve is a different classifier (ie. log regression, SVC, decision tree, etc.). AUC is a great simple metric that provides a decimal number from 0 to 1 where the higher the number the better is the classifier. AUC measures the quality of the model’s predictions across all possible thresholds. In general, AUC represents the probability that a true positive and true negative data points will be classified correctly.

    您经常会看到具有许多ROC曲线的ROC图,并且每个曲线都是不同的分类器(即,对数回归,SVC,决策树等)。 AUC是一种非常简单的度量标准,它提供从0到1的十进制数字,其中数字越大,分类器越好。 AUC在所有可能的阈值范围内衡量模型预测的质量。 通常,AUC代表正确正负数据点正确分类的概率。

    Image for post

    我们如何调整阈值? (How Can we Adjust the Threshold?)

    # Adjusting the threshold down from 0.5 to 0.25
    # Any data point with a probability of 0.25 or higher will be
    # classified as 1. clf = LogisticRegression()
    clf.fit(X_train, y_train)
    THRESHOLD = 0.25
    y_pred = np.where(clf.predict_proba(X_test)[:,1] >= THRESHOLD, 1, 0)
    y_pred_proba_new_threshold = (clf.predict_proba(X_test)[:,1] >= THRESHOLD).astype(int)

    Logistic regression does not have a built-in method to adjust the threshold. That said since we know by default the threshold is set at 0.50 we can use the above code to say anything above 0.25 will be classified as 1.

    Logistic回归没有内置的方法来调整阈值。 就是说,由于我们默认情况下知道阈值设置为0.50,因此我们可以使用上述代码将0.25以上的值归为1。

    结论 (Conclusion)

    I hope I was able to help clear up some confusion when it comes to classification metrics. I found that keeping all the terms (ie. recall, precision, TP, TN, etc.) clear in your mind is easier when they are memorized using one particular example (ie. cancer diagnoses).

    我希望我能够帮助消除有关分类指标的困惑。 我发现,使用一个特定的例子(例如癌症诊断)记住这些术语时,将所有术语(例如,回忆,精确度,TP,TN等)清晰地记住会更容易。

    Feel free to offer your feedback and thanks for reading.

    随时提供您的反馈,并感谢您的阅读。

    翻译自: https://towardsdatascience.com/classification-metrics-thresholds-explained-caff18ad2747

    机器学习 二分类分类阈值

    展开全文
  • 如何确定分类阈值?

    2021-09-03 10:38:06
    当时使用sigmoid时,如果确定分类阈值呢? 一般我们喜欢使用0.5这个默认的值。但是如果有更好的阈值使得结果更好,那该如何处理呢。。。 可以使用ROC,如下例子所示,排好序的阈值以对应的10个阈值进行划分,...

    当时使用sigmoid时,如果确定分类的阈值呢?

    一般我们喜欢使用0.5这个默认的值。但是如果有更好的阈值使得结果更好,那该如何处理呢。。。

    可以使用ROC,如下例子所示,排好序的阈值以对应的10个阈值进行划分,得到对应的统计值。

     

    根据你能接受的假阳性率FPR和召回率TPR来确定对应的点位,再根据点位来查找该点位对应的阈值。 

    展开全文
  • 平均欧氏距离是系统聚类法中使用最普遍的一个距离...为了能使分类者更科学地确定分类阈值,对随机平均欧氏距离的统计性质进行了研究,确定了它的概率分布,给出了它的数字特征,为分类阈值确定提供了理论依据和方法。
  • 前言 最近分类问题搞的有点多,但对一些指标依旧有模糊的地方(虽然做了笔记), 事实证明, 笔记笔记,没有进到脑子里呀。 因此,我想着肯定有跟我一样半生半熟的小伙伴在分类指标这块依旧有迷惑,毕竟常用的几个...

    c06ee2e404163ce3f4101e967790bd31.png

    前言

    最近分类问题搞的有点多,但对一些指标依旧有模糊的地方(虽然做了笔记), 事实证明, 笔记笔记,没有进到脑子里呀。 因此,我想着肯定有跟我一样半生半熟的小伙伴在分类指标这块依旧有迷惑,毕竟常用的几个大多数情况下就够用了, 这篇文章就主要讲一讲分类的评估指标。

    几个定义:混淆矩阵

    • TP: True Positives, 表示实际为正例且被分类器判定为正例的样本数
    • FP: False Positives, 表示实际为负例且被分类器判定为正例的样本数
    • FN: False Negatives, 表示实际为正例但被分类器判定为负例的样本数
    • TN: True Negatives, 表示实际为负例且被分类器判定为负例的样本数

    一个小技巧, 第一个字母表示划分正确与否, T 表示判定正确(判定正确), F表示判定错误(False); 第二个字母表示分类器判定结果, P表示判定为正例, N表示判定为负例。

    几个常规的指标

    Accuracy:

    Accuracy 能够清晰的判断我们模型的表现,但有一个严重的缺陷: 在正负样本不均衡的情况下,占比大的类别往往会成为影响 Accuracy 的最主要因素,此时的 Accuracy 并不能很好的反映模型的整体情况。

    Precision:

    Recall:

    Precision 与 Recall 的权衡

    精确率高,意味着分类器要尽量在 “更有把握” 的情况下才将样本预测为正样本, 这意味着精确率能够很好的体现模型对于负样本的区分能力,精确率越高,则模型对负样本区分能力越强。

    召回率高,意味着分类器尽可能将有可能为正样本的样本预测为正样本,这意味着召回率能够很好的体现模型对于正样本的区分能力,召回率越高,则模型对正样本的区分能力越强。

    从上面的分析可以看出,精确率与召回率是此消彼长的关系, 如果分类器只把可能性大的样本预测为正样本,那么会漏掉很多可能性相对不大但依旧满足的正样本,从而导致召回率降低。

    F1-Score

    F1-Score 能够很好的评估模型,其主要用于二分类问题, 计算如下:

    而 更一般的有

    其实,

    本质上是Recall, Precision 权重比, 当
    时,
    表明 Recall 的权重要比Precision高,其影响更大, ; 当
    时,
    表明 Recall 的权重要比Precision低, 对应的影响更小;

    前面提到 F1 针对的是二分类,而更一般的是,对于多分类问题来说, F1 的计算有多种方式,可以参见 Scikit-Learn 中的评价指标,我们来分别介绍一下。

    对于一个多分类问题,假设,对于分类

    而言有:
    , 那么各种 F1 的值计算如下。

    Macro F1: 宏平均

    Macro 算法在计算 Precision 与 Recall 时是先分别计算每个类别的Precision 与 Recall, 然后再进行平均。

    那么我们就得到最终的 Macro F1 的计算为:

    我们看到, Macro F1 本质上是所有类别的统计指标的算术平均值来求得的,这样单纯的平均忽略了样本之间分布可能存在极大不平衡的情况

    Micro F1 :微平均

    Micro 算法在计算 Precision 与 Recall 时会将所有类直接放到一起来计算。

    Macro vs Micro [1]

    Macro 相对 Micro 而言,小类别起到的作用更大,举个例子而言,对于一个四分类问题有:

    • class A: 1 TP, 1 FP
    • class B: 10 TP , 90 FP
    • class C: 1 TP, 1 FP
    • class D: 1 TP, 1 FP

    那么对于 Precision 的计算有:

    我们看到,对于 Macro 来说, 小类别相当程度上拉高了 Precision 的值,而实际上, 并没有那么多样本被正确分类,考虑到实际的环境中,真实样本分布和训练样本分布相同的情况下,这种指标明显是有问题的, 小类别起到的作用太大,以至于大样本的分类情况不佳。 而对于 Micro 来说,其考虑到了这种样本不均衡的问题, 因此在这种情况下相对较佳。

    总的来说, 如果你的类别比较均衡,则随便; 如果你认为大样本的类别应该占据更重要的位置, 使用Micro; 如果你认为小样本也应该占据重要的位置,则使用 Macro; 如果 Micro << Macro , 则意味着在大样本类别中出现了严重的分类错误; 如果 Macro << Micro , 则意味着小样本类别中出现了严重的分类错误。

    为了解决 Macro 无法衡量样本均衡问题,一个很好的方法是求加权的 Macro, 因此 Weighed F1 出现了。

    Weight F1

    Weighted 算法算术 Macro 算法的改良版,是为了解决Macro中没有考虑样本不均衡的原因, 在计算 Precision与Recall 时候,各个类别的 Precision 与 Recall要乘以该类在总样本中的占比来求和:

    那么我们就得到最终的 Macro F1 的计算为:

    MCC : 马修斯相关系数

    MCC 主要用于衡量二分类问题,其综合考虑了 TP TN, FP , FN, 是一个比较均衡的指标, 对于样本不均衡情况下也可以使用。MCC的取值范围在 [-1, 1], 取值为1 表示预测与实际完全一致, 取值为0表示预测的结果还不如随机预测的结果, -1 表示预测结果与实际的结果完全不一致。因此我们看到, MCC 本质上描述了预测结果与实际结果之间的相关系数。

    值得注意的是,对于两个分类器而言,可能其中一个分类器的 F1 值较高,而其 MCC 值较低, 这表示单一的指标是无法衡量分类器的所有优点与缺点的。

    ROC 曲线

    在分类任务中,测试部分通常是获得一个概率表示当前样本属于正例的概率, 我们往往会采取一个阈值,大于该阈值的为正例, 小于该阈值的为负例。 如果我们减小这个阈值, 那么会有更多的样本被识别为正类,这会提高正类的识别率,但同时会降低负类的识别率。

    为了形象的描述上述的这种变化, 引入ROC曲线来评价一个分类器的好坏。 ROC 曲线主要关注两个指标:

    其中, FPR 代表将负例错分为正例的概率, TPR 表示能将正例分对的概率, 如果我们增大阈值, 则 TPR 会增加,而对应的FPR也会增大, 而绘制ROC曲线能够帮助我们找到二者的均衡点,下图很清晰的描述了ROC 曲线关系:

    a6c2bfd9f74ede665cfa7e5bac1eb803.png

    在 ROC 曲线中, 有:

    • FPR = 0, TPR = 0: 表示将每一个实例都预测为负类
    • FPR = 1, TPR = 1:表示将每一个实例都预测为正例
    • FPR = 0, TPR = 1:为最优分类点
    • 分类器对应的ROC曲线应该尽可能靠近坐标轴的左上角, 而对角线的位置意味着分类器的效果和随机猜测一样的差。

    ROC曲线在测试集中的样本分布发生变化的时候能够保持不变。但遗憾的是,很多时候, ROC 曲线并不能清晰的说明哪个分类器的效果更好, 而 AUC 恰恰能够对分类器做出直观的评价。

    AUC:Area under Curve

    AUC 为ROC 曲线下的面积, 这个面积的数值介于0到1之间, 能够直观的评价出分类器的好坏, AUC的值越大, 分类器效果越好。

    • AUC = 1: 完美分类器, 采用该模型,不管设定什么阈值都能得出完美预测(绝大多数时候不存在)
    • 0.5 < AUC < 1: 优于随机猜测,分类器好好设定阈值的话,有预测价值
    • AUC = 0.5: 跟随机猜测一样,模型没有预测价值
    • AUC < 0.5 :比随机猜测还差,但是如果反着预测,就优于随机猜测。

    值得一提的是,两个模型的AUC 相等并不代表模型的效果相同, 比如这样:

    e0513ed1fa3f8dfe3c521d540d1aef60.png

    实际场景中, AUC 的确是非常常用的一种指标。

    需要注意的是, 在多分类场景下的 ROC 曲线以及 AUC 值, 此时 ROC 曲线应该有多个, 而AUC 的计算如下:

    P-R 曲线

    P-R 曲线其横坐标为 Recall, 纵坐标为 Precision, 其能帮助我们很好的做出权衡

    866d94df47812264067976e6e3e5f40a.png

    在上图中,我们发现, A 完全包住了C, 着意味着A 的Precision 与 Recall 都高于C, A优于C。 而对比 A,B, 二者存在交叉的情况,此时采用曲线下面积大小衡量性能,面积越大,性能越好,此处的A优于B。

    最后

    对于最终分类指标的选择, 在不同数据集,不同场景,不同时间下都会有不同的选择,但往往最好选出一个指标来做优化,对于二分类问题,我目前用 AUC 比较多一些, 多分类我还是看 F1 值。

    Reference

    [1] Should I make decisions based on micro-averaged or macro-averaged evaluation measures?

    [2] Micro Average vs Macro average Performance in a Multiclass classification setting>

    [3 机器学习性能评估指标

    展开全文
  • ## 机器学习-分类和聚类、分类和回归、逻辑回归和KNN分类和聚类的概念:**1、分类:使用已知的数据集(训练集)得到相应的模型,通过这个模型可以划分未知数据。分类涉及到的数据集通常是带有标签的数据集,分类是...

    bf75f4f93c31c505db8a95dd1f4e46c4.png

    ## 机器学习-分类和聚类、分类和回归、逻辑回归和KNN

    分类和聚类的概念:

    **

    1、分类:使用已知的数据集(训练集)得到相应的模型,通过这个模型可以划分未知数据。分类涉及到的数据集通常是带有标签的数据集,分类是有监督学习。一般分为两步,训练数据得到模型,通过模型划分未知数据。 2.聚类:直接使用聚类算法将未知数据分为两类或者多类。聚类算法可以分析数据之间的联系,一般分为一步,是无监督学习。 常见的分类算法:KNN、逻辑回归、支持向量机、朴素贝叶斯、决策树、随机森林、 常见的聚类算法:K均值(K-means)、FCM(模糊C均值聚类)、均值漂移聚类、DBSCAN、SPEAK、Mediods、Canopy

    *

    逻辑回归:

    * 逻辑回归是一种分类算法,而不是回归算法。分类和回归的区别如下:分类的输出数据类型为离散型数据,回归输出为连续性数据;分类的目的是寻找决策边界,回归的目的是找到最优拟合;分类的评价方法一般为精度、混淆矩阵,回归的评价方法为sum of square errors(SSE)或拟合优度;分类是一种定性预测,回归是一种定量预测。 判断分类和回归的主要方法是观察输出类型为离散型还是连续数据,离散型是分类问题,连续数据是回归问题。 现在回到逻辑回归,逻辑回归首先拟合数据,最开始的想法是对数据进行线性拟合,但是线性拟合很容易受到离群值(异常值)的影响,因此选择sigmod函数作为逻辑回归的回归函数,sigmod函数的表达式和图像如下:

    0cbbffccabe329187a0393b7656f4781.png

    4b5d782ca9f69b320e720e8954828714.png

    sigmod函数可以有效解决离群值的干扰问题。因为sigmod函数具有很强的鲁棒性,也就是Robust。接着要选定阈值,阈值要具体情况具体分析,不是一上来就是将阈值规定为0.5,有时候阈值规定0.5确实不错,但是在很多情况下,阈值应该偏小或者偏大,比如癌症的预测问题,为了尽量避免小概率事件的发生,尽量选择较小的阈值。 我们在上面已经知道用sigmod函数作为回归函数,接着就是要寻找一组W,使得函数正确的概率最大,也叫做最大似然估计。求解函数最优的函数我们通过数学推导得到一个叫做交叉熵损失函数,这个函数也就是逻辑回归的损失函数。求解损失函数的方法还是使用梯度下降法。

    总结:逻辑回归----sigmod函数----选定阈值----最大似然估计----交叉熵损失函数----梯度下降法

    KNN(K最近邻分类算法)

    KNN算法的核心思想:确定一个临近度的度量,相似性越高,相异性越低的数据样本,可以认为是同一类数据类别。

    KNN的算法步骤:

    • 数据清洗:数据规范化;例如身高不超过180cm
    • 确定临近值的度量,计算临近度(数据中心的点与其他点之间的距离)
    • 按照临近度递增次序排序
    • 选取与当前点距离最小的k个点
    • 返回前k个点所在类别的出现频率;
    • 返回前k个点出现频率最高的类别作为当前点的预测分类
    展开全文
  • 在人工智能领域,分类任务占据了很大的比例,例如物体识别(计算机视觉)、信用卡欺诈(数值型预测)、情感分析(自然语言处理)等等。针对众多的分类需求,模型的评价标准只是简单的准确率(Accuracy)吗? AUC和...
  • 用DecisionTree决策树来求取分类阈值

    千次阅读 2018-03-05 17:12:48
    在二分类任务中,我们经常需要根据概率值来确定类别。通常的方法是设定0.5的中间阈值,但是在一些不平衡的任务中,我们并不知道阈值应该设定为多少,这时可以简单的利用决策树的方法,可视化的来求得最优阈值。当然...
  • 本文会先介绍二分类模型的主要评价指标:AUCKSLog-lossAccuracy/Recall/Precision/F1-score紧接着会先介绍多分类模型的主要评价指标:AccuracyF1-macroF1-score-weighted【二分类模型】1.AUC A...
  • 决策树模型理论介绍决策树算法是一种归纳分类算法,它通过对训练集的学习,挖掘出有用的规则,用于对新集进行预测非参数学习算法。对每个输入使用由该区域的训练数据计算得到的对应的局部模型决策树归纳的基本算法是...
  • 导读通常我们在解决某个问题的时候,会设计多种分类算法在训练的时候我们还会调节各种超参以及使用各种trick以获取最优的分类模型,那这时候我们应该如何来衡量这个最优呢?分类算法的评估指标有很多种,选择使用哪...
  • 随着对地观测技术的发展,遥感数据空间分辨率、光谱分辨率、时间分辨率越来越高,数据的丰富程度和复杂性都显著...遥感技术的飞速发展, 使得遥感影像成为地表监测的主要数据源,为地表精细分类提供了前所未有的机遇...
  • 逻辑回归分类算法的前世今生前沿首先说明此次的分享是笔者学习逻辑回归的各种博客、书籍、资料后整理的个人认为最全最有价值的内容,其中会涉及到很多你可以在其他资料中见到的内容,涉及到的内容笔者一定也会指出...
  • 加入极市专业CV交流群,与6000+来自...关注极市平台公众号,回复加群,立刻申请入群~1分类评测指标图像分类是计算机视觉中最基础的一个任务,也是几乎所有的基准模型进行比较的任务,从最开始比较简单的10分类的灰...
  • 将设备运行状态划分为三种状态,比以往的两态模型对于设备的故障分类具有更高的准确性。在设备运行状态三态划分的基础上,提出了新的三态模型,将设备运行状态定义为故障态、准故障态、健康态三种状态,其中准故障态...
  • 分类--阈值

    千次阅读 2019-09-28 02:29:01
    我们将在后面的部分中详细介绍可用于对分类模型的预测进行评估的指标,以及更改分类阈值对这些预测的影响。 注意: “调整”逻辑回归的阈值不同于调整学习速率等超参数。在选择阈值时,需要评估您将因犯错而...
  • 有时候单纯地以分数0.5位阈值划分样本为预测为1或者预测为0,效果有时候并不好,此时如何确定很好的阈值分数呢?答案是可以利用roc曲线来确定比较好的划分阈值。 ROC曲线介绍 二分类过程,设定阈值,大于该分数为1,...
  • 行业分类-物理装置-一种总氮水生态学基准阈值确定方法.zip
  • 浅谈ROC与PR曲线-分类阈值确定

    万次阅读 2017-11-02 09:30:08
    后来来了ROC受试者工作特征,发现可以测试多组数据,然后得到每个阈值下的真正例(True positive)和假正例(False positive),发现可以用这个曲线进行统计从而得到每个阈值的情况下分类器的性能,并且进行拟合,...
  • 对于当前第m棵子树而言,我们需要遍历它的可行的切分点以及阈值,找到最优的预测值c对应的参数,使得尽可能逼近残差,我们来写出这段公式: 这里的 指的是第m棵子树所有的划分方法中叶子节点预测值的集合,也就是 ...
  • 分类-物理装置-一种融合多元信息的故障报警阈值确定方法.zip
  • 在opencv中,强分类阈值确定实在函数icvCreateCARTStageClassifier中,具体强分类器的阈值的求解方式和虚警率的计算如下 CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data, // ...
  • 源代码在opencv库里面的cvboost.cpp文件里面,该宏的总体思路是通过定义带参数的宏,把参数传递给宏内部的函数,然后进行一系列的计算,并最终根据一定的算法找到合适的阈值。具体解析如下: #define ICV_DEF_FIND_...
  • 文本分类阈值策略

    千次阅读 2013-03-07 16:25:11
    参数t即可以由用户指定,也可以通过预定初始值,然后给出测试文本,使用分类器进行分类,再根据分类的准确程度调整初始值。 优点:考虑了分类器的全局性能 比例截尾法, proportion-based threshold PCut:...
  • 通过对PR曲线的绘制,了解阈值设定对PR值影响的状况,这里假定P,R都是重要的,采用角平分线和该曲线的交点,交点处为PR值...下图为公交分类过程中,阈值不同,描出的不同点,通过计算夹角余玄设定为0。2为最理想。 
  • 本文主要针对中文网页,分析比较了文本分类中的关于类别阈值的几种策略,分别是: 位置截尾法(RCut)、比例截尾法(PCut)、最优截尾法(SCut)以及改进型截尾法(RTCut),主要实验结果有: RTCut的效果最佳;...
  • 为了使分布式水文模型计算单元更好地反映垫面特性,基于地形带的分类,运用ArcGIS软件的划分单元面积功能,采用改进的适度指数法推求长江上游研究区流域的最佳阈值,能够最终确定不同地形带流域河网密度与最佳阈值的...
  • 阈值分割

    2017-03-31 17:00:56
    应用背景:在灰度图像中,我们希望将有明显区别的部分分割开来,这里的明显区别在图像上表现为灰度值的相差程度...1、确定一个合适的阈值; 2、将图像像素灰度值与阈值比较; 3、将比较过的像素分类,得到分割图像。
  • 什么是决策阈值? sklearn没有让我们直接设置决策阈值,但它让我们可以访问用于进行预测的决策得分(决策函数o/p)。我们可以从决策函数输出中选择最佳得分,并将其设置为决策阈值,并将小于该决策阈值的所有决策得分...
  • 27-决策树自动阈值分类

    千次阅读 2018-03-01 11:27:50
    4.Classification > Decision Tree > RuleGen---classfiter---tm_korea_stacked.dat---ok---选择输出txt路径----确定(有bug自动关闭,重启)---Classification > Decision Tree ---edit existing Decision Tree----...
  • Python计算分类评估KS值、最佳阈值及绘制KS曲线 目录 计算分类评估KS值、最佳阈值及绘制KS曲线 KS曲线 KS曲线绘制 KS曲线 KS值---学习器将正例和反例分开的能力,确定最好的“截断点” 蓝色线:TPR;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,911
精华内容 17,564
关键字:

如何确定分类阈值