从 Linear Regression 到 Logistic Regression
给定二维样本数据集 D = { ( → x 1 , y 1 ) , ( → x 2 , y 2 ) , … , ( → x n , y n ) } D = { ( x → 1 , y 1 ) , ( x → 2 , y 2 ) , … , ( x → n , y n ) } ,其中 → x 1 , … , → x n ∈ X x → 1 , … , x → n ∈ X 为 d d 维向量(即 X X 的size 为 n × d n × d ), y 1 , … , y n ∈ Y y 1 , … , y n ∈ Y 。我们希望得到一条直线 Y = X β + ε Y = X β + ε 来刻画 X X 和 Y Y 之间的一般关系,由于真实数据集存在随机项 ε i ∼ N ( 0 , σ 2 ) ε i ∼ N ( 0 , σ 2 ) ,一般情况下这条直线不可能精准地穿过所有的数据点,因此我们希望它尽可能地贴近所有的数据点。如何定义这个 “尽可能地贴近”?数学上来说,我们通过求最小化均方误差(MSE)来实现,即:
S = arg min β | | Y − ^ Y | | 2 = arg min β | | Y − X β | | 2 S = arg min β | | Y − Y ^ | | 2 = arg min β | | Y − X β | | 2
注意到表达式中的 X β X β 已经包含了直线的常数项。初学者可能会碰到的一个问题是,为什么上式中的最小化目标是 | | Y − X β | | 2 | | Y − X β | | 2 ,而不是 | | Y − X β − ε | | 2 | | Y − X β − ε | | 2 ?原因是,直线 Y = X β + ε Y = X β + ε 是我们的 model ground truth,我们容忍随机变量 ε ∼ N ( 0 , σ 2 ) ε ∼ N ( 0 , σ 2 ) 作为误差存在,而误差作为随机项无法消除,是数据集本身的特性,并非是模型的问题。我们通过解以上最优化问题,能够得到一个最优参数 β ∗ β ∗ ,反过来我们将 X X 代入得到的模型 ^ Y = X β ∗ Y ^ = X β ∗ ,此时的 ^ Y Y ^ 代表着预测值,它会与 ground truth Y Y 产生一个残差 e = Y − ^ Y e = Y − Y ^ 。注意到 e e 和 ε ε 在定义上是不同的,ε ε 是理论模型中的随机变量,它是无法被描述为具体某个值的,而残差 e e 则是针对一系列已观测的数据点根据线性回归模型求出的具体值。
上述最优化问题的偏导求解如下:
∂ S ∂ β = ∂ | | Y − X β | | 2 ∂ β = ∂ ( Y − X β ) T ( Y − X β ) ∂ β = − X T ( Y − X β ) + [ ( Y − X β ) T ( − X ) ] T = − 2 X T ( Y − X β ) ∂ S ∂ β = ∂ | | Y − X β | | 2 ∂ β = ∂ ( Y − X β ) T ( Y − X β ) ∂ β = − X T ( Y − X β ) + [ ( Y − X β ) T ( − X ) ] T = − 2 X T ( Y − X β )
令 ∂ S ∂ β = 0 ∂ S ∂ β = 0 ,即:
∂ S ∂ β = − 2 X T ( Y − X β ) = 0 ⟹ X T Y = X T X β ⟹ β ∗ = ( X T X ) − 1 X T Y ∂ S ∂ β = − 2 X T ( Y − X β ) = 0 ⟹ X T Y = X T X β ⟹ β ∗ = ( X T X ) − 1 X T Y
因此,我们拟合出的直线 ^ Y = X β Y ^ = X β 可以直接写作:
^ Y = X β = X ( X T X ) − 1 X T Y Y ^ = X β = X ( X T X ) − 1 X T Y
Logistic Regression
这和 Logistic Regression 有何联系呢?Logistic Regression 是一个二分类模型,对于每一个 → x ∈ X x → ∈ X 我们希望根据 → x x → 得到其对应的 label y ∈ { 0 , 1 } y ∈ { 0 , 1 } ,在离散空间上取值。一个思想是,我们设计一个中间函数 g ( z ) ∈ { 0 , 1 } g ( z ) ∈ { 0 , 1 } ,例如:
g ( z ) = { 0 , z ≤ 0 1 , z > 0 g ( z ) = { 0 , z ≤ 0 1 , z > 0
如此,我们便将连续的 z z 转换为二元取值 g ( z ) g ( z ) ,再采取类似的方法优化 g g 中的参数,使得预测结果贴近真实的 Y Y 。然而如上设计的 g g 并不连续,故而不可微,这并不符合广义线性模型(GLM)的条件。我们希望这么一个中间函数 g g ,它的取值在 ( 0 , 1 ) ( 0 , 1 ) 上,并且单调可微,因此便有了 sigmoid 函数的提出:
σ ( z ) = 1 1 + e − z σ ( z ) = 1 1 + e − z
不难判断出对于 ∀ z ∈ R : σ ( z ) ∈ ( 0 , 1 ) ∀ z ∈ R : σ ( z ) ∈ ( 0 , 1 ) ,且 σ ( z ) σ ( z ) 在 R R 上单调递增且可微。我们令:
y = σ ( z ) = 1 1 + e − z z = → w T → x + b ⟹ y = 1 1 + e − ( → w T → x + b ) y = σ ( z ) = 1 1 + e − z z = w → T x → + b ⟹ y = 1 1 + e − ( w → T x → + b )
我们发现,对于输入任意的 → x ∈ X x → ∈ X ,sigmoid 函数先将 → x x → 转化为一个取值在 ( 0 , 1 ) ( 0 , 1 ) 上的标量。除此之外还有:
ln y 1 − y = ln ( e → w T → x + b ) = → w T → x + b ⟹ ln y 1 − y = → w T → x + b ln y 1 − y = ln ( e w → T x → + b ) = w → T x → + b ⟹ ln y 1 − y = w → T x → + b
这样等式的右边又回到 Linear Regression 的简单结构。
Maximum Likelihood Estimation
我们会发现存在这么一个问题,即,数据集最终的 label 取值在 { 0 , 1 } { 0 , 1 } 中,为离散值,而经由 sigmoid 计算得到的值却在 ( 0 , 1 ) ( 0 , 1 ) 间连续取值。这个问题的解决办法是,我们不再将 sigmoid 函数生成的值(y y )视作 label,而是视作 “对于给定的 → x x → ,其 label 为 y = 1 y = 1 ” 的概率,即:
y = P ( y = 1 | → x ) ln P ( y = 1 | → x ) 1 − P ( y = 1 | → x ) = ln P ( y = 1 | → x ) P ( y = 0 | → x ) = → w T → x + b y = P ( y = 1 | x → ) ln P ( y = 1 | x → ) 1 − P ( y = 1 | x → ) = ln P ( y = 1 | x → ) P ( y = 0 | x → ) = w → T x → + b
注意到以上第一个式子中等式两边的 y y 的含义并不相同,等式左侧的 y y 代表着 “对于给定的 → x x → 其 label 为 1 1 的概率”,而等式右边的 y y 为真实 label ∈ { 0 , 1 } ∈ { 0 , 1 } 。
我们会发现,由 total probability:P ( y = 1 | → x ) + P ( y = 0 | → x ) = 1 P ( y = 1 | x → ) + P ( y = 0 | x → ) = 1 ,P ( y = 1 | → x ) P ( y = 0 | → x ) P ( y = 1 | x → ) P ( y = 0 | x → ) 在 P ( y = 1 | → x ) P ( y = 1 | x → ) 较大(P ( y = 0 | → x ) P ( y = 0 | x → ) 较小)时较大,极端情况下将趋于正无穷,对数值也将趋于正无穷;相反,在 P ( y = 1 | → x ) P ( y = 1 | x → ) 较小(P ( y = 0 | → x ) P ( y = 0 | x → ) 较小)时较小,极端情况下将趋于 0 0 ,对数值将趋于负无穷。当模型无法判断对于一个 → x x → 其 label 更偏向于 0 0 还是 1 1 时,此时 P ( y = 1 | → x ) = P ( y = 0 | → x ) = 0.5 P ( y = 1 | x → ) = P ( y = 0 | x → ) = 0.5 ,使得对数值为 0 0 。因此,在这种假设下,当训练好的模型计算的 → w T → x + b > 0 w → T x → + b > 0 ,模型将认为其 label 为 1 1 ;相反,当 → w T → x + b < 0 w → T x → + b < 0 时模型认为其 label 为 0 0 。
在这种情况下,显然:
P ( y = 1 | → x ) = 1 1 + e − ( → w T → x + b ) = e → w T → x + b 1 + e → w T → x + b P ( y = 0 | → x ) = 1 − P ( y = 1 | → x ) = 1 1 + e → w T → x + b P ( y = 1 | x → ) = 1 1 + e − ( w → T x → + b ) = e w → T x → + b 1 + e w → T x → + b P ( y = 0 | x → ) = 1 − P ( y = 1 | x → ) = 1 1 + e w → T x → + b
我们希望对于拥有真实 label y i = 1 y i = 1 的所有 → x x → ,模型得到的 P ( y = 1 | → x ; → w , b ) P ( y = 1 | x → ; w → , b ) 越大越好,即:
∏ → x i s . t . y i = 1 P ( y = 1 | → x i ; → w , b ) ∏ x i → s . t . y i = 1 P ( y = 1 | x i → ; w → , b )
同理,对于拥有真实 label y i = 0 y i = 0 的所有 → x x → ,模型得到的 P ( y = 0 | → x ; → w , b ) P ( y = 0 | x → ; w → , b ) 越大越好,即:
∏ → x i s . t . y i = 0 P ( y = 0 | → x i ; → w , b ) = ∏ → x i s . t . y i = 0 ( 1 − P ( y = 1 | → x i ; → w , b ) ) ∏ x i → s . t . y i = 0 P ( y = 0 | x i → ; w → , b ) = ∏ x i → s . t . y i = 0 ( 1 − P ( y = 1 | x i → ; w → , b ) )
如何将以上两个目标统一起来(将两个式子写入一个式子中,使得该式摆脱对下标 y i y i 的依赖)呢?即,我们希望建立一个式子 P ( y = y i | → x i ; → w , b ) P ( y = y i | x i → ; w → , b ) ,表示对于任意 → x i ∈ X x i → ∈ X 以及真实 label y i ∈ { 0 , 1 } y i ∈ { 0 , 1 } ,模型预测成功(y = y i y = y i )的概率。当这个综合表达式被建立后,我们便可以通过最大似然估计(MLE)求出在训练集上最优的参数 → w , b w → , b ,即:
max ∏ i P ( y = y i | → x i , → w , b ) max ∏ i P ( y = y i | x i → , w → , b )
周志华的《机器学习》里提到这么一种构建方法:
P ( y i | → x i ; → w , b ) = y i P ( y = 1 | → x i ; → w , b ) + ( 1 − y i ) P ( y = 0 | → x i ; → w , b ) P ( y i | x i → ; w → , b ) = y i P ( y = 1 | x i → ; w → , b ) + ( 1 − y i ) P ( y = 0 | x i → ; w → , b )
这样构建能够满足我们的目标,即:当 y i = 1 y i = 1 时,P ( y i | → x i ; → w , b ) = P ( y = 1 | → x i ; → w , b ) P ( y i | x i → ; w → , b ) = P ( y = 1 | x i → ; w → , b ) ;当 y i = 0 y i = 0 时,P ( y i | → x i ; → w , b ) = P ( y = 0 | → x i ; → w , b ) P ( y i | x i → ; w → , b ) = P ( y = 0 | x i → ; w → , b ) 。但是,这样会使得 MLE 求解变得复杂:
max → w , b L ( → w , b ) = max → w , b ∏ i ( y i P ( y = 1 | → x i ; → w , b ) + ( 1 − y i ) P ( y = 0 | → x i ; → w , b ) ) = max → w , b ∏ i ( y i e → w T → x + b 1 + e → w T → x + b + ( 1 − y i ) 1 1 + e → w T → x + b ) max w → , b L ( w → , b ) = max w → , b ∏ i ( y i P ( y = 1 | x i → ; w → , b ) + ( 1 − y i ) P ( y = 0 | x i → ; w → , b ) ) = max w → , b ∏ i ( y i e w → T x → + b 1 + e w → T x → + b + ( 1 − y i ) 1 1 + e w → T x → + b )
哪怕取对数似然:
max → w , b l ( → w , b ) = max → w , b ln ( ∏ i ( y i P ( y = 1 | → x i ; → w , b ) + ( 1 − y i ) P ( y = 0 | → x i ; → w , b ) ) ) = max → w , b ln ( ∏ i ( y i e → w T → x + b 1 + e → w T → x + b + ( 1 − y i ) 1 1 + e → w T → x + b ) ) = max → w , b ∑ i ln ( y i e → w T → x + b 1 + e → w T → x + b + ( 1 − y i ) 1 1 + e → w T → x + b ) = max → w , b ∑ i ln y i e → w T → x + b + 1 − y i 1 + e → w T → x + b = max → w , b ∑ i ( ln ( y i e → w T → x + b + 1 − y i ) − ln ( 1 + e → w T → x + b ) ) max w → , b l ( w → , b ) = max w → , b ln ( ∏ i ( y i P ( y = 1 | x i → ; w → , b ) + ( 1 − y i ) P ( y = 0 | x i → ; w → , b ) ) ) = max w → , b ln ( ∏ i ( y i e w → T x → + b 1 + e w → T x → + b + ( 1 − y i ) 1 1 + e w → T x → + b ) ) = max w → , b ∑ i ln ( y i e w → T x → + b 1 + e w → T x → + b + ( 1 − y i ) 1 1 + e w → T x → + b ) = max w → , b ∑ i ln y i e w → T x → + b + 1 − y i 1 + e w → T x → + b = max w → , b ∑ i ( ln ( y i e w → T x → + b + 1 − y i ) − ln ( 1 + e w → T x → + b ) )
并不能直接得到书中的目标结果:
min → w , b ∑ i ( − y i ( → w T → x + b ) + ln ( 1 + e → w T → x + b ) ) min w → , b ∑ i ( − y i ( w → T x → + b ) + ln ( 1 + e w → T x → + b ) )
一个更好的 P ( y i | → x i ; → w , b ) P ( y i | x i → ; w → , b ) 设计方法是:
P ( y i | → x i ; → w , b ) = P ( y = 1 | → x i ; → w , b ) y i ⋅ P ( y = 0 | → x i ; → w , b ) 1 − y i P ( y i | x i → ; w → , b ) = P ( y = 1 | x i → ; w → , b ) y i ⋅ P ( y = 0 | x i → ; w → , b ) 1 − y i
这种形式也能满足我们上述的要求,并且我们对参数求解 MLE:
max → w , b l ( → w , b ) = max → w , b ln ∏ i ( P ( y = 1 | → x i ; → w , b ) y i ⋅ P ( y = 0 | → x i ; → w , b ) 1 − y i ) = max → w , b ∑ i ln ( P ( y = 1 | → x i ; → w , b ) y i ⋅ P ( y = 0 | → x i ; → w , b ) 1 − y i ) = max → w , b ∑ i ( y i ln P ( y = 1 | → x i ; → w , b ) + ( 1 − y i ) ln P ( y = 0 | → x i ; → w , b ) ) = max → w , b ∑ i ( y i ln e → w T → x + b 1 + e → w T → x + b + ( 1 − y i ) ln 1 1 + e → w T → x + b ) = max → w , b ∑ i ( y i ( → w T → x + b ) − y i ln ( 1 + e → w T → x + b ) + ( y i − 1 ) ln ( 1 + e → w T → x + b ) ) = max → w , b ∑ i ( y i ( → w T → x + b ) − ln ( 1 + e → w T → x + b ) ) = min → w , b ∑ i ( − y i ( → w T → x + b ) + ln ( 1 + e → w T → x + b ) ) max w → , b l ( w → , b ) = max w → , b ln ∏ i ( P ( y = 1 | x i → ; w → , b ) y i ⋅ P ( y = 0 | x i → ; w → , b ) 1 − y i ) = max w → , b ∑ i ln ( P ( y = 1 | x i → ; w → , b ) y i ⋅ P ( y = 0 | x i → ; w → , b ) 1 − y i ) = max w → , b ∑ i ( y i ln P ( y = 1 | x i → ; w → , b ) + ( 1 − y i ) ln P ( y = 0 | x i → ; w → , b ) ) = max w → , b ∑ i ( y i ln e w → T x → + b 1 + e w → T x → + b + ( 1 − y i ) ln 1 1 + e w → T x → + b ) = max w → , b ∑ i ( y i ( w → T x → + b ) − y i ln ( 1 + e w → T x → + b ) + ( y i − 1 ) ln ( 1 + e w → T x → + b ) ) = max w → , b ∑ i ( y i ( w → T x → + b ) − ln ( 1 + e w → T x → + b ) ) = min w → , b ∑ i ( − y i ( w → T x → + b ) + ln ( 1 + e w → T x → + b ) )
即为书中所求。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?