机械学习基础-5.分类-数据建模与机械智能课程自留

data modeling and machine intelligence - CLASSIFICATION

  • 为什么我们不将回归技术用于分类?
  • 贝叶斯分类器(The Bayes Classifier)
  • 逻辑回归(Logistic Regression)
    • 对逻辑回归的更多直观理解
    • 逻辑 /sigmoid 函数的导数
    • 我们如何确定参数
    • 更通俗易懂的理解(可以跳过)
  • 逻辑回归中的似然函数
    • 最大化似然函数
    • 如何寻找对数似然函数的驻点
  • 超越方程
  • 分类问题中是否存在更简单的分类方法?
      • 逻辑函数的局限性
      • 更简单的方法:k邻近
    • k - 近邻分类器(K - Nearest Neighborhood Classifier)的原理和公式推导
      • 数据集设定
      • 近邻点索引集合
      • 条件概率近似公式
      • 分类器模型
      • 总结
    • K邻近例子

本节目标:

  • 了解什么是二元分类
  • 了解如何使用逻辑函数进行分类
  • 要能够将 k 近邻算法应用于分类问题

回顾
监督学习(Supervised Learning)的流程:
在这里插入图片描述
监督学习的两个子类别:回归(Regression)和分类(Classification)。

回归问题中,标记数据 y i y_i yi 取连续值, y i ∈ R y_i \in \mathbb{R} yiR R \mathbb{R} R 表示实数集);而分类问题中,标记数据 y i y_i yi 取离散值, y i ∈ { 1 , 2 , … , l } y_i \in \{1,2,\ldots,l\} yi{1,2,,l} ,即标签属于一个有限的离散集合。

分类问题的示例:
在这里插入图片描述
当只有两种类型的标签时(最后一列是否有心脏病),我们将其称为二元分类问题。

标签可以是 {-1, 1} 、{0, 1} 、{1, 2} 、{A, B} 等等。唯一重要的是标签仅取两个离散值,给这些标签取什么名字并不重要。

为什么我们不将回归技术用于分类?

例子如下
在这里插入图片描述
假设我们给定一个数据集,目标是训练一个模型来预测旅行者的交通方式。
数据集包含四列:行程时间(Journey time)、费用(Cost)、换乘次数(Changes)和使用的交通工具(Transport used),并给出了四组数据示例。

为解决问题,给每种交通工具分配一个数字标签:飞机(Aeroplane)为 y = − 1 y = -1 y=1 ,火车(Train)为 y = 0 y = 0 y=0 ,公共汽车(Bus)为 y = + 1 y = +1 y=+1 。可以使用类似回归的技术找到一个最适合数据的模型 y = f ( x ) y = f(x) y=f(x)

到此为止,问题就出现了,如果真按照上面那样找这个模型,那么问题如下:

  • 问题 1:给标签任意赋值可能会在数据集上强加一些实际上不存在的顺序或结构。例如,当前标签暗示飞机和公共汽车之间的 “距离” 是 ∣ − 1 + 1 ∣ = 2 |-1 + 1| = 2 1+1∣=2 ,是火车和公共汽车之间距离的两倍,但原始数据并未提及飞机、公共汽车和火车之间的相似性。
  • 问题 2:训练的模型 y = f ( x ) y = f(x) y=f(x) 不太可能只输出离散值(例如,多项式映射到 ( − ∞ , ∞ ) (-\infty, \infty) (,) ,而不是 { − 1 , 0 , 1 } \{-1, 0, 1\} {1,0,1} )。如何将预测值 f ( x 0 ) = 0.5 f(x_0) = 0.5 f(x0)=0.5 判定为火车还是公共汽车是一个任意决定,对于 f ( x 0 ) = 100 f(x_0) = 100 f(x0)=100 该给出什么预测也不明确。
  • 问题 3:真实模型 y = f t r u e ( x ) y = f_{true}(x) y=ftrue(x) 不是连续的(除非它是常数),因为它取离散值。因此,从理论上讲,不能证明这个函数可以被通用逼近器(斯通 - 魏尔斯特拉斯定理)逼近。

贝叶斯分类器(The Bayes Classifier)

贝叶斯推断(Bayesian inference),它是一种数据建模方法,基于数据估计事件发生的概率。与构建模型不同,贝叶斯推断构建的是概率分布。

与回归方法的对比
在处理标签为连续值的回归问题时,我们试图找到一个函数或模型 f ( x i ) ≈ y i f(x_i) \approx y_i f(xi)yi 。但在贝叶斯推断里,我们试图找到一个函数,该函数近似表示 f l ( x ) ≈ P ( y = l ∣ x ) f_l(x) \approx \mathbb{P}(y = l|x) fl(x)P(y=lx) 。这里, f l ( x ) f_l(x) fl(x) 是一个取值范围在 [ 0 , 1 ] [0, 1] [0,1] 之间的函数,用于估计数据样本 x x x 被标记为 y = l y = l y=l 的概率。

当然,在实际应用贝叶斯分类器的过程中, f l ( x ) ∈ [ 0 , 1 ] f_l(x) \in [0, 1] fl(x)[0,1] 这个条件很难被严格满足。(因为现实有噪声、误差,并且特征之前可能不是完全独立等。)

逻辑回归(Logistic Regression)

假设给定数据 D = { ( x i , y i ) } i = 1 N D = \{(x_i, y_i)\}_{i = 1}^N D={(xi,yi)}i=1N ,其中 y i ∈ { − 1 , 1 } y_i \in \{-1, 1\} yi{1,1} ,属于二分类(binary classification)问题。
目标函数
我们试图找到一个函数,近似表示 f ( x ) ≈ P ( y = 1 ∣ x ) f(x) \approx \mathbb{P}(y = 1|x) f(x)P(y=1∣x) f ( x ) f(x) f(x) 的取值范围在 [ 0 , 1 ] [0, 1] [0,1] ,用于估计数据样本 x x x 被标记为 y = 1 y = 1 y=1 的概率。由于只有两个标签,所以只需要找到一个 “ f f f” 函数。
多项式不是 f ( x ) f(x) f(x) 的理想选择,因为其输出值会超出 [ 0 , 1 ] [0, 1] [0,1] 范围。一个常用的函数是逻辑函数(Logistic function)。
逻辑函数的表达式为 f ( x ) = e a 0 + a 1 ⊤ x 1 + e a 0 + a 1 ⊤ x f(x)=\frac{e^{a_0 + a_1^{\top}x}}{1 + e^{a_0 + a_1^{\top}x}} f(x)=1+ea0+a1xea0+a1x 。在神经网络文献中,它也被称为 sigmoid 函数。
下图展示了 sigmoid 函数 y = e x 1 + e x y = \frac{e^x}{1 + e^x} y=1+exex 的图像,该函数的形状为一条 S 形曲线。此外,图中还提到当前标签取值 ({-1, 1}) 是任意选择的,后续为了数学计算方便,会选择 ({0, 1}) 。
在这里插入图片描述

对逻辑回归的更多直观理解

寻找逻辑回归函数的动机:
我们需要找到一个函数 f ( x ) ≈ P ( y = 1 ∣ x ) f(x) \approx \mathbb{P}(y = 1|x) f(x)P(y=1∣x) 来近似表示在给定 x x x 的条件下 y = 1 y = 1 y=1 的概率。
由于概率值在 [ 0 , 1 ] [0, 1] [0,1] 之间,很多函数类难以对其进行近似,所以需要一种将 [ 0 , 1 ] [0, 1] [0,1] 映射到 ( − ∞ , ∞ ) (-\infty, \infty) (,) 的变换。

