C. 第3题-样本分层划分

第3题-样本分层划分

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目内容

某模型平台的样本管理服务归档了一批已标注记录。服务用这批记录做分层划分,再对每条待判记录输出标记和判定路径。

每条记录含 mm 项指标以及标记 y∈{0,1}y\in\{0,1\},指标按输入列顺序编号为 1∼m1\sim m,类型为连续(00)或离散(11)。

一、划分起点

划分从根结点开始,根结点深度为 00。同一条路径上已经用过的指标不再使用。

二、熵与信息增益

设当前结点样本集为 SS,∣S∣=nS|S|=n_S,pcp_c 为标记 cc 在 SS 中的占比。

  • H(S)=−∑cpclog⁡2pcH(S)=-\sum_c p_c\log_2 p_c
  • IG(S)=H(S)−∑v∣Sv∣nSH(Sv)IG(S)=H(S)-\sum_v\frac{|S_v|}{n_S}H(S_v)
  • IV(S)=−∑v∣Sv∣nSlog⁡2∣Sv∣nSIV(S)=-\sum_v\frac{|S_v|}{n_S}\log_2\frac{|S_v|}{n_S}
  • GR(S)=IG(S)/IV(S)GR(S)=IG(S)/IV(S)

nS=0n_S=0 时 H(S)=0H(S)=0,某类计数为 00 时该项按 00 计、不取对数;IV(S)IV(S) 与 00 的差的绝对值小于 10−910^{-9} 时视为 IV(S)=0IV(S)=0,此时 GR(S)=0GR(S)=0。

三、可用的划分方式

离散指标按当前结点该指标实际出现的取值分成多支;只有一种取值时该指标不可用。

连续指标把当前结点该指标的取值去重后升序排列为 u1<⋯<uku_1<\cdots<u_k。

  • 候选切分点 t=(ui+ui+1)/2t=(u_i+u_{i+1})/2(i=1,…,k−1i=1,\ldots,k-1)
  • 取值 ≤t\le t 的样本进左侧,>t>t 的进右侧,某一侧为空则丢弃该 tt
  • 在合法切分点中取 IGIG 最大的 tt,IGIG 相等时取更小的 tt
  • 该指标的 IGIG、GRGR 按此 tt 计算
  • k=1k=1 时该指标不可用

四、实数比较

计算得到的两个实数 a,ba,b 满足 ∣a−b∣<10−9|a-b|<10^{-9} 时视为相等,否则按大小比较;该容差也用于 IGIG 与 τ\tau 的比较。

五、选择指标

在可用且能合法划分的指标中取 GRGR 最大者,GRGR 相等取 IGIG 最大者,仍相等取编号最小者。

六、停止与叶子

当前结点满足下列任一条时成为叶子:

  • 深度已达 DD
  • nS<Ln_S<L
  • 标记全部相同
  • 没有可用且能合法划分的指标
  • 按选择指标规则选出的指标,其 IGIG 不大于 τ\tau

叶子不再划分。叶子标记取出现次数最多的 yy,次数相同标 00。

七、查询判定

判定从根结点开始,当前结点为叶子时取其标记。

离散指标:待判取值命中对应分支则进入该分支;否则进入该结点下训练样本数最多的分支,样本数相同则进入取值更小的分支。

连续指标:待判取值 ≤t\le t 进入左侧分支,否则进入右侧分支。

输入描述

第一行五个数 n,m,D,L,τn,m,D,L,\tau,依次为归档记录条数、指标数、深度上限、样本数下限、增益门槛。

第二行 mm 个整数 k1,…,kmk_1,\ldots,k_m,其中 kik_i 为第 ii 项指标的类型,00 表示连续,11 表示离散。

随后 nn 行记录,每行 m+1m+1 个整数 y,a1,…,amy,a_1,\ldots,a_m,其中 yy 为标记,aia_i 为第 ii 项指标取值。

接下来一行整数 qq。

随后 qq 行待判记录,每行 m+1m+1 个整数 id,a1,…,amid,a_1,\ldots,a_m,idid 为待判编号,不含 yy。

约束

2≤n≤802\le n\le 80

1≤m≤81\le m\le 8

0≤D≤60\le D\le 6

1≤L≤n1\le L\le n

0≤τ≤10\le \tau\le 1,τ\tau 至多 66 位小数

1≤q≤401\le q\le 40

ki∈{0,1}k_i\in\{0,1\}

y∈{0,1}y\in\{0,1\}

指标取值 aia_i 为整数,绝对值不超过 10001000

待判编号 idid 为整数,绝对值不超过 10610^6,且 qq 条内互不相同

输出描述

输出 qq 行,每行为一条待判记录的结果。每行三个字段,依次为待判编号、标记、路径,以单个空格分隔。路径为判定途中依次选用的指标编号,用 > 连接;未经过任何划分时路径为 -。

样例1

输入

6 3 3 1 0.01
1 1 0
0 1 2 10
0 1 2 12
0 2 2 31
1 1 1 40
0 2 1 50
1 2 1 60
4
1 1 2 10
2 1 1 40
3 2 1 50
4 1 3 45

输出

1 0 2
2 1 2>1
3 0 2>1>3
4 1 2>1

说明

指标 11、22 为离散,指标 33 为连续。

根结点有 66 条记录,44 条标记 00、22 条标记 11,H=0.918296H=0.918296。

指标 22 分成两支:取值 22 的 33 条全为标记 00;取值 11 的 33 条为两个标记 11、一个标记 00,IG=GR=0.459148IG=GR=0.459148。

指标 33 在切分点 35.535.5 处得到与指标 22 相同的两支,IGIG、GRGR 也相等;切分点 1111、21.521.5、4545、5555 的 IGIG 都更小。

指标 11 两支的标记分布相同,IG=0IG=0。

按 GRGR、IGIG、编号依次比较,根结点选用指标 22。0.459148>0.010.459148>0.01,继续划分。

取值 22 的一支标记全相同,成为叶子,标记 00。

取值 11 的一支有 33 条记录,H=0.918296H=0.918296。指标 11 分成一支(11 条,标记 11)与另一支(22 条,标记 00、11),IG=0.251629IG=0.251629,GR=0.274018GR=0.274018。指标 33 的切分点 4545 与 5555 的 IGIG 相等,取更小的 4545,分组与指标 11 相同。按编号选用指标 11。

路径 2>12>1 下取值 11 的一支成为叶子,标记 11;取值 22 的两条记录再按指标 33、切分点 5555 分成标记 00、标记 11 两片叶子。

待判 11 按指标 22 取值 22 到叶,路径 22,输出 1 0 2。待判 22 按指标 22 取值 11、指标 11 取值 11 到叶,路径 2>12>1,输出 2 1 2>1。待判 33 按指标 22 取值 11、指标 11 取值 22、指标 33 左侧到叶,路径 2>1>32>1>3,输出 3 0 2>1>3。待判 44 的指标 22 取值 33 未出现,取值 11 与取值 22 各有 33 条训练记录,取更小的取值 11,再按指标 11 取值 11 到叶,路径 2>12>1,输出 4 1 2>1。

AI方向-华为机考模拟赛-2026秋招第三场

Not Attended
Status
Done
Rule
IOI
Problem
3
Start at
2026-9-15 19:00
End at
2026-9-15 21:00
Duration
2 hour(s)
Host
Partic.
196