按题面做逻辑回归的批量梯度下降。对一条特征先算线性部分 z=w1x1+⋯+wdxd+b,再算 p=1+e−z1。
权重和偏置从输入给出的初值开始,一共训练 T 轮。每一轮都只用这一轮开始时的 w、b,先把 n 条样本的 pi 全部算出来,再求
gj=n1i=1∑n(pi−yi)xi,j+λwj gb=n1i=1∑n(pi−yi)某接口网关用逻辑回归判断一次调用会不会超时。每条调用有 d 个特征,标签 y=1 表示超时,y=0 表示未超时。请用批量梯度下降训练模型,再计算若干次新调用的超时概率。
模型参数是权重 w1,w2,…,wd 和偏置 b。对特征 x1,x2,…,xd,先算线性部分,再过 sigmoid:
z=w1x1+w2x2+⋯+wdxd+b
p=1+e−z1
权重和偏置从输入给出的初值开始,共训练 T 轮。每一轮都用这一轮开始时的参数,先算出全部 n 条训练样本的概率 pi,再计算梯度
gj=n1∑i=1n(pi−yi)xi,j+λwj
gb=n1∑i=1n(pi−yi)
其中 j=1,2,…,d。λwj 只加在权重上,偏置不加。然后用学习率 α 同时更新,更新时仍用本轮开始时的参数:
wj←wj−αgj
b←b−αgb
训练过程中不取整。训练结束后,对每条查询用最终的 w 和 b 计算 p,再保留四位小数:小数部分小于 0.5 则直接丢掉,大于或等于 0.5 则向绝对值更大的方向进 1。
第一行三个整数 n、d、T。n 是训练样本数,d 是特征个数,T 是训练轮数。
第二行两个实数 α、λ,依次是学习率和权重惩罚系数。
第三行 d+1 个实数,依次是 w1,w2,…,wd 和 b 的初值。
接下来 n 行,每行 d 个实数特征和一个整数 yi。
接下来一行一个整数 m,表示查询条数。
接下来 m 行,每行 d 个实数,是一条查询的特征。
1≤n≤200
1≤d≤5
1≤T≤20
1≤m≤200
0≤α≤1
0≤λ≤1
训练特征、查询特征、权重初值和偏置初值的绝对值均不超过 10
yi∈{0,1}
输出 m 行。第 k 行是第 k 条查询的超时概率,恰好保留四位小数。
输入
2 1 1
1 0
0 0
2 1
0 1
2
0
2
输出
0.6225
0.8176
说明
初值 w1=0,b=0,λ=0,只训练一轮。两条样本的 z 都是 0,所以 p1=p2=0.5。
g1=2(0.5−1)⋅2+(0.5−1)⋅0=−0.5
gb=2(0.5−1)+(0.5−1)=−0.5
更新后 w1=0.5,b=0.5。
查询 0:z=0.5,p=1/(1+e−0.5)=0.622459…,保留四位小数为 0.6225。
查询 2:z=1.5,p=1/(1+e−1.5)=0.817574…,保留四位小数为 0.8176。
输入
1 1 1
1 0.5
1 0
0 1
1
2
输出
0.8176
说明
初值 w1=1,b=0,λ=0.5。样本特征是 0,标签是 1,所以 z=0,p1=0.5。
g1=(0.5−1)⋅0+0.5⋅1=0.5
gb=0.5−1=−0.5
偏置不加 λb。更新后 w1=0.5,b=0.5。
查询 2:z=1.5,概率保留四位小数为 0.8176。
In following contests:
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册