几率(Odds)的概念
给定一个结果发生的概率为 P ∈ [ 0 , 1 ] P \in [0, 1] P[0,1],其几率 O O O 定义为 O = P 1 − P ∈ [ 0 , ∞ ) O = \frac{P}{1 - P} \in [0, \infty) O=1PP[0,),它是结果发生的事件数与不发生的事件数之比。
若几率 O ∈ [ 0 , ∞ ) O \in [0, \infty) O[0,),那么对数几率 log ⁡ O ∈ ( − ∞ , ∞ ) \log O \in (-\infty, \infty) logO(,),这是一个有用的变换。

逻辑函数的推导过程:
尝试用最简单的线性函数来拟合对数几率,即 log ⁡ ( p ( x ; θ ) 1 − p ( x ; θ ) ) = θ 0 + θ 1 T x \log \left(\frac{p(x; \theta)}{1 - p(x; \theta)}\right) = \theta_0 + \theta_1^T x log(1p(x;θ)p(x;θ))=θ0+θ1Tx
通过对上述等式进行整理,就可以得到逻辑函数 p ( x ; θ ) = e θ 0 + θ 1 T x 1 + e θ 0 + θ 1 T x p(x; \theta) = \frac{e^{\theta_0 + \theta_1^T x}}{1 + e^{\theta_0 + \theta_1^T x}} p(x;θ)=1+eθ0+θ1Txeθ0+θ1Tx

逻辑 /sigmoid 函数的导数

在继续学习之前,需要计算逻辑 /sigmoid 函数的导数,并且该导数在训练逻辑函数和神经网络时都很有用。

函数表达式
展示了 sigmoid 函数的两种等价形式: σ ( x ) = e x 1 + e x = 1 1 + e − x \sigma(x)=\frac{e^x}{1 + e^x}=\frac{1}{1 + e^{-x}} σ(x)=1+exex=1+ex1 ,以及逻辑函数 f ( x ) = 1 1 + e − θ 0 − θ 1 ⊤ x = σ ( θ 0 + θ 1 ⊤ x ) f(x)=\frac{1}{1 + e^{-\theta_0 - \theta_1^{\top}x}}=\sigma(\theta_0 + \theta_1^{\top}x) f(x)=1+eθ0θ1x1=σ(θ0+θ1x)

求导过程
σ ( x ) \sigma(x) σ(x) 求导,根据求导公式和法则,先得到 σ ′ ( x ) = − ( 1 + e − x ) − 2 ( e − x ) ( − 1 ) \sigma'(x)=-(1 + e^{-x})^{-2}(e^{-x})(-1) σ(x)=(1+ex)2(ex)(1) ,然后逐步化简为 σ ′ ( x ) = ( e − x 1 + e − x ) ( 1 1 + e − x ) = σ ( x ) ( 1 − e − x 1 + e − x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma'(x)=\left(\frac{e^{-x}}{1 + e^{-x}}\right)\left(\frac{1}{1 + e^{-x}}\right)=\sigma(x)\left(1 - \frac{e^{-x}}{1 + e^{-x}}\right)=\sigma(x)(1 - \sigma(x)) σ(x)=(1+exex)(1+ex1)=σ(x)(11+exex)=σ(x)(1σ(x))
进一步求 ∂ f ( x ) ∂ θ k \frac{\partial f(x)}{\partial \theta_k} θkf(x) ,结果为 σ ′ ( θ 0 + θ 1 ⊤ x ) x k = f ( x ) ( 1 − f ( x ) ) x k \sigma'(\theta_0 + \theta_1^{\top}x)x_k = f(x)(1 - f(x))x_k σ(θ0+θ1x)xk=f(x)(1f(x))xk

我们如何确定参数

数据设定
假设给定数据集 D = { ( x i , y i ) } i = 1 N D = \{(x_i, y_i)\}_{i = 1}^N D={(xi,yi)}i=1N,其中 y i ∈ { 0 , 1 } y_i \in \{0, 1\} yi{0,1},这是一个二分类问题

条件概率假设
假设对于某些参数 a 0 ∗ , a 1 ∗ ∈ R a_0^*, a_1^* \in \mathbb{R} a0,a1R,有 p ( x ; a 0 ∗ , a 1 ∗ ) = P ( y = 1 ∣ x ) p(x; a_0^*, a_1^*) = \mathbb{P}(y = 1|x) p(x;a0,a1)=P(y=1∣x),其中 p ( x ; a 0 , a 1 ) = e a 0 + a 1 ⊤ x 1 + e a 0 + a 1 ⊤ x p(x; a_0, a_1) = \frac{e^{a_0 + a_1^{\top}x}}{1 + e^{a_0 + a_1^{\top}x}} p(x;a0,a1)=1+ea0+a1xea0+a1x,这是一个逻辑函数形式的概率表达式。

我们的数据集 D 没有告诉我们标签出现的概率,所以在拟合贝叶斯概率模型时,不能最小化平方误差和。

参数求解思路
为了根据给定数据找到合适的 a 0 ∗ , a 1 ∗ ∈ R a_0^*, a_1^* \in \mathbb{R} a0,a1R,我们需要最大化似然函数 l ( a 0 , a 1 ) l(a_0, a_1) l(a0,a1)
l ( a 0 , a 1 ) l(a_0, a_1) l(a0,a1) 定义为在给定特征数据 x i x_i xi 的情况下观察到标签 y i y_i yi 的概率,即 max ⁡ a 0 , a 1 l ( a 0 , a 1 ) : = P ( Observing labels  y i given feature data  x i for  i ∈ { 1 , … , N } ) \max_{a_0, a_1} l(a_0, a_1) := \mathbb{P}(\text{Observing labels } y_i \text{ given feature data } x_i \text{ for } i \in \{1, \ldots, N\}) a0,a1maxl(a0,a1):=P(Observing labels yi given feature data xi for i{1,,N})
通过一系列推导
1.首先等价于 P ( y = y i for  i ∈ { 1 , … , N } ∣ x 1 , … x n ) \mathbb{P}(y = y_i \text{ for } i \in \{1, \ldots, N\} | x_1, \ldots x_n) P(y=yi for i{1,,N}x1,xn)
2.基于 N 个观测值之间相互独立的假设,进一步推导为 ∏ i : y i = + 1 p ( x i ; a 0 , a 1 ) ∏ j : y j = 0 ( 1 − p ( x j ; a 0 , a 1 ) ) \prod_{i:y_i = +1} p(x_i; a_0, a_1) \prod_{j:y_j = 0} (1 - p(x_j; a_0, a_1)) i:yi=+1p(xi;a0,a1)j:yj=0(1p(xj;a0,a1))
3. 最后,由于对 y y y 标签的巧妙选择,化简为 ∏ i = 1 N p ( x i ; a 0 , a 1 ) y i ( 1 − p ( x i ; a 0 , a 1 ) ) 1 − y i \prod_{i = 1}^{N} p(x_i; a_0, a_1)^{y_i} (1 - p(x_i; a_0, a_1))^{1 - y_i} i=1Np(xi;a0,a1)yi(1p(xi;a0,a1))1yi
4. 这个式子就是在二分类问题中用于求解参数 a0 和 a1 的最终形式(通过最大化这个式子)。

