题目内容
华为的通信工程师需要对部署在户外的5G基站进行实时健康监控。现收集到一批基站的历史运行数据,包含两个关键指标:设备工作温度(特征x1)和天线负载系数(特征x2),以及该基站是否发生故障的标签(**y = 1表示故障,y = 0**表示正常)。
为了在边缘服务器上实现轻量级的实时预测,请你使用逻辑回归(Logistic Regression)结合批量梯度下降法(Batch Gradient Descent),从零开始训练一个故障预警模型,并预测新基站的故障概率。
模型公式与更新规则如下:
1. 预测函数:对输入特征应用sigmoid激活函数:
z = w1 x1 + w2 x2 + b
y^ = 1 + e−z1
2. 参数初始化:所有权重和偏置初始值均设为0(即w1 = 0,w2 = 0,b = 0)。
3. 梯度计算:在每次迭代(Epoch)中,基于全体N个训练样本计算损失函数对各个参数的偏导数:
dw1 = N1 ∑i=1N (y^i − yi) x1i
dw2 = N1 ∑i=1N (y^i − yi) x2i
db = N1 ∑i=1N (y^i − yi)
4. 参数更新:使用学习率α进行参数更新:
w1 = w1 − α ⋅ dw1
w2 = w2 − α ⋅ dw2
b = b − α ⋅ db
请严格按照上述步骤,迭代E次后,输出给定新样本的预测故障概率。
(注:请统一使用64位双精度浮点数double或float64进行运算,以保证精度要求)
输入描述
所有数据通过标准输入读取,数值之间由一个或多个空格分隔。
- 第一行:三个数值,分别为训练样本数 N(整数)、迭代次数 E(整数)和学习率 α(浮点数)。
- 第 2 到第 N+1 行:每行三个数值,分别为 x1,x2(浮点数)和标签 y(整数 0 或 1)。
- 最后一行:两个数值,分别为待预测新样本的特征 x1_new 和 x2_new(浮点数)。
参数范围约束:
- 1≤N≤1000
- 1≤E≤1000
- 0.001≤α≤1.0
- −100.0≤x1,x2,x1_new,x2_new≤100.0
输出描述
- 输出一行,包含一个浮点数,表示新样本发生故障的预测概率。
- 要求四舍五入保留到小数点后 4 位(例如:0.5312)。
补充说明
样例1
输入
1 2 0.5
2.0 0.0 1
2.0 0.0
输出
0.8590
说明
样例2
输入
2 1 0.1
1.0 2.0 1
-1.0 -2.0 0
0.5 1.0
输出
0.5312
说明
初始化:w1=0,w2=0,b=0。
第1次迭代计算:
样本1 (y=1):z1=0→y^1=0.5。误差 =0.5−1=−0.5
样本2 (y=0):z2=0→y^2=0.5。误差 =0.5−0=0.5
计算梯度:
dw1=((−0.5×1.0)+(0.5×−1.0))/2=−0.5
dw2=((−0.5×2.0)+(0.5×−2.0))/2=−1.0
db=(−0.5+0.5)/2=0.0
参数更新:
w1=0−0.1×(−0.5)=0.05
w2=0−0.1×(−1.0)=0.1
b=0−0.1×0.0=0.0
预测新样本:z=0.05×0.5+0.1×1.0+0=0.125
Probability=1+e−0.1251≈0.531209→0.5312