阿海在东海边做了四十年渔民。每晚他都会站在码头看风、看云、看浪,然后在心里默默给“明天能否出海”打分:东南风加两分,浪高超过三米扣三分,天边有积云再扣一分……家人问他:“到底能不能出?”他从来不直接说“能”或“不能”,而是嘟囔一句:“大概七成能行。”正是这个“大概”,让全村人把他当成了活天气预报。 这个故事里藏着今天的主角——逻辑回归。逻辑回归做的事情,和阿海一模一样:先收集各种特征(风速、浪高、云量),给每个特征乘上一个权重再加总,得到一个总分;然后把这个总分压成一个0到1之间的概率——“明天能出海的概率是0.7”;最后定一条规矩:概率超过0.5,就出海。它不直接拍板“行或不行”,而是给出一个带着把握程度的判断。这个“给概率、再划线”的两步走,就是逻辑回归的灵魂。更妙的是,逻辑回归还把这条经验总结成了一套可学习的数学规则,机器只要喂给它数据,它就能自己学会每个特征的权重,成为数据世界里的“老船长”。
对 AI 从业者而言,逻辑回归是理解一切分类模型的第一块基石——它既简单到可解释、可调试,又包含了概率输出、损失函数、梯度下降、正则化、多分类这些贯穿整个深度学习的核心思想。
可视化演示
展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T
分类本质
阿海的航海日志上记满了过去四十年的决策:哪天出了海、哪天没出、那天的风浪云雨。翻到最后一页,他忽然意识到,自己其实从来不需要回答“明天浪高几米”这种精细问题,只需要回答一个二选一的问题——出海,还是不出海?天气预报员报数字,老船长做选择。机器学习沿用了这个分工:预测连续数值(比如浪高 3.72 米)的任务叫回归,在几个固定选项里选一个(出/不出)的任务叫分类。
逻辑回归这个名词容易让人误会,它名字里带着“回归”,实际上是一个分类算法。线性回归学出来的是一条直线,直接读出连续的预测值;逻辑回归虽然也是先把特征做加权求和,但它不会把那个总分直接输出,而是把总分换算成一个“出海概率”。从学习方法上看,它属于监督学习——训练数据里每个样本都带标签(“出了”还是“没出”),模型从这些“标准答案”中学会规则。
具体地,逻辑回归先把每个特征乘以自己对应的权重,再加一个偏置项,得到总分 \(z\);然后把 \(z\) 送入一个压缩函数,最终输出 \((0,1)\) 之间的概率 \(p\)。概率越接近 1,代表“出海”的信心越足;越接近 0 则越倾向“不出海”。整个模型可以用下面的式子表示:
阿海心里就是一台“逻辑回归机”:风大扣分,浪高扣分,天晴加分,最后加出一个总分,再按自己多年练就的软开关换算成出海概率。他报出来的从来是“大概能行”,而不是“明天浪高 3.72 米”——因为做决策时,概率比精确数字更重要。
- 加权总分 \(z\)把每个特征值乘以对应权重后求和,再加偏置 \(b\),得到一个取值范围不受限的实数分数。
- Sigmoid 压缩 \(\sigma\)把任意实数 \(z\) 塞进一个平滑的 S 形函数,让输出乖乖落在 0 到 1 之间。
- 概率输出 \(p\)\(p\) 表示“标签为 1(如出海)”的概率;\(1-p\) 就是“标签为 0(不出海)”的概率。
Sigmoid函数
那台“软开关”究竟是什么?阿海年轻时用的是“硬开关”:总分超过 0 就出海,否则坚决不出。可渐渐地他发现这太武断了——差一分的天气,真就有天壤之别吗?于是他换成“软开关”:得分极高时几乎 100% 出海,得分极低时几乎 0%,中间的过渡地带则给出平滑的概率。这个“软开关”就是 Sigmoid 函数。
Sigmoid 函数把任意实数 \(z\) 压缩到 \((0,1)\) 区间内。\(z=0\) 时输出恰好是 0.5;\(z\) 越大,输出越接近 1;\(z\) 越小,输出越接近 0。它是一条平滑的 S 形曲线,因此也叫 S 形函数(Sigmoid 就是“S 形”的意思)。在逻辑回归中,这个函数让“加权总分”变成一个可以被解读为“概率”的数字,这是整套算法的关键一步。
Sigmoid 有三个对训练至关重要的性质。第一,单调:分数越高,输出的概率越大,保证预测和打分的直觉一致。第二,光滑:处处可导,梯度下降才有明确的“坡向”可以参考。第三,求导简单:它的导数恰好是 \(\sigma(z)(1-\sigma(z))\),这个漂亮的性质让后面计算梯度时格外省事。此外,把公式两边取对数,会得到 \(\log \frac{p}{1-p} = z\)——左边是“几率”取对数,逻辑回归的“逻辑”(logistic)正是来源于此,说明它本质上是在用线性模型刻画“对数几率”。
老渔民的软开关让他的判断越来越细腻:风平浪静时他几乎拍胸脯保证出海;台风天他死也不出;只有“多云有风浪”的中间地带,他才会犹豫着说“七成能行”。这个“七成”就是 Sigmoid 给他的语言——让决策从非黑即白,变成有层次的灰度。
- \(e^{-z}\) 指数缩放指数函数把 \(z\) 的正负性转换成大于零的缩放因子。
- 分母 \(1+e^{-z}\)分母永大于 1,所以整个分数永远大于 0 且小于 1。
- 两端极限\(z\) 趋近正无穷时,\(\sigma\) 趋近 1;\(z\) 趋近负无穷时,\(\sigma\) 趋近 0。
决策边界
阿海做决定时,心里其实有条线:总分高于某个值就出海,低于这个值就不出。用数学的话说,当模型输出的概率恰好是 0.5 时,对应的输入满足 \(\mathbf{w}^{\top}\mathbf{x} + b = 0\)。这被称为决策边界。权重向量 \(\mathbf{w}\) 决定这条线的朝向——哪个特征更“占分量”;偏置 \(b\) 决定线的位置——整体门槛有多高。在二维平面上它是一条直线,在三维空间是一个平面,在高维空间则称为超平面,它把整个特征空间一分为二:一边预测正类,一边预测负类。
默认的“划线位置”是概率 0.5,但它完全可以调整。假设今天气象警报很多,阿海可能会更加保守:概率超过 0.3 就不出海,因为翻船的风险他承受不起。反之,如果警报系统老是误报,让他少捕了太多鱼,他又会把阈值调高。阈值往低调,能兜住更多“潜在的坏天气”(不漏判),但也会误伤“本来挺好的天气”(多误报);阈值往高调则相反。这种两难,就是“误判权衡”——任何分类模型都要面对:漏判和误报,哪个是你更不想承担的代价?
阿海的“保守线”不是天生的:年轻时阈值设得低,稍微有点风浪就不出海,结果少捕了很多鱼;后来阈值设高了,又差点在风暴里翻了船。经过几十年摸爬滚打,他才找到那条“刚刚好”的线——既不会太怂,也不会玩命。模型训练的目的,就是自动找到这条线。
- 加权总分表达式所有特征与权重的乘积之和加上偏置,代表样本在特征空间中的“位置得分”。
- 决策规则总分大于 0 时概率超过 0.5,预测为正类;总分小于 0 时预测为负类。
- 几何含义令等式等于 0,就得到把空间切成两半的超平面。
交叉熵损失
阿海每次出海归来都会在日志上记一笔账:平安归来,轻轻画个勾;翻船了,狠狠记一笔;没出海但当天其实风平浪静,也要记一笔——因为白白错过了好收成。观察这本账,会发现一个规律:他记的最重的,不是“没出海结果天晴了”这种小失误,而是“拍胸脯保证没事,结果差点回不来”这种自信的错误。这个按把握程度加权的记账思路,对应的正是损失函数。
逻辑回归的账本叫交叉熵损失(cross entropy loss),也叫对数损失。单个样本的公式如下:当真实标签 \(y=1\) 时,损失是 \(-\log p\)。如果模型很有把握地输出 \(p=0.1\)(只有 10% 的把握认为是正类,结果真是正类),损失高达 \(-\log 0.1 \approx 2.3\);反过来当 \(y=0\) 时,损失是 \(-\log(1-p)\),模型若自信地输出 \(p=0.9\),同样会被重罚。核心思想是:错得越离谱、越自信,惩罚越重。
那为什么不干脆用均方误差(MSE)呢?逻辑回归的输出是概率,概率分布之间的差距更适合用“信息量”来度量。更关键的是,MSE 套在 Sigmoid 上会让损失函数变成非凸函数——山谷里有很多坑,梯度下降容易掉进局部最低点;而交叉熵配合 Sigmoid 会得到凸函数,只有一个全局最低点的“碗”,训练过程又稳又快。因此交叉熵是逻辑回归的天然搭档。
阿海从不平均地记错账:没出海但天气不错,只在本子上轻轻划一道;可要是他信誓旦旦说“铁定能出海”,结果船差点翻在风口,他会用红笔重重画个叉。这份“按把握程度加权”的账本,正是交叉熵损失的精髓。
- 真实标签为 1 时损失退化为 \(-\log p\),\(p\) 越接近 1 损失越接近 0;\(p\) 越接近 0,损失爆炸式增长。
- 真实标签为 0 时损失退化为 \(-\log(1-p)\),模型若把概率推高到接近 1,会被重重扣分。
- 对数放大错误对数函数在 0 附近增长极快,保证了“极小概率却发生”的事件受到极大惩罚。
梯度下降
账本记下来之后,要怎么改进自己?阿海的方法是“复盘”:这次翻船,是因为我把“东风”的分加得太高了。于是他下次会把这个因素的权重调低一点,把“浪高”的权重调高一点。下一次再遇到类似天气,总分变了,决策也跟着变。这个过程在机器学习里叫参数学习,而最常用的优化算法,就是梯度下降。
想象你站在一片雾蒙蒙的山谷里,要找到谷底(损失最小的地方)。你视野有限,看不清全局,只能感受脚下土地的坡度——这个坡度就是梯度。每一步,你朝“最陡下坡”的方向迈一小步;迈多长由学习率决定。如此重复成百上千次,你终将走到谷底。梯度下降的每一步,都在重复这个“感受坡度、迈步下山”的动作。
对逻辑回归的交叉熵损失求梯度,会得到一个非常优雅的结果:对某个权重 \(w_j\) 的梯度,等于“预测概率减去真实标签”乘以特征 \(x_j\) 在所有样本上的平均值。这个式子意味着:如果模型预测高了(\(p>y\)),就往下调权重;预测低了,就往上调。每次更新的方向永远是“减少错误”的方向,于是损失函数一路下降,直到收敛。
学习率就像步子大小:步子太大,容易在山谷两边来回弹跳甚至直接冲出山外——这叫震荡或发散;步子太小,走半天还在半山腰,训练迟迟不收敛。阿海花了大半辈子才摸清“该以多快的速度调整自己对每个因素的看法”——机器学习里的学习率,就是那个步幅。
- 预测误差 \(p^{(i)} - y^{(i)}\)模型输出概率与真实标签之差,误差为正说明预测偏高,为负说明偏低。
- 梯度方向误差乘以特征值,再对所有样本取平均,得到损失函数对 \(w_j\) 的梯度。
- 学习率 \(\eta\)控制每次更新迈多大的步子,是训练中最关键的超参数之一。
- 更新规则沿梯度的反方向调整权重,让损失越来越小。
多分类扩展
阿海并不只需要回答“出不出海”,有时候他还要决定“明天是捕鱼、修船,还是赶集”——三个选项。逻辑回归天生是二分类器,一次只能回答“是 or 否”,那面对三选一甚至更多选项怎么办?有两个常用思路。
思路一是“一对多”(One-vs-Rest):对每个类别各训练一个二分类器,比如“捕鱼 vs 其他”、“修船 vs 其他”、“赶集 vs 其他”,预测时把所有分类器的得分拿出来比大小,谁分高就选谁。思路二是直接扩展成 Softmax 回归,也叫多项逻辑回归:模型一次计算出每个类别的得分,再把这些得分转换成一个覆盖所有类别的概率分布。
Softmax 的公式如下:先把每个类别的得分 \(z_k\) 做指数运算得到 \(e^{z_k}\),再除以所有类别指数之和。指数运算会放大得分之间的差距,让得分高的类别概率优势更明显,但又不像“取最大值”那样一刀切地赢者通吃——它保留了温和的竞争性,输出的一组概率非负且总和为 1,正好是一个合法的概率分布。
阿海的三选一决策从来不会拍板“百分之百捕鱼”,而是在心里盘算:六成捕鱼、三成修船、一成赶集。这三个数加在一起正好是十成——这就是 Softmax 输出的概率分布。它把一个模糊的偏好,变成了可比较、可决策的具体数字。
- 每个类别的得分 \(z_k\)第 \(k\) 个类别自己的加权总分,反映模型对它的原始偏好。
- 指数化 \(e^{z_k}\)对得分做指数变换,得分越高放大得越厉害,拉开类别间的差距。
- 归一化分母除以所有类别指数之和,确保所有概率加起来等于 1。
正则化
阿海有一年特别迷信“看云出海”:他观察到某天西边有成片的鱼鳞云,出海后满载而归,于是从此把“鱼鳞云”的权重加得极高。结果那一年,他因为这个执念翻了好几次船——他把偶然当成了规律,记住了太多噪声。数据科学家把这种现象叫做过拟合:模型太贴合训练数据里的每一个细节,反而失去了对新数据的泛化能力。
正则化就是给模型“泼冷水”的办法:在原有损失函数后面加上一项惩罚项,逼着模型的权重不要太大。权重太大意味着模型对个别特征反应过度,很容易被一条样本牵着鼻子走。加上惩罚项之后,模型会更“克制”、更简单,也更愿意去抓数据中普遍存在的规律,而不是死记硬背某几个特例。这个“泼冷水”的力度由一个超参数 \(\lambda\) 控制。
最常见的两种正则化是 L2 和 L1。L2 正则化在损失后面加上所有权重的平方和 \(\lambda \sum w_j^2\),它倾向于把大的权重压小,但很少让权重变成精确的 0;L1 正则化加的是绝对值之和 \(\lambda \sum |w_j|\),它会把一些不重要的权重直接压成 0——相当于在做模型训练的同时,自动完成了一次特征选择。\(\lambda\) 越大,惩罚越重,模型越简单;但 \(\lambda\) 过大也会让模型“缩手缩脚”,把所有权重都压得太小,导致欠拟合。
老渔民后来被儿子点醒:“那片云是运气,不是规律。”他重新翻出老账本,把“鱼鳞云”的权重调回正常水平。这段经历让他明白:做判断时不仅要看眼前的特征,还要警惕自己给某些特征“加戏”——正则化就是那个提醒你收着点的儿子。
- 原始损失 \(L\)模型原本的“错账本”,衡量预测与真实标签的差距。
- 惩罚项 \(\sum w_j^2\)所有权重的平方和,权重越大,这顶“帽子”越重。
- 正则化系数 \(\lambda\)控制惩罚力度,\(\lambda\) 越大,模型被约束得越简单。
工程实践
阿海最终把一辈子的经验整理成了一套完整的工作流:记日志(收集数据)、提炼指标(特征工程)、划经验线(训练模型)、反复验证(模型评估)、上船前再看一眼(部署应用)。逻辑回归落地的过程,跟这套流程几乎一模一样。这也是为什么逻辑回归虽然诞生了半个多世纪,至今仍是许多公司的首选基线模型——够快、够稳、够清楚。
整个流程中最容易被低估的是特征工程。风速是用原始米/秒,还是转成风力等级?浪高是取原始值,还是取对数让大浪不那么“扎眼”?要不要把两个特征相乘得到交互项(比如“风速 × 浪高”)?这些选择直接决定了决策边界能否表达真实规律,因为逻辑回归的原始形式只有一条线性边界,数据中的非线性关系必须靠人先做好特征变换,模型才能学得到。
评估环节同样讲究。当正负样本严重不平衡时(比如 1000 个贷款申请里只有 5 个违约),准确率会骗人。这时候要看精确率(Precision)和召回率(Recall):信贷风控更看重精确率,因为放贷给不该放的人损失惨重;医疗筛查更看重召回率,因为漏诊一个病人后果难以挽回。F1 分数是两者的调和平均,用来在“精打细算”与“宁抓勿漏”之间找平衡。
从渔船到金融、医疗和广告,逻辑回归至今仍是工业界最可靠的“老船长”之一。阿海用一辈子悟出的经验,今天用一行 model.fit(X, y) 就能让机器自己学到——但真正拉开差距的,从来不是那行代码,而是对数据、对特征、对指标的理解,这些功夫,和判断风向一样,需要日积月累。
- 精确率 Precision预测为正类的样本里,有多少是真正例。
- 召回率 Recall真正的正类样本里,有多少被成功找了出来。
- 调和平均 F1比普通平均更严格,必须两者都高,F1 才会高。
AI 应用场景
信贷风控中的违约概率评估
阶段:监督学习模型训练与评估
解决的问题:过去信贷员靠经验翻材料、拍脑袋决定放不放款,每个人标准不一,既不稳定也难以解释。逻辑回归将收入、负债、逾期次数、查询次数等特征加权求和,输出“违约概率”,再按机构的风险偏好定阈值,既降低了坏账率,又让每一次决策都有据可查、可解释、可监管。
具体案例:某消费金融公司将逻辑回归应用于小额贷款审核,模型输出每个申请人的违约概率。审批系统设定阈值 0.4:概率超过 0.4 的申请自动转人工复核,低于 0.4 的快速放款。上线后坏账率下降约 18%,同时保持审批通过率基本不变。与黑盒模型相比,监管机构还能直接查看每个特征的权重,确认模型没有“歧视”敏感变量。
医疗辅助筛查中的患病风险提醒
阶段:特征工程与分类预测
解决的问题:传统的体检筛查往往只看单一指标是否超标(比如血糖 > 7 就警告),容易漏掉多项指标轻微异常叠加出来的高风险人群。逻辑回归可以把年龄、血压、血糖、血脂、家族史等多个特征组合起来,输出一个综合患病概率。医生可以据此设计分层筛查策略:概率高的安排深入检查,概率低的定期随访。
具体案例:某体检中心利用逻辑回归构建“糖尿病高风险筛查模型”,输入体检者的年龄、BMI、空腹血糖、糖化血红蛋白、家族史等 8 个特征,输出患病概率。将召回率优先的阈值设为 0.3,在高风险人群中检出率比单指标方案提高了约 25%,同时避免了把所有人都送去抽血复查的过度医疗。
Python 演示
import mathimport random class LogisticRegression: def __init__(self, n_features, lr=0.5, epochs=200): self.w = [random.uniform(-0.5, 0.5) for _ in range(n_features)] self.b = 0.0 self.lr = lr self.epochs = epochs def sigmoid(self, z): return 1.0 / (1.0 + math.exp(-z)) def predict_proba(self, x): z = self.b + sum(wi * xi for wi, xi in zip(self.w, x)) return self.sigmoid(z) def train(self, X, y): n = len(X) for epoch in range(self.epochs): total_loss = 0.0 for xi, yi in zip(X, y): p = self.predict_proba(xi) err = p - yi for j in range(len(self.w)): self.w[j] -= self.lr * err * xi[j] self.b -= self.lr * err total_loss += -math.log(p) if yi == 1 else -math.log(1 - p) if epoch % 20 == 0 or epoch == self.epochs - 1: acc = self.accuracy(X, y) print("epoch=%3d loss=%.4f acc=%.3f" % (epoch, total_loss / n, acc)) def predict(self, x): return 1 if self.predict_proba(x) >= 0.5 else 0 def accuracy(self, X, y): correct = sum(1 for xi, yi in zip(X, y) if self.predict(xi) == yi) return correct / len(y) def make_data(n=80, seed=42): random.seed(seed) X, y = [], [] for i in range(n): if i < n // 2: X.append([random.gauss(0.30, 0.14), random.gauss(0.35, 0.14)]) y.append(1) else: X.append([random.gauss(0.70, 0.14), random.gauss(0.65, 0.14)]) y.append(0) return X, y if __name__ == "__main__": X, y = make_data() model = LogisticRegression(n_features=2, lr=0.8, epochs=200) model.train(X, y) print("最终准确率: %.3f" % model.accuracy(X, y)) print("学到的权重: w1=%.3f, w2=%.3f, b=%.3f" % (model.w[0], model.w[1], model.b))
class LogisticRegression定义一个完整的逻辑回归模型类,包含权重、偏置和训练所需的方法。self.sigmoid实现 S 形压缩函数,把任意线性得分映射为 0 到 1 之间的概率。predict_proba(self, x)先计算加权总分再套 Sigmoid,对外输出“属于正类的概率”。err = p - yi关键梯度信号:预测概率与真实标签之差,驱动所有参数的更新。self.w[j] -= self.lr * err * xi[j]梯度下降的核心更新公式:沿负梯度方向微调第 j 个权重。total_loss += -math.log(p) ...累计交叉熵损失,用来监控模型训练进展。make_data()生成两类有重叠的高斯分布数据,模拟“想出海”与“不想出海”的人群。if __name__ == "__main__":可执行入口,先造数据,再训练模型,最后打印准确率与学到的权重。
常见误区
误区名字里带着“回归”两个字,数学形式又和线性回归那么像,它肯定是用来预测房价、气温这类连续数值的。
正解逻辑回归的输出是被压缩到 0 到 1 之间的概率,最终决策是在“是/否”之间做选择,因此本质上是分类算法。它的“回归”二字来自统计学历史:它回归的对象是“对数几率”,而不是连续数值本身。打个比方:老船长要回答的是“出不出海”,而不是“浪高几米”。
为何常见:初学者看到“回归”二字就想当然,又被它和线性回归相似的线性表达式迷惑,忽略了 Sigmoid 这个关键转折。
误区模型输出 0.8 就意味着现实中有百分之八十的概率会发生,哪怕样本分布改变也照样可信。
正解逻辑回归输出的概率是“在训练数据分布下”的条件概率估计。如果线上数据分布发生了漂移(比如训练数据来自老渔民,上线后用户全变成不会看海的新手),表面的 0.8 可能严重失准。此外模型还可能欠拟合或过拟合,导致概率校准不良。最好在独立验证集上做概率校准检查,再把阈值用于决策。
为何常见:“概率”这个词自带权威感,人很容易把模型输出的数值等同于客观世界的频率,忽略了它是“估计值”这一事实。
误区很多文章说逻辑回归属于“广义线性模型”,于是认为特征必须服从正态分布,否则模型就不成立。
正解逻辑回归对特征的分布没有任何硬性假设。标准化(归一化)的主要作用不是让模型“成立”,而是让梯度下降收敛更快——当不同特征尺度差异巨大时(比如一个特征在 0 到 1 之间,另一个在 0 到 10000 之间),损失函数的等高线会变得狭长,梯度下降走得很慢;标准化之后地形变得规整,训练更稳。
为何常见:把“线性回归的统计假设”和“逻辑回归的优化需求”弄混了,也把“有助于训练”误当成“必须满足的前提”。
误区逻辑回归的决策边界是超平面,那遇到非线性可分的数据(比如圆圈内外的两类点),它肯定无能为力。
正解原始形式确实是线性边界,但逻辑回归可以通过特征工程构造非线性:添加多项式特征(如 \(x_1^2\)、\(x_1 x_2\))、核变换等,边界在原始空间是弯的,在特征空间依然是线性的。老船长看云时不仅看“云量”,还看“云量 × 风向”这种组合——把特征组合好了,直线也能画出圆来。
为何常见:只记住了模型的线性形式,忽略了“特征空间”与“原始空间”的区别,也低估了特征工程的力量。
误区回归用 MSE,分类也用 MSE 呗,反正都是衡量预测和真实值的差距。
正解MSE 与 Sigmoid 组合会让损失函数变成非凸函数,山谷里有多处局部最低点,梯度下降很可能停在坏点;而交叉熵配合 Sigmoid 恰好保持凸性,只有一个全局最低点,训练更稳定。此外 MSE 对“高置信度但错误”的样本惩罚不足,不符合分类任务的风险直觉。
为何常见:初学者习惯从“损失函数 = 预测与真实的距离”这个朴素观点出发,不了解凸性对优化算法的影响。
面试题
Q1. 逻辑回归主要用于解决什么问题?
- A.预测连续数值
- B.解决二分类问题← 正确答案
- C.完成无监督聚类
- D.实施降维可视化
答案:B。逻辑回归虽然名字带“回归”,但它的输出是经过 Sigmoid 压缩的概率,最终在类别之间做选择,属于分类算法。就像老船长回答“出不出海”而不是“浪高几米”。A 是线性回归的活,C 是聚类,D 是降维。
Q2. Sigmoid 函数把输入压缩到什么范围?
- A.(-∞,+∞)
- B.[0,1]
- C.[−1,1]
- D.(0,1)← 正确答案
答案:D。Sigmoid 的分母永远大于 1,所以输出严格大于 0 且小于 1,是开区间 (0,1)。B 的中括号表示包含端点,但 Sigmoid 永远取不到 0 或 1,只在极限处趋近。
Q3. 逻辑回归中决策边界的默认阈值是?
- A.0.3
- B.0.5← 正确答案
- C.0.7
- D.1.0
答案:B。默认认为概率超过 0.5 就预测为正类,这是二分类最自然的“平分线”。实际业务中可以调整:风控怕漏判就调低,医疗怕误报就调高,和船长根据季节调整出海标准一个道理。
Q4. 下面哪个是逻辑回归常用的损失函数?
- A.均方误差
- B.交叉熵← 正确答案
- C.绝对误差
- D.合页损失
答案:B。逻辑回归用交叉熵(对数损失),它配合 Sigmoid 得到凸函数,训练稳定且对自信的错误惩罚重。MSE 和绝对误差是回归任务的常用损失,合页损失是 SVM 的常用损失。
Q5. 交叉熵损失对“非常自信却预测错误”的样本处理方式是?
- A.惩罚较小
- B.惩罚较大← 正确答案
- C.完全不惩罚
- D.随机惩罚
答案:B。真实标签为 1 但模型只给 0.1 的概率时,损失是 -log(0.1)≈2.3,远大于“不太确定时犯错”的损失。这就像船长自信满满说能出海却差点翻船,要在账本上重重记一笔。
Q6. 梯度下降中学习率设置过大可能会导致?
- A.收敛更快且更好
- B.震荡甚至发散← 正确答案
- C.对训练无影响
- D.自动调整步长
答案:B。学习率就是下山时的步长。步子太大,容易在山谷两边来回弹跳,甚至一步跨出山外,损失越训越大,这就是发散。学习率是超参数,需要人工调,模型不会自动调整。
Q7. 逻辑回归处理多分类问题可以用哪些策略?
- A.一对多策略← 正确答案
- B.Softmax回归← 正确答案
- C.聚类降维方法
- D.多项式拟合方法
答案:AB。一对多(One-vs-Rest)训练 K 个二分类器,Softmax 回归一次性输出多类概率分布,两者都是逻辑回归的多分类扩展。聚类降维是无监督方法,多项式拟合是回归手段,都不属于多分类策略。
Q8. L1 正则化与 L2 正则化的主要区别是什么?
- A.L1特征稀疏L2权重趋小← 正确答案
- B.L1实施更强的惩罚
- C.L2自动产生稀疏权重
- D.L1与L2作用效果一致
答案:A。L1 正则化(绝对值惩罚)会把不重要的权重直接压成 0,得到稀疏解,相当于自动特征选择;L2 正则化(平方惩罚)把大的权重压小但不归零,权重整体更均匀。就好比 L1 是劝你干脆放弃某个特征,L2 是让你对每个特征都收着点。
Q9. 在信贷风控模型中,把违约概率阈值从 0.5 降到 0.3,以下哪些变化会发生?
- A.召回率上升← 正确答案
- B.精确率下降← 正确答案
- C.拒绝更多客户← 正确答案
- D.误报率下降
答案:ABC。阈值降低后,更多申请人会被判为“违约”,因此真正的违约者被拦下的比例(召回率)上升,同时被误伤的优质客户也变多,精确率下降,整体拒绝的客户数量增加。误报率反而会上升而非下降,D 错误。
Q10. 逻辑回归属于哪种学习范式?
- A.监督学习← 正确答案
- B.无监督学习
- C.强化学习
- D.自监督学习
答案:A。逻辑回归训练时每个样本都带标签(出/不出海、违约/不违约),模型从“特征-标签”对中学习规律,这是典型的监督学习。无监督学习没有标签,强化学习靠奖励信号,都不符合。