更通俗易懂的理解(可以跳过)

在二分类问题里,我们要找的就是能够最准确描述数据特征与分类标签之间关系的参数 a0 和 a1。如何确定a0a1就靠上面这个式子。
在这里插入图片描述

逻辑回归中的似然函数

似然函数 l ( a 0 , a 1 ) l(a_0, a_1) l(a0,a1) 的表达式:
l ( a 0 , a 1 ) : = ∏ i = 1 N p ( x i ; a 0 , a 1 ) y i ( 1 − p ( x i ; a 0 , a 1 ) ) 1 − y i l(a_0, a_1) := \prod_{i = 1}^{N} p(x_i; a_0, a_1)^{y_i} (1 - p(x_i; a_0, a_1))^{1 - y_i} l(a0,a1):=i=1Np(xi;a0,a1)yi(1p(xi;a0,a1))1yi
其中 p ( x ; a 0 , a 1 ) = e a 0 + a 1 ⊤ x 1 + e a 0 + a 1 ⊤ x p(x; a_0, a_1) = \frac{e^{a_0 + a_1^{\top}x}}{1 + e^{a_0 + a_1^{\top}x}} p(x;a0,a1)=1+ea0+a1xea0+a1x

似然函数的性质
如果我们很好地选择参数 a 0 a_0 a0 a 1 a_1 a1,使得 p ( x ; a 0 , a 1 ) ≈ P ( y = 1 ∣ x ) p(x; a_0, a_1) \approx \mathbb{P}(y = 1|x) p(x;a0,a1)P(y=1∣x),那么:
y i = + 1 y_i = +1 yi=+1 时, p ( x i ; a 0 , a 1 ) ≈ 1 p(x_i; a_0, a_1) \approx 1 p(xi;a0,a1)1
y j = 0 y_j = 0 yj=0 时, p ( x j ; a 0 , a 1 ) ≈ 0 p(x_j; a_0, a_1) \approx 0 p(xj;a0,a1)0

因此,最优参数会使 l ( a 0 , a 1 ) ≈ 1 l(a_0, a_1) \approx 1 l(a0,a1)1 ,次优参数会使 l ( a 0 , a 1 ) ≈ 0 l(a_0, a_1) \approx 0 l(a0,a1)0 。(代入进上面那个式子试一下就知道了。别忘了有yi和1-yi次方)

决策变量 a 0 a_0 a0 a 1 a_1 a1 与似然函数 l ( a 0 , a 1 ) l(a_0, a_1) l(a0,a1) 的输出之间存在复杂的关系。
这使得求解优化问题 max ⁡ a 0 , a 1 { l ( a 0 , a 1 ) } \max_{a_0, a_1} \{l(a_0, a_1)\} maxa0,a1{l(a0,a1)} 变得困难。

最大化似然函数

原始优化问题
求解以下优化问题较为困难: max ⁡ a 0 , a 1 l ( a 0 , a 1 ) : = ∏ i = 1 N p ( x i ; a 0 , a 1 ) y i ( 1 − p ( x i ; a 0 , a 1 ) ) 1 − y i \max_{a_0, a_1} l(a_0, a_1) := \prod_{i = 1}^{N} p(x_i; a_0, a_1)^{y_i} (1 - p(x_i; a_0, a_1))^{1 - y_i} maxa0,a1l(a0,a1):=i=1Np(xi;a0,a1)yi(1p(xi;a0,a1))1yi ,这是一个关于参数 a 0 a_0 a0 a 1 a_1 a1 的似然函数最大化问题。

为了简化问题,采用求解等价优化问题的思路,将原问题转换为对似然函数取对数后的最大化问题,即从 max ⁡ a 0 , a 1 l ( a 0 , a 1 ) \max_{a_0, a_1} l(a_0, a_1) maxa0,a1l(a0,a1) 转换为 max ⁡ a 0 , a 1 { log ⁡ l ( a 0 , a 1 ) } \max_{a_0, a_1} \{\log l(a_0, a_1)\} maxa0,a1{logl(a0,a1)}

对数似然函数展开
利用对数的性质 log ⁡ ( a b ) = log ⁡ ( a ) + log ⁡ ( b ) \log(ab) = \log(a) + \log(b) log(ab)=log(a)+log(b) log ⁡ ( a b ) = b log ⁡ ( a ) \log(a^b) = b\log(a) log(ab)=blog(a) ,对 log ⁡ l ( a 0 , a 1 ) \log l(a_0, a_1) logl(a0,a1) 进行展开:
max ⁡ a 0 , a 1 { log ⁡ l ( a 0 , a 1 ) } = max ⁡ a 0 , a 1 { ∑ i = 1 N y i log ⁡ ( p ( x i ; a 0 , a 1 ) ) + ( 1 − y i ) log ⁡ ( 1 − p ( x i ; a 0 , a 1 ) ) } \max_{a_0, a_1} \{\log l(a_0, a_1)\} = \max_{a_0, a_1} \left\{\sum_{i = 1}^{N} y_i \log(p(x_i; a_0, a_1)) + (1 - y_i) \log(1 - p(x_i; a_0, a_1))\right\} a0,a1max{logl(a0,a1)}=a0,a1max{i=1Nyilog(p(xi;a0,a1))+(1yi)log(1p(xi;a0,a1))}

如何寻找对数似然函数的驻点

回顾解决普通最小二乘法(OLS)问题时,是通过求导并令导数为零来求解的,这里也采用同样的方法。

将参数符号简化,令 θ = [ a 0 a 1 ] \theta=\begin{bmatrix}a_0\\a_1\end{bmatrix} θ=[a0a1],同时 p ( x ; θ ) = e θ 0 + θ 1 ⊤ x 1 + e θ 0 + θ 1 ⊤ x = 1 1 + e − θ 0 − θ 1 ⊤ x p(x;\theta)=\frac{e^{\theta_0+\theta_1^{\top}x}}{1 + e^{\theta_0+\theta_1^{\top}x}}=\frac{1}{1 + e^{-\theta_0-\theta_1^{\top}x}} p(x;θ)=1+eθ0+θ1xeθ0+θ1x=1+eθ0θ1x1

