From 31c1f0c58eca4819576b03151c03851b1206bbe9 Mon Sep 17 00:00:00 2001 From: jackfrued Date: Thu, 13 Feb 2025 15:53:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BA=86=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84=E7=AC=94=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Day81-90/82.k最近邻算法.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Day81-90/82.k最近邻算法.md b/Day81-90/82.k最近邻算法.md index ceb73b5..160809f 100644 --- a/Day81-90/82.k最近邻算法.md +++ b/Day81-90/82.k最近邻算法.md @@ -5,23 +5,31 @@ k 最近邻算法(kNN)是一种用于分类和回归的非参数统计方法 ### 距离的度量 我们可以用距离(distance)来衡量特征空间中两个实例之间的相似度,常用的距离度量包括闵氏距离、马氏距离、余弦距离、编辑距离等。闵氏距离全称闵可夫斯基距离(Minkowski Distance),对于两个 $\small{n}$ 维向量 $\small{\mathbf{x}=(x_{1}, x_{2}, \cdots, x_{n})}$ 和 $\small{\mathbf{y}=(y_{1}, y_{2}, \cdots, y_{n})}$ ,它们之间的距离可以定义为: + $$ d(\mathbf{x}, \mathbf{y}) = (\sum_{i=1}^{n}{|x_{i} - y_{i}|}^{p})^{\frac{1}{p}} $$ + 其中, $\small{p \ge 1}$ ,虽然 $\small{p \lt 1}$ 可以计算,但不再严格满足距离的定义,通常不被视为真正的距离。 当 $\small{p = 1}$ 时,闵氏距离退化为**曼哈顿距离**,即: + $$ d(\bold{x}, \bold{y}) = \sum_{i=1}^{n}|x_{i} - y_{i}| $$ + 当 $\small{p = 2}$ 时,闵氏距离退化为**欧几里得距离**,即: + $$ d(\bold{x}, \bold{y}) = \sqrt{\sum_{i=1}^{n}(x_{i} - y_{i})^{2}} $$ + 当 $\small{p \to \infty}$ 时,闵氏距离成为**切比雪夫距离**,即: + $$ d(\bold{x}, \bold{y}) = \underset{i}{max}(|x_{i} - y_{i}|) $$ + 其他的距离度量方式我们等用到的时候再为大家介绍。在使用k 最近邻算法做分类时,我们的数据集通常都是数值型数据,此时直接使用欧几里得距离是一个不错的选择。 @@ -233,33 +241,43 @@ model.score(X_test, y_test) | **实际为未患病** | 30(FP) | 870(TN) | 1. **准确率**(Accuracy)。 + $$ \text{准确率} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{FP} + \text{FN} + \text{TN}} $$ + 上面的例子,模型预测的准确率为: $\small{\frac{80 + 870}{80 + 30 + 20 + 870} = \frac{950}{1000} = 95\%}$ 。 2. **精确率**(Precesion)。精确率用于衡量在所有被预测为正类的样本中,实际上属于正类的比例,通常也被称为查准率。 + $$ 精确率 = \frac{\text{TP}}{\text{TP} + \text{FP}} $$ + 上面的例子,模型预测的精确率为: $\small{\frac{80}{80 + 30} = \frac{80}{110} = 72.73\%}$ 。 3. **召回率**(Recall)。召回率用于衡量在所有实际为正类的样本中,被模型正确预测为正类的比例,通常也被称为查全率或真正例率(True Positive Rate)。 + $$ 召回率 = \frac{\text{TP}}{\text{TP} + \text{FN}} $$ + 上面的例子,模型预测的召回率为: $\small{\frac{80}{80 + 20} = \frac{80}{100} = 80\%}$ 。 4. **F1 分数**(F1 Score)。F1 分数是精确率和召回率的调和平均数,它在精确率和召回率之间寻求一个平衡,尤其适用于在两者之间有权衡的情况。 + $$ \text{F1分数} = \frac{2}{\frac{1}{\text{精确率}} + \frac{1}{\text{召回率}}} = 2 \times \frac{\text{精确率} \times \text{召回率}}{\text{精确率} + \text{召回率}} $$ + 上面的例子,模型预测的F1 分数为: $\small{2 \times \frac{0.7273 * 0.8}{0.7273 + 0.8} = 76.19\%}$ 。 5. **特异度**(Specificity)和**假正例率**(False Positive Rate)。特异度用于衡量的是在所有实际为负类的样本中,被模型正确预测为负类的比例,类似于召回率,只不过针对的是负类样本。 + $$ \text{特异度} = \frac{\text{TN}}{\text{TN} + \text{FP}} $$ + $$ \text{假正例率} = 1 - \text{特异度} $$