1. 逻辑回归:从数学原理到生活应用
初次接触逻辑回归时,常被名字迷惑——明明是分类算法,为何称'回归'?它其实是用回归的思想解决分类问题。就像用温度计测量体温,虽然得到的是连续数值,但最终判断'是否发烧'却是个二分类问题。
逻辑回归的核心是 Sigmoid 函数,这个 S 型曲线能把任意实数映射到 (0,1) 区间。可以想象挤牙膏的过程:轻轻用力时牙膏几乎不动(输出接近 0),用力到临界点时突然大量涌出(快速过渡到 1)。这个非线性特性完美解决了普通线性回归在分类任务中的输出越界问题。
在癌症识别这类医疗场景中,逻辑回归有个独特优势:输出的概率值具有可解释性。当模型给出某患者恶性肿瘤概率为 87% 时,医生能结合其他检查综合判断。相比之下,某些'黑箱'模型虽然准确率高,但'为什么是这个结果'的解释成本反而更高。
2. 手把手实现 Sigmoid 函数
实现逻辑回归的第一步通常是编写 Sigmoid 函数。别看代码只有一行,藏着几个新手容易踩的坑:
import numpy as np
def sigmoid(t):
return 1.0 / (1 + np.exp(-t))
直接使用 math.exp 处理数组时会报错,改用 numpy 的向量化计算效率提升明显。测试时发现输入较大负数时会出现溢出警告,添加异常处理更健壮:
def safe_sigmoid(t):
t = np.clip(t, -500, 500) # 防止数值溢出
return 1.0 / (1 + np.exp(-t))
实际项目中还会遇到数据尺度差异大的情况。比如癌细胞识别任务中,细胞核的'纹理'特征范围是 [1,10],而'面积'特征可能是 [100,1000]。这时不进行特征标准化,Sigmoid 的输出会偏向大尺度特征。建议在训练前先进行特征标准化。