对数似然函数整理
在对对数似然函数求导之前先进行整理,对数似然函数 L ( θ ) : = log ⁡ l ( θ ) L(\theta):=\log l(\theta) L(θ):=logl(θ) ,经过一系列变换:
L ( θ ) = ∑ i = 1 N y i log ⁡ ( p ( x i ; θ ) ) + ( 1 − y i ) log ⁡ ( 1 − p ( x i ; θ ) ) = ∑ i = 1 N y i log ⁡ ( p ( x i ; θ ) 1 − p ( x i ; θ ) ) + log ⁡ ( 1 − p ( x i ; θ ) ) = ∑ i = 1 N y i ( θ 0 + θ 1 ⊤ x i ) − log ⁡ ( 1 + e θ 0 + θ 1 ⊤ x i ) \begin{align*} L(\theta)&=\sum_{i = 1}^{N}y_i\log(p(x_i;\theta))+(1 - y_i)\log(1 - p(x_i;\theta))\\ &=\sum_{i = 1}^{N}y_i\log\left(\frac{p(x_i;\theta)}{1 - p(x_i;\theta)}\right)+\log(1 - p(x_i;\theta))\\ &=\sum_{i = 1}^{N}y_i(\theta_0+\theta_1^{\top}x_i)-\log(1 + e^{\theta_0+\theta_1^{\top}x_i}) \end{align*} L(θ)=i=1Nyilog(p(xi;θ))+(1yi)log(1p(xi;θ))=i=1Nyilog(1p(xi;θ)p(xi;θ))+log(1p(xi;θ))=i=1Nyi(θ0+θ1xi)log(1+eθ0+θ1xi)
求导与目标
L ( θ ) L(\theta) L(θ) 关于 θ k \theta_k θk 求导:
∂ ∂ θ k L ( θ ) = ∑ i = 1 N y i x i , k − e θ 0 + θ 1 ⊤ x i 1 + e θ 0 + θ 1 ⊤ x i x i , k = ∑ i = 1 N ( y i − p ( x i ; θ ) ) x i , k \frac{\partial}{\partial\theta_k}L(\theta)=\sum_{i = 1}^{N}y_ix_{i,k}-\frac{e^{\theta_0+\theta_1^{\top}x_i}}{1 + e^{\theta_0+\theta_1^{\top}x_i}}x_{i,k}=\sum_{i = 1}^{N}(y_i - p(x_i;\theta))x_{i,k} θkL(θ)=i=1Nyixi,k1+eθ0+θ1xieθ0+θ1xixi,k=i=1N(yip(xi;θ))xi,k

为了方便,引入符号 x i , 0 = 1 x_{i,0}=1 xi,0=1

需要找到 θ \theta θ 使得 ∑ i = 1 N ( y i − p ( x i ; θ ) ) x i , k = 0 \sum_{i = 1}^{N}(y_i - p(x_i;\theta))x_{i,k}=0 i=1N(yip(xi;θ))xi,k=0

其中 p ( x ; θ ) = e θ 0 + θ 1 ⊤ x 1 + e θ 0 + θ 1 ⊤ x p(x; \theta) = \frac{e^{\theta_0 + \theta_1^{\top}x}}{1 + e^{\theta_0 + \theta_1^{\top}x}} p(x;θ)=1+eθ0+θ1xeθ0+θ1x ,这一问题涉及到求解超越方程。

不幸的是,求解逻辑回归问题涉及到求解超越方程。一般来说,超越方程没有解析解,只有近似的求根方法,如牛顿法(Newton’s method) 。

超越方程

定义
超越方程是一类需要找到一个数(实数、复数或多维等)来满足包含非多项式项恒等式的问题。一般来说,超越方程包含了指数函数、三角函数、对数函数等非多项式项。

进一步的理解
从数学原理上看,解析解是指可以用有限次的常见运算(加、减、乘、除、乘方、开方等)和基本函数(幂函数、指数函数、对数函数、三角函数、反三角函数等)来表示的解。

超越方程由于其函数的复杂性和非线性,很难甚至无法通过有限次的代数运算和基本函数组合来精确表示其解。例如 e x + x 2 − 1 = 0 e^{x}+x^{2}-1 = 0 ex+x21=0 e x e^{x} ex 的存在使得方程不能像一元二次方程 a x 2 + b x + c = 0 ax^{2}+bx + c=0 ax2+bx+c=0(可以用求根公式 x = − b ± b 2 − 4 a c 2 a x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a} x=2ab±b24ac 这样的解析形式求解 )那样,用有限次常见运算和基本函数组合给出精确的解。

所以,对于超越方程,通常只能采用近似的求根方法,如牛顿法,它是通过迭代的方式不断逼近方程的根。
超越方程由于其函数的复杂性和非线性,很难甚至无法通过有限次的代数运算和基本函数组合来精确表示其解。

牛顿法(Newton’s Method)求根。

在这里插入图片描述
求解 f ( x ) = 0 f(x)=0 f(x)=0时牛顿法:

  1. 首先找到一个点xi,这个点可以随机,当然选择离x轴交点近的地方更好。
  2. 下一步找到斜率为 f ′ ( x i ) f'(x_{i}) f(xi) 的直线:直线的一般方程为 y = m x + c y = mx + c y=mx+c,其中斜率 m = f ′ ( x i ) m = f'(x_{i}) m=f(xi),且直线过点 ( x i , f ( x i ) ) (x_{i}, f(x_{i})) (xi,f(xi)),由此可得截距 c = f ( x i ) − f ′ ( x i ) x i c = f(x_{i}) - f'(x_{i})x_{i} c=f(xi)f(xi)xi
  3. 找到直线与 x x x 轴的交点:令 y = 0 y = 0 y=0,即 0 = m x i + 1 + c 0 = mx_{i + 1} + c 0=mxi+1+c,从而推导出 x i + 1 = x i − f ( x i ) f ′ ( x i ) x_{i + 1} = x_{i}-\frac{f(x_{i})}{f'(x_{i})} xi+1=xif(xi)f(xi)
  4. x i + 1 x_{i+1} xi+1视作新的xi,重复上面的步骤,直到 f ( x i ) f(x_i) f(xi)趋近于0.

但是结合上述问题,求解最大化似然函数市不是要 f ( x ) = 0 f(x)=0 f(x)=0,而是要需求驻点,即求解 f ′ ( x ) = 0 f'(x) = 0 f(x)=0.

求解 f ′ ( x ) = 0 f'(x) = 0 f(x)=0 可能比较困难,所以与上面类似,应用牛顿法,其迭代公式为 x i + 1 = x i − f ′ ( x i ) f ′ ′ ( x i ) x_{i + 1}=x_{i}-\frac{f'(x_{i})}{f''(x_{i})} xi+1=xif′′(xi)f(xi),其中 f ′ ( x i ) f'(x_{i}) f(xi) 是函数 f ( x ) f(x) f(x) x i x_{i} xi 处的一阶导数, f ′ ′ ( x i ) f''(x_{i}) f′′(xi) 是函数 f ( x ) f(x) f(x) x i x_{i} xi 处的二阶导数。

高维空间中的牛顿 - 拉夫森方法

刚刚的牛顿法求根是比较容易理解的,不过我们还需要扩展一下,从实数空间扩展到n维实数空间。

为求解无约束优化问题 min ⁡ x ∈ R n f ( x ) \min_{x \in \mathbb{R}^n} f(x) minxRnf(x)(即在 n 维实数空间中求函数 f ( x ) f(x) f(x) 的最小值),应用的迭代公式为 x i + 1 = x i − ( H f ( x i ) ) − 1 ∇ f ( x i ) x_{i + 1}=x_{i}-(Hf(x_{i}))^{-1}\nabla f(x_{i}) xi+1=xi(Hf(xi))1f(xi)。这里 x ∈ R n x \in \mathbb{R}^n xRn,当 (n = 1) 时,就退化为上面的一维的结果。

我们期望 x ∗ = lim ⁡ i → ∞ x i x^*=\lim_{i \to \infty}x_{i} x=limixi 满足 f ( x ∗ ) = min ⁡ x ∈ R n f ( x ) f(x^*)=\min_{x \in \mathbb{R}^n} f(x) f(x)=minxRnf(x),即迭代的极限点 x ∗ x^* x 是函数 f ( x ) f(x) f(x) n n n 维空间中的最小值点。

补充两个概念:

  1. ∇ f ( x ) \nabla f(x) f(x) 表示梯度向量,其形式为 [ ∂ ∂ x 1 f ( x ) ⋮ ∂ ∂ x n f ( x ) ] \left[\begin{array}{c}\frac{\partial}{\partial x_1}f(x)\\\vdots\\\frac{\partial}{\partial x_n}f(x)\end{array}\right] x1f(x)xnf(x) ,它是由函数 f ( x ) f(x) f(x) 对各个变量 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x1,x2,,xn 的一阶偏导数组成的向量。(简单理解:可以当作一次导数)
  2. H f ( x ) Hf(x) Hf(x) 表示海森矩阵,形式为 [ ∂ 2 ∂ x 1 2 f ( x ) ⋯ ∂ 2 ∂ x 1 ∂ x n f ( x ) ⋮ ⋱ ⋮ ∂ 2 ∂ x n ∂ x 1 f ( x ) ⋯ ∂ 2 ∂ x n 2 f ( x ) ] \left[\begin{array}{ccc}\frac{\partial^2}{\partial x_1^2}f(x)&\cdots&\frac{\partial^2}{\partial x_1\partial x_n}f(x)\\\vdots&\ddots&\vdots\\\frac{\partial^2}{\partial x_n\partial x_1}f(x)&\cdots&\frac{\partial^2}{\partial x_n^2}f(x)\end{array}\right] x122f(x)xnx12f(x)x1xn2f(x)xn22f(x) ,它是由函数 (f(x)) 对各个变量的二阶偏导数组成的 n × n n\times n n×n 矩阵。 (简单理解:二次导数)

应用牛顿 - 拉夫森方法求解逻辑回归

核心迭代公式为 θ i + 1 = θ i − ( H L ( θ i ) ) − 1 ∇ L ( θ i ) \theta_{i + 1}=\theta_{i}-(HL(\theta_{i}))^{-1}\nabla L(\theta_{i}) θi+1=θi(HL(θi))1L(θi)。这里应用牛顿 - 拉夫森方法时,用 − L ( θ ) -L(\theta) L(θ)(负对数似然函数)替代了常规函数 f ( x ) f(x) f(x),原因是我们要最大化对数似然函数 L ( θ ) L(\theta) L(θ)

对数似然函数 L ( θ ) L(\theta) L(θ)

回忆对数似然函数的表达式为 L ( θ ) : = ∑ i = 1 N y i ( θ 0 + θ 1 ⊤ x ) − log ⁡ ( 1 + e θ 0 + θ 1 ⊤ x ) L(\theta):=\sum_{i = 1}^{N}y_{i}(\theta_{0}+\theta_{1}^{\top}x)-\log(1 + e^{\theta_{0}+\theta_{1}^{\top}x}) L(θ):=i=1Nyi(θ0+θ1x)log(1+eθ0+θ1x),其中 y i y_{i} yi 是样本标签, θ 0 \theta_{0} θ0 是截距项, θ 1 \theta_{1} θ1 是参数向量, x x x 是特征向量。

梯度向量 ∇ L ( θ i ) \nabla L(\theta_{i}) L(θi) 和海森矩阵 H L ( θ i ) HL(\theta_{i}) HL(θi)

接下来要找到 H L ( θ i ) HL(\theta_{i}) HL(θi) ∇ L ( θ i ) \nabla L(\theta_{i}) L(θi) 的表达式:

  • 梯度向量 ∇ L ( θ ) \nabla L(\theta) L(θ) 的第 k k k 个分量 [ ∇ L ( θ ) ] k = ∂ ∂ θ k L ( θ ) = ∑ i = 1 N ( y i − p ( x i ; θ ) ) x i , k [\nabla L(\theta)]_{k}=\frac{\partial}{\partial\theta_{k}}L(\theta)=\sum_{i = 1}^{N}(y_{i}-p(x_{i};\theta))x_{i,k} [L(θ)]k=θkL(θ)=i=1N(yip(xi;θ))xi,k,其中 p ( x ; θ ) = e θ 0 + θ 1 ⊤ x 1 + e θ 0 + θ 1 ⊤ x p(x;\theta)=\frac{e^{\theta_{0}+\theta_{1}^{\top}x}}{1 + e^{\theta_{0}+\theta_{1}^{\top}x}} p(x;θ)=1+eθ0+θ1xeθ0+θ1x 是逻辑回归的预测概率。
  • 海森矩阵 H L ( θ ) HL(\theta) HL(θ) 的第 l , k l,k l,k 个元素 [ H L ( θ ) ] l , k = ∂ 2 ∂ θ l ∂ θ k L ( θ ) = − ∑ i = 1 N x i , k x i , l ( 1 − p ( x i ; θ ) ) p ( x i ; θ ) [HL(\theta)]_{l,k}=\frac{\partial^{2}}{\partial\theta_{l}\partial\theta_{k}}L(\theta)=-\sum_{i = 1}^{N}x_{i,k}x_{i,l}(1 - p(x_{i};\theta))p(x_{i};\theta) [HL(θ)]l,k=θlθk2L(θ)=i=1Nxi,kxi,l(1p(xi;θ))p(xi;θ)
  • 补充说明:刚刚已经求得了关于 Sigmoid 函数的导数: ∂ p ( x ; θ ) ∂ θ k = σ ′ ( θ 0 + θ 1 ⊤ x ) x k = p ( x ; θ ) ( x ) ( 1 − p ( x ; θ ) ( x ) ) x k \frac{\partial p(x;\theta)}{\partial\theta_{k}}=\sigma'(\theta_{0}+\theta_{1}^{\top}x)x_{k}=p(x;\theta)(x)(1 - p(x;\theta)(x))x_{k} θkp(x;θ)=σ(θ0+θ1x)xk=p(x;θ)(x)(1p(x;θ)(x))xk,用于辅助理解上述两个式子的推导。

将牛顿 - 拉夫森方法用于逻辑回归的矩阵形式表达。

定义矩阵:

  • X : = [ 1 x 1 , 1 ⋯ x m , 1 ⋮ ⋮ 1 x 1 , N ⋯ x m , N ] ∈ R N × ( m + 1 ) X := \begin{bmatrix}1&x_{1,1}&\cdots&x_{m,1}\\&\vdots&\vdots\\1&x_{1,N}&\cdots&x_{m,N}\end{bmatrix} \in \mathbb{R}^{N\times(m + 1)} X:= 11x1,1x1,Nxm,1xm,N RN×(m+1),这是特征矩阵,每一行代表一个样本,每一列代表一个特征,第一列元素全为1,用于表示截距项。
  • Y : = [ y 1 ⋮ y N ] ∈ R N Y := \begin{bmatrix}y_1\\\vdots\\y_N\end{bmatrix} \in \mathbb{R}^{N} Y:= y1yN RN,是样本标签向量。
  • P ( θ ) : = [ p ( x 1 ; θ ) ⋮ p ( x N ; θ ) ] ∈ R N P(\theta) := \begin{bmatrix}p(x_1;\theta)\\\vdots\\p(x_N;\theta)\end{bmatrix} \in \mathbb{R}^{N} P(θ):= p(x1;θ)p(xN;θ) RN,是模型预测的概率向量,其中 p ( x i ; θ ) p(x_i;\theta) p(xi;θ) 是样本 x i x_i xi 属于正类的概率。
  • W ( θ ) : = d i a g ( ( 1 − p ( x 1 ; θ ) ) p ( x 1 ; θ ) , ⋯ , ( 1 − p ( x N ; θ ) ) p ( x N ; θ ) ) ∈ R N × N W(\theta) := diag((1 - p(x_1;\theta))p(x_1;\theta),\cdots,(1 - p(x_N;\theta))p(x_N;\theta)) \in \mathbb{R}^{N\times N} W(θ):=diag((1p(x1;θ))p(x1;θ),,(1p(xN;θ))p(xN;θ))RN×N,是对角矩阵,对角元素由 ( 1 − p ( x i ; θ ) ) p ( x i ; θ ) (1 - p(x_i;\theta))p(x_i;\theta) (1p(xi;θ))p(xi;θ) 构成。

推导梯度向量和海森矩阵的矩阵形式
已知 [ ∇ L ( θ ) ] k = ∑ i = 1 N ( y i − p ( x i ; θ ) ) x i , k [\nabla L(\theta)]_k = \sum_{i = 1}^{N}(y_i - p(x_i;\theta))x_{i,k} [L(θ)]k=i=1N(yip(xi;θ))xi,k [ H L ( θ ) ] l , k = − ∑ i = 1 N x i , k x i , l ( 1 − p ( x i ; θ ) ) p ( x i ; θ ) [HL(\theta)]_{l,k} = -\sum_{i = 1}^{N}x_{i,k}x_{i,l}(1 - p(x_i;\theta))p(x_i;\theta) [HL(θ)]l,k=i=1Nxi,kxi,l(1p(xi;θ))p(xi;θ),推导出:

  • 梯度向量 ∇ L ( θ ) = X ⊤ ( Y − P ( θ ) ) \nabla L(\theta) = X^{\top}(Y - P(\theta)) L(θ)=X(YP(θ))
  • 海森矩阵 H L ( θ ) = − X ⊤ W ( θ ) X HL(\theta) = -X^{\top}W(\theta)X HL(θ)=XW(θ)X

将上述结果代入牛顿 - 拉夫森方法的迭代公式 θ i + 1 = θ i − ( H L ( θ i ) ) − 1 ∇ L ( θ i ) \theta_{i + 1} = \theta_i - (HL(\theta_i))^{-1}\nabla L(\theta_i) θi+1=θi(HL(θi))1L(θi),得到 θ i + 1 = θ i + ( X ⊤ W ( θ i ) X ) − 1 X ⊤ ( Y − P ( θ i ) ) \theta_{i + 1} = \theta_i + (X^{\top}W(\theta_i)X)^{-1}X^{\top}(Y - P(\theta_i)) θi+1=θi+(XW(θi)X)1X(YP(θi))

现在我们只需要初始化 θ 0 \theta_0 θ0就好了:通常,我们随机初始化算法的参数 θ 0 ∈ R m \theta_0 \in \mathbb{R}^{m} θ0Rm,其中 m m m 是特征的数量(不包括截距项对应的维度)。

例子

数据集:

x x x-10
y y y01

即当 x = − 1 x = -1 x=1 时,对应的标签 y = 0 y = 0 y=0;当 x = 0 x = 0 x=0 时,对应的标签 y = 1 y = 1 y=1

逻辑回归模型的表达式: f ( x ) = 1 1 + e − θ 0 − θ 1 x f(x)=\frac{1}{1 + e^{-\theta_0 - \theta_1x}} f(x)=1+eθ0θ1x1,该模型用于预测样本属于正类的概率。
考虑参数初始化 θ initialisation = [ 1 , 1 ] ⊤ \theta_{\text{initialisation}} = [1, 1]^{\top} θinitialisation=[1,1],则初始模型为 f initialisation ( x ) = 1 1 + e − 1 − x f_{\text{initialisation}}(x)=\frac{1}{1 + e^{-1 - x}} finitialisation(x)=1+e1x1

  • x = − 1 x = -1 x=1 时, f initialisation ( − 1 ) = 1 1 + e 0 = 0.5 f_{\text{initialisation}}(-1)=\frac{1}{1 + e^{0}} = 0.5 finitialisation(1)=1+e01=0.5,即模型预测 x = − 1 x = -1 x=1 具有标签 y = 0 y = 0 y=0 的概率为 50 % 50\% 50%
  • x = 0 x = 0 x=0 时, f initialisation ( 0 ) = 1 1 + e − 1 ≈ 0.73 f_{\text{initialisation}}(0)=\frac{1}{1 + e^{-1}} \approx 0.73 finitialisation(0)=1+e110.73

模型预测 x = − 1 x = -1 x=1 50 / 50 50/50 50/50 的概率标签为 y = 0 y = 0 y=0,这表明该模型当前表现不佳(Bad model)。使用牛顿法更新模型参数,以获得更好的模型。

使用牛顿法对逻辑回归模型进行参数更新

牛顿法用于逻辑回归参数更新的公式: θ i + 1 = θ i + ( X ⊤ W ( θ i ) X ) − 1 X ⊤ ( Y − P ( θ i ) ) \theta_{i + 1} = \theta_i + (X^{\top}W(\theta_i)X)^{-1}X^{\top}(Y - P(\theta_i)) θi+1=θi+(XW(θi)X)1X(YP(θi))

矩阵计算过程

  1. 特征矩阵 X X X、标签向量 Y Y Y 和预测概率向量 P ( θ ) P(\theta) P(θ)
    • X = [ 1 − 1 1 0 ] X = \begin{bmatrix}1& -1\\1&0\end{bmatrix} X=[1110] Y = [ 0 1 ] Y = \begin{bmatrix}0\\1\end{bmatrix} Y=[01]
    • 当参数 θ = [ 1 1 ] \theta = \begin{bmatrix}1\\1\end{bmatrix} θ=[11] 时, P ( [ 1 1 ] ) = [ 1 1 + e 0 1 1 + e − 1 ] = [ 0.5 0.7311 ] P(\begin{bmatrix}1\\1\end{bmatrix}) = \begin{bmatrix}\frac{1}{1 + e^{0}}\\\frac{1}{1 + e^{-1}}\end{bmatrix} = \begin{bmatrix}0.5\\0.7311\end{bmatrix} P([11])=[1+e011+e11]=[0.50.7311]
  2. 权重矩阵 W ( θ ) W(\theta) W(θ)
    • W ( [ 1 1 ] ) = [ ( 1 − 0.5 ) × 0.5 0 0 ( 1 − 0.73 ) × 0.73 ] = [ 0.25 0 0 0.2 ] W(\begin{bmatrix}1\\1\end{bmatrix}) = \begin{bmatrix}(1 - 0.5) \times 0.5&0\\0&(1 - 0.73) \times 0.73\end{bmatrix} = \begin{bmatrix}0.25&0\\0&0.2\end{bmatrix} W([11])=[(10.5)×0.500(10.73)×0.73]=[0.25000.2]
  3. 计算 X ⊤ W X X^{\top}WX XWX: - X ⊤ W X = [ 1 1 − 1 0 ] [ 0.25 0 0 0.2 ] [ 1 − 1 1 0 ] = [ 0.45 − 0.25 − 0.25 0.25 ] X^{\top}WX = \begin{bmatrix}1&1\\ -1&0\end{bmatrix}\begin{bmatrix}0.25&0\\0&0.2\end{bmatrix}\begin{bmatrix}1& -1\\1&0\end{bmatrix} = \begin{bmatrix}0.45& -0.25\\ -0.25&0.25\end{bmatrix} XWX=[1110][0.25000.2][1110]=[0.450.250.250.25]
  4. 计算 ( X ⊤ W X ) − 1 (X^{\top}WX)^{-1} (XWX)1: - 通过公式计算 ( X ⊤ W X ) − 1 = 1 0.45 × 0.25 − 0.2 5 2 [ 0.25 0.25 0.25 0.45 ] = [ 5 5 5 9 ] (X^{\top}WX)^{-1} = \frac{1}{0.45 \times 0.25 - 0.25^{2}}\begin{bmatrix}0.25&0.25\\0.25&0.45\end{bmatrix} = \begin{bmatrix}5&5\\5&9\end{bmatrix} (XWX)1=0.45×0.250.2521[0.250.250.250.45]=[5559]
  5. 计算 X ⊤ ( Y − P ) X^{\top}(Y - P) X(YP): - X ⊤ ( Y − P ) = [ 1 1 − 1 0 ] ( [ 0 1 ] − [ 0.5 0.73 ] ) = [ 0.23 0.5 ] X^{\top}(Y - P) = \begin{bmatrix}1&1\\ -1&0\end{bmatrix}(\begin{bmatrix}0\\1\end{bmatrix} - \begin{bmatrix}0.5\\0.73\end{bmatrix}) = \begin{bmatrix}0.23\\0.5\end{bmatrix} X(YP)=[1110]([01][0.50.73])=[0.230.5]
  6. 更新参数 θ \theta θ: - 最终得到更新后的参数 θ update = [ 1 1 ] + [ 5 5 5 9 ] [ 0.23 0.5 ] = [ 2.25 4.35 ] \theta_{\text{update}} = \begin{bmatrix}1\\1\end{bmatrix} + \begin{bmatrix}5&5\\5&9\end{bmatrix}\begin{bmatrix}0.23\\0.5\end{bmatrix} = \begin{bmatrix}2.25\\4.35\end{bmatrix} θupdate=[11]+[5559][0.230.5]=[2.254.35]

根据之前计算得到更新后的参数 θ update = [ 2.25 4.35 ] \theta_{\text{update}} = \begin{bmatrix}2.25\\4.35\end{bmatrix} θupdate=[2.254.35],更新后的逻辑回归模型为 f update ( x ) = 1 1 + e − 2.25 − 4.35 x f_{\text{update}}(x)=\frac{1}{1 + e^{-2.25 - 4.35x}} fupdate(x)=1+e2.254.35x1

模型预测结果 :

  • x = − 1 x = -1 x=1 时, f update ( − 1 ) = 1 1 + e 2.1 = 0.1 f_{\text{update}}(-1)=\frac{1}{1 + e^{2.1}} = 0.1 fupdate(1)=1+e2.11=0.1,即模型预测 x = − 1 x = -1 x=1 具有标签 y = 1 y = 1 y=1 的概率较低。
  • x = 0 x = 0 x=0 时, f update ( 0 ) = 1 1 + e − 2.25 = 0.9 f_{\text{update}}(0)=\frac{1}{1 + e^{-2.25}} = 0.9 fupdate(0)=1+e2.251=0.9,即模型预测 x = 0 x = 0 x=0 具有标签 y = 1 y = 1 y=1 的概率较高。

更新后的模型能够正确地对样本进行预测,对于 x = − 1 x = -1 x=1 预测为 y = 1 y = 1 y=1 的概率较低,对于 x = 0 x = 0 x=0 预测为 y = 1 y = 1 y=1 的概率较高。更严格的模型性能分析还应包括准确率、特异性、ROC 表格、测试数据误差等指标。

分类问题中是否存在更简单的分类方法?

之前。我们尝试找到函数 f ( x ) f(x) f(x) 来近似条件概率 P ( y = 1 ∣ x ) \mathbb{P}(y = 1|x) P(y=1∣x),这要求 f ( x ) f(x) f(x) 的取值范围在 [0, 1] 之间。为解决此问题,我们任意选择了逻辑函数(logistic function)来作为 f ( x ) f(x) f(x)

逻辑函数的局限性

尽管逻辑函数具有一些良好的性质,但是有的时候它实在是太复杂 。因此,我们考虑一种更简单的方法,即假设 f ( x ) f(x) f(x) 没有特定的参数结构。

更简单的方法:k邻近

f ( x ) f(x) f(x) 等于在 x x x k k k 个最近邻训练数据点中 y y y 的最常见值,这实际上就是 k k k - 近邻(k - nearest neighbors,KNN)算法的基本思想。
在这种方法中,不对 f f f 做任何参数化结构的假设。此方法的逻辑函数的表达式 f ( x ) = e a 0 + a 1 ⊤ x 1 + e a 0 + a 1 ⊤ x f(x)=\frac{e^{a_0 + a_1^{\top}x}}{1 + e^{a_0 + a_1^{\top}x}} f(x)=1+ea0+a1xea0+a1x

k - 近邻分类器(K - Nearest Neighborhood Classifier)的原理和公式推导

数据集设定

假设给定一个数据集 D = { ( x i , y i ) } 1 ≤ i ≤ N \mathcal{D} = \{(x_i, y_i)\}_{1\leq i\leq N} D={(xi,yi)}1iN,其中 x i x_i xi 是特征向量, y i y_i yi 是对应的标签,N 是数据集中样本的数量。

近邻点索引集合

定义 N k ( x 0 ) N_k(x_0) Nk(x0) 为在数据集 { x i } i = 1 N \{x_i\}_{i = 1}^{N} {xi}i=1N 中与 x 0 x_0 x0 最接近的 k k k 个点的索引集合。

条件概率近似公式

对于给定的 x = x 0 x = x_0 x=x0,类别 y = l y = l y=l 的条件概率 P ( y = l ∣ x = x 0 ) \mathbb{P}(y = l|x = x_0) P(y=lx=x0) 可以近似为:
P ( y = l ∣ x = x 0 ) ≈ 1 k ∑ i ∈ N k ( x 0 ) 1 { y i } ( l ) \mathbb{P}(y = l|x = x_0) \approx \frac{1}{k} \sum_{i\in N_k(x_0)} \mathbb{1}_{\{y_i\}}(l) P(y=lx=x0)k1iNk(x0)1{yi}(l)
其中, 1 A ( x ) \mathbb{1}_A(x) 1A(x) 是指示函数,当 x ∈ A x \in A xA 时取值为 1 1 1,否则为 0 0 0。这个公式的含义是,在 x 0 x_0 x0 k k k 个近邻点中,标签为 l l l 的点的数量占近邻点总数 k k k 的比例,即近邻中标签为 l l l 的点的频率。

分类器模型

选择模型 f ( x 0 ) f(x_0) f(x0)为:
f ( x 0 ) = max ⁡ l { 1 k ∑ i ∈ N k ( x 0 ) 1 { y i } ( l ) } f(x_0) = \max_{l} \left\{ \frac{1}{k} \sum_{i\in N_k(x_0)} \mathbb{1}_{\{y_i\}}(l) \right\} f(x0)=lmax k1iNk(x0)1{yi}(l)
f ( x 0 ) f(x_0) f(x0) 取使得上述条件概率近似值最大的类别 (l)。

总结

图片底部绿色区域总结了 (k) - 近邻分类器的核心思想:(f(x)) 等于在 (x) 的 (k) 个最近邻训练数据点中 (y) 的最常见值,也就是将未知样本 (x) 分类为其 (k) 个近邻中出现频率最高的类别。

K邻近例子

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17365.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 网络编程

1. socket Socket 是一种用于网络通信的编程接口,它提供了一种类似于文件描述符的接口,允许不同计算机之间的进程进行通信。Socket 可以工作在多种协议上,最常用的是 TCP/IP 和 UDP/IP 协议 1.1 UDP 1.1.1 概念 UDP(用户数据报协…

C/C++内存管理

目录 前言 1、C/C内存划分 2、C语言中的动态内存管理方式 3、C内存管理方式 3.1操作内置类型 3.2操作自定义类型 3.3为什么对应的new和delete必须搭配使用(了解) 4、operator new与operator delete函数 5、new和delete的实现原理 5.1内置类型 5…

微软开源GraphRAG的使用教程-使用自定义数据测试GraphRAG

微软在今年4月份的时候提出了GraphRAG的概念,然后在上周开源了GraphRAG,Github链接见https://github.com/microsoft/graphrag,截止当前,已有6900Star。 安装教程 官方推荐使用Python3.10-3.12版本,我使用Python3.10版本安装时,在…

RK3568平台开发系列讲解(调试篇)网卡队列均衡负载

🚀返回专栏总目录 文章目录 一、RPS 的介绍1. RPS 的工作原理2. RPS 配置3. 启用和调优 RPS4. RPS 优势二、下行测试iperf测试沉淀、分享、成长,让自己和他人都能有所收获!😄 RPS(Receive Packet Steering) 是一种用于提高网络接收性能的技术,通常用于多核处理器系统中…

RagFlow + Docker Desktop + Ollama + DeepSeek-R1本地部署自己的本地AI大模型工具

前期准备 首先,我们需要下载 Ollama 以及配置相关环境。 Ollama 的 GitHub仓库 (https://github.com/ollama/ollama)中提供了详细的说明,简单总结如下: Step1:下载 Ollama 下载(https://ollama.com/dow…

变分边界详解

起因 当时看VAE论文时有这么一段,但是看完直接一头雾水,这都那跟哪,第一个公式咋做的变换就变出那么一堆。网上搜了很多博客都语焉不详,只好自己来写一篇,希望能解答后来人的疑惑。 公式1 参考文章:证据…

云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维

如今,消息队列已成为分布式架构中不可或缺的关键服务,为电商、物联网、游戏和教育等行业,提供了异步解耦、集成、高性能和高可靠的核心价值。 过去一年,我们发布了云消息队列 ApsaraMQ 全系列产品 Serverless 化,面向…

【蓝桥杯嵌入式】8_IIC通信-eeprom读写

全部代码网盘自取 链接:https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码:3ii2 1、电路图 这个电路允许通过I2C总线与EEPROM(M24C02-WMN6TP)和数字电位器(MCP4017T-104ELT)进行通信。EEPROM用于存储数据,而数字电位器可以用…

DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件

1 DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件 1.1 背景 AI能力再强,如果不能在企业的自有业务上产生助益,那基本也是一无是处。将企业的自有业务上传到线上训练,那是脑子进水的做法&#xff…

Java常用设计模式面试题总结(内容详细,简单易懂)

设计模式的分类 创建型模式:通过隐藏对象创建的细节,避免直接使用 new 关键字实例化对象,从而使程序在判断和创建对象时更具灵活性。常见的模式包括: 工厂模式抽象工厂模式单例模式建造者模式原型模式 结构型模式:通…

使用HX搭建UNI-APP云开发项目(适合新手小白与想学云开发的宝子)

什么是uni-app云开发 uni-app云开发是uni-app提供的一套后端服务,它可以帮助开发者快速搭建起一个完整的后端服务,包括数据库、云函数、存储等。开发者只需要关注前端页面的开发,后端服务由uni-app云开发提供。 uni-app云开发的优势: 快速搭建后端服务:uni-app云开发提供了…

零基础学CocosCreator·第九季-网络游戏同步策略与ESC架构

课程里的版本好像是1.9,目前使用版本为3.8.3 开始~ 目录 状态同步帧同步帧同步客户端帧同步服务端ECS框架概念ECS的解释ECS的特点EntityComponentSystemWorld ECS实现逻辑帧&渲染帧 ECS框架使用帧同步&ECS 状态同步 一般游戏的同步策略有两种:…

最新版Edge浏览器集成ActiveX控件之金山WpsDocFrame控件

背景 WpsDocFrame控件‌是由金山公司开发的ActiveX控件,主要用于OA系统中,支持在浏览器中嵌入WPS文档的查看和编辑功能。 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有…

Win10系统IP地址修改_出现了一个意外的情况不能完成所有你在设置中所要求的更改---Windows工作笔记001

今天在修改win10系统中的ip地址的时候报错了 来看看如何解决吧,挺简单,简单记录一下 这个时候就需要使用cmd命令来修改 一定要使用,管理员权限,运行cmd才可以 然后首先: 输入 netsh 然后输入 ip 然后输入: set address "以太网" 172.19.126.199 255.255.255.0…

算法 ST表

目录 前言 一,暴力法 二,打表法 三,ST表 四,ST表的代码实现 总结 前言 ST表的主要作用是在一个区间里面寻找最大值,具有快速查找的功能,此表有些难,读者可以借助我的文章和网上的课程结…

node.js+兰空图床实现随机图

之前博客一直用的公共的随机图API,虽然图片的质量都挺不错的,但是稳定性都比较一般,遂打算使用之前部署的兰空图床,自己弄一个随机图 本文章服务器操作基于雨云——新一代云服务提供商的云服务器进行操作,有兴趣的话可…

CNN|ResNet-50

导入数据 import matplotlib.pyplot as plt # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号import os,PIL,pathlib import numpy as npfrom tensorflow import keras from tensor…

基于微型5G网关的石化厂区巡检机器人应用

石化工业属于高风险产业,由于涉及易燃易爆、有毒有害工业原料,为了保障企业的安全生产与持续运营,因此相比其它行业需要进行更高频次、更全面细致的安全巡检和监测。由于传统的人工巡检监测存在诸多不便,例如工作强度大、现场环境…

Docker+Jenkins自动化部署SpringBoot项目【详解git,jdk,maven,ssh配置等各种配置,附有示例+代码】

文章目录 DockerJenkins部署SpringBoot项目一.准备工作1.1安装jdk111.2安装Maven 二.Docker安装Jenkins2.1安装Docker2.2 安装Jenkins2.3进入jenkins 三.Jenkins设置3.1安装jenkins插件3.2全局工具配置全局配置jdk全局配置maven全局配置git 3.3 系统配置安装 Publish Over SSH …

知识图谱数据库 Neo4j in Docker笔记

下载 docker pull neo4j:community官方说明 https://neo4j.com/docs/operations-manual/2025.01/docker/introduction/ 启动 docker run \--restart always \--publish7474:7474 --publish7687:7687 \--env NEO4J_AUTHneo4j/your_password \--volumeD:\files\knowledgegrap…