深夜的后厨灯火通明,主厨老周盯着案板上堆积如山的食材发愁:成捆的芹菜带着泥土,整块的五花肉还带着毛,几十种蘑菇大小不一。这些“带泥的食材”就是机器学习的原始数据。老周知道,直接把它们丢进锅里,再高明的火候也救不了一锅乱炖。他需要一个帮厨,把这些食材洗好、切好、称好、搭配好——这份备料工作,就是特征工程。过去,老周只能凌晨四点起来自己备料,一干就是几个小时,这就是人工特征工程。如今,厨房迎来了一位会学习的帮厨机器人“小刀”:它观察老周做过的一千道菜,学会了自动洗切、自动搭配、自动扔掉没用的边角料。老周只需要站在灶台前专注调味和火候,出菜效率翻倍。小刀的本事,就是自动特征工程(AutoML Feature Engineering)。这篇文章,我们就来拆解“小刀”在厨房里到底是怎么干活的。

岗位关联

掌握自动特征工程,你就能把 AI 建模中最耗时、最依赖经验的“备料”环节交给机器,把精力留给算法调参与业务理解——这是数据科学家的效率杠杆。

目录
  1. 可视化演示
  2. 特征工程概述:备料决定菜品上限
  3. 特征生成方法:切菜与搭配的艺术
  4. 特征变换技巧:称量与调味
  5. 特征选择策略:挑出最好的食材
  6. 自动化搜索机制:机器人的学习闭环
  7. 开源工具实战:厨房里的现成机器人
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示AutoML自动特征工程的生成变换与选择排序过程,支持切换特征生成网络与特征重要性排序两种模式,调节Top-K参数查看选择效果。

本节配有交互动效(进入视口后自动加载,约 3KB)。

自动特征生成 原始特征通过自动变换生成新特征组合,扩展特征空间 特征交叉、数值变换、编码转换等操作自动完成 生成特征数 = f(原始特征数,变换组合) 切换模式查看特征重要性排序

特征工程概述:备料决定菜品上限

老周的师傅说过一句话:“再好的厨师也做不出没有食材滋味的菜,但同样一堆食材,备料的方式决定它是路边摊还是米其林。”备料——也就是特征工程——之所以如此重要,是因为它直接决定了模型学习的上限。一次偷懒的备料,后面再努力也很难补救。

在机器学习里,原始数据不会自己开口说话。一份房价数据里有面积、房龄、楼层、周边配套这些列,它们就是原始特征。模型是厨师,特征是“备好的料”。如果直接把“总价”和“面积”两个字段扔给模型,它很难自己领悟出“每平米单价”这个更有判别力的概念。

特征工程就是把原始数据加工成训练特征的一系列方法,核心是三件事:生成新特征、变换特征尺度、筛选重要特征。几乎所有模型都可以用一个公式概括:模型是输入特征的函数。同样的算法,喂进去的特征质量不同,效果天差地别。

回想老周的厨房:小刀把料备得越精细,主厨(模型)就越省力。这就是为什么特征工程在机器学习流程里被称为“天花板环节”——它决定了模型能触达的上限,算法调参只是在这个上限内逼近而已。

y=f(x1,x2,…,xn)\displaystyle y = f(x_1, x_2, \ldots, x_n)
这个公式说明:模型的预测结果 y 完全由特征 x_1 到 x_n 决定,特征就是模型的“食材”,f 是厨师的“手艺”。
  1. 特征输入(x₁…xₙ)x_1 到 x_n 是模型的 n 个输入特征,相当于帮厨备好的 n 种食材,模型只能靠它们认识世界。
    x1,x2,…,xnx_1, x_2, \ldots, x_n
  2. 映射函数(f)f 表示模型从特征到预测结果的学习规则,就像菜谱里的烹饪手法,决定了食材如何变成菜品。
    f(⋅)f(\cdot)
  3. 预测输出(y)y 是模型基于特征给出的预测值,相当于最终端上桌的菜,备料好坏直接决定它的品相。
    yy

特征生成方法:切菜与搭配的艺术

小刀最拿手的本事是“一料多用”。一块五花肉,它可以切成肉丝炒菜,剁成肉馅包饺子,煸出猪油做酥点——同一个食材,不同的切法就是不同的菜。特征生成也是这个思路:从已有特征出发,通过运算组合出新的、更有表达力的特征。

在房价预测里,“面积”和“房龄”各自单独看,都不如“面积 ÷ 房龄”更能反映房子的性价比。这就是数值特征的组合变换。常见的特征生成方法有四类:数值特征组合(四则运算构造新特征)、类别特征编码(把“地段=市中心/郊区”变成数字,如独热编码)、时间特征提取(从时间戳拆出年、月、日、星期)、文本特征数值化(用 TF-IDF 把一句话变成向量)。

小刀切菜不是乱切,它心里有一本“搭配手册”:哪些食材组合能出鲜味,哪些会串味。自动特征工程同样在维护一张巨大的候选特征清单——从加减乘除到对数指数,每一种搭配都被记录下来,然后交给后面的环节去筛选。

fnew=f1÷f2\displaystyle f_{\text{new}} = f_1 \div f_2
特征相除是最直观的组合方式,它把两个原始特征的“比例关系”显式地暴露给模型,省去模型自己推导的成本。
  1. 分子(f₁)f_1 是参与组合的第一个原始特征,比如“房屋面积”,相当于一种主要食材,决定了新特征的量级。
    f1f_1
  2. 分母(f₂)f_2 是参与组合的第二个原始特征,比如“房龄”,它决定了组合特征的语义方向,是“配菜”的角色。
    f2f_2
  3. 组合结果(f_new)两个特征相除得到新特征,代表“单位房龄对应的面积”,比单独看任何一个特征都更有判别力。
    fnewf_{\text{new}}

特征变换技巧:称量与调味

再好的食材,下锅前也得过秤、统一分量。小刀会把所有食材按标准规格称重,让每道菜的用量一致——这就是特征变换。实际数据里,不同特征往往有天差地别的量纲:面积动辄上百,房龄只有两位数,楼层只是个位数。

如果不做变换,量纲大的特征会在模型计算中“霸屏”,让模型误以为它最重要。特别是梯度下降、KNN、SVM 这类对距离和尺度敏感的算法,未缩放的特征会让训练极不稳定。变换的目标就是把所有特征拉到可控的尺度范围,让它们在模型眼里“平等”。

常用变换有三种:最小-最大归一化把特征线性缩放到 [0,1] 区间;Z-Score 标准化把数据变成均值为 0、方差为 1 的标准分布;对数变换 log(1+x) 能压缩价格、点击量这类长尾分布的偏态。

小刀调味的哲学是“不抢味”——每种调料都按比例放,谁也不许盖过谁。特征变换就是这个道理:让每个特征在模型眼里都是平等的,学习才能更稳定、收敛更快。

x′=x−xmin⁡xmax⁡−xmin⁡\displaystyle x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}}
最小-最大归一化是最直观的“称量”:用每个值在整体范围中的相对位置代替原始数值,让所有特征都落在同一个刻度上。
  1. 分子(x−x_min)当前值减去最小值,得到该特征在整体范围内的相对位置,相当于量出食材离标准线还差多少。
    x−xmin⁡x - x_{\min}
  2. 分母(x_max−x_min)最大值减最小值得到极差,代表该特征整体的波动范围,相当于这一批食材的规格跨度。
    xmax⁡−xmin⁡x_{\max} - x_{\min}
  3. 归一化结果(x′)两者相除后 x' 被压缩到 0 到 1 之间,所有特征有了统一的量纲,模型不再被大数带偏。
    x′∈[0,1]x' \in [0, 1]

特征选择策略:挑出最好的食材

小刀备料时最大的本事不是切得多,而是扔得准。一片有虫眼的叶子、一根太老的芹菜,它眼睛都不眨就扔进垃圾桶。特征选择,就是自动特征工程里的“挑菜”环节,也是最容易被新手忽略的一步。

特征生成往往会爆炸式地造出成百上千个候选特征。如果全部喂给模型,训练变慢不说,大量冗余和噪声还会导致过拟合。特征选择的目标,就是从候选中挑出对预测真正有贡献的子集。它有三类经典策略:过滤法不依赖模型,先用方差、相关系数等统计指标筛一遍;包裹法把特征子集直接放进模型训练,按模型效果评价组合优劣,典型是前向选择;嵌入法则在模型训练过程中自动筛选,比如 L1 正则把不重要特征的系数压成 0,树模型输出特征重要性。

挑菜的标准很朴素:留下的食材要么自己有用,要么能和其他食材搭配出彩。过滤法负责快速海选,包裹法负责精细试菜,嵌入法让模型自己“用脚投票”——三招组合,就是一套完整的挑菜流水线。

r=∑i=1n(xi−xˉ)(yi−yˉ)∑i=1n(xi−xˉ)2⋅∑i=1n(yi−yˉ)2\displaystyle r = \frac{\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^2} \cdot \sqrt{\sum_{i=1}^{n}(y_i - \bar{y})^2}}
皮尔逊相关系数 r 是过滤法最常用的打分工具,它度量特征和目标之间线性关系的强弱,|r| 越大说明这个特征越“有用”。
  1. 协方差分子分子计算特征 x 和目标 y 中每对样本的离差乘积之和,衡量它们是否同向变化,就像观察食材新鲜度和顾客好评是否一起涨。
    ∑i=1n(xi−xˉ)(yi−yˉ)\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})
  2. x 的波动尺度(分母左项)对 x 的离差平方和开根号,得到特征自身的波动幅度,用来消除量纲影响。
    ∑i=1n(xi−xˉ)2\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^2}
  3. y 的波动尺度(分母右项)同理计算目标值的波动尺度,保证相关系数最终落在 [-1, 1] 区间。
    ∑i=1n(yi−yˉ)2\sqrt{\sum_{i=1}^{n}(y_i - \bar{y})^2}
  4. 相关系数(r)分子除以两个波动尺度的乘积,|r| 越接近 1 说明线性关系越强,过滤法就保留 r 绝对值大的特征。
    r∈[−1,1]r \in [-1, 1]

自动化搜索机制:机器人的学习闭环

小刀之所以叫“会学习的帮厨”,是因为它不按固定菜谱机械操作。它刚开始也笨手笨脚,切坏了菜、搭错了料,但每次被批评后都会记住教训,下一轮做得更好。自动特征工程的核心,就是这样一个“生成—评估—迭代”的闭环。

AutoML 中的自动特征工程不是写死规则,而是把特征工程变成一个搜索和优化问题:在一个巨大的候选空间中,找到能让模型效果最好的特征子集和变换方式。它的完整流程包括三个环节:候选生成(用前面讲的各种方法产生海量候选特征)、评估反馈(用验证集的模型表现给一组特征打分)、迭代优化(根据分数调整搜索策略,如贪心搜索、贝叶斯优化、进化算法,循环往复直到收敛或预算耗尽)。

小刀每做完一顿饭,都在笔记本上记下哪种切法受欢迎、哪种搭配被顾客剩在盘子里。自动特征工程也一样:每一次评估都在缩小搜索范围,把“瞎猜”逐渐变成“懂得什么特征真正有用”。

f∗=arg⁡max⁡f∈C  Score(f)\displaystyle f^{*} = \arg\max_{f \in \mathcal{C}} \; \text{Score}(f)
自动特征工程本质上是在求解一个最优化问题:在候选特征空间 C 中,找到让评分函数 Score 最大的那组特征 f*。
  1. 候选空间(C)C 是所有可能特征组合的集合,规模通常巨大,相当于小刀案板上无限多种切法的集合。
    C\mathcal{C}
  2. 评分函数(Score)Score(f) 把一组特征 f 放进模型训练后得到的验证效果,是判断这套备料方案好不好的裁判。
    Score(f)\text{Score}(f)
  3. 最优特征集(f*)argmax 表示在候选空间中挑出评分最高的一组特征 f*,这就是机器人最终交出的备料方案。
    arg⁡max⁡f∈C\arg\max_{f \in \mathcal{C}}

开源工具实战:厨房里的现成机器人

你不需要从零造一个帮厨机器人——市面上已经有成熟的“小刀们”了。开源工具把特征生成的三大步骤封装成开箱即用的 API,就像买一台调试好的自动备料机,插上电就能用。

主流工具有两个代表:Featuretools 的核心是深度特征合成(Deep Feature Synthesis),它从实体关系表和聚合原语出发,自动生成跨表统计特征,比如“每个用户最近 30 天订单金额均值”;AutoFeat 专注于数值特征的搜索式组合与变换,自动尝试加减乘除、对数、指数等操作并内置特征选择。选型建议很直接:数据是多表关系型(电商订单、用户、商品),选 Featuretools;数据是单表数值型、需要大量交叉特征,选 AutoFeat 更轻快。

工具再好,也要看厨房适不适合。中餐厨房和西餐厨房配的刀具不一样,Featuretools 和 AutoFeat 也各有主场。自动特征工程让你从“手工备料”升级为“管理机器人备料”,把精力留给真正需要人类判断的地方。

fnew=primitive(x1,x2,…,xk)\displaystyle f_{\text{new}} = \text{primitive}(x_1, x_2, \ldots, x_k)
工具的本质是把“刀法”抽象成原语函数:对一组输入特征做聚合或变换,产出高层统计特征。
  1. 变换原语(primitive)primitive 是聚合或变换函数,比如求和、均值、最大值,相当于小刀的一招刀法。
    primitive\text{primitive}
  2. 输入特征组(x₁…x_k)参与聚合的 k 个原始特征,比如某个用户的所有订单金额组成的序列。
    x1,x2,…,xkx_1, x_2, \ldots, x_k
  3. 合成特征(f_new)原语作用后得到的新特征,直接表达“一组数据”的高层统计信息,模型不需要自己推算。
    fnewf_{\text{new}}

AI 应用场景

银行信贷风控:信用评分的自动化备料

阶段:特征生成与特征选择

解决的问题:传统风控建模中,信贷员经验决定构造哪些组合特征(如“收入/负债比”),人工构造耗时长、易遗漏重要交互项,且评审标准难统一。

具体案例:某银行用 Featuretools 自动从客户基本表、流水表、贷款表中合成数万个候选特征,再用嵌入法筛选出 200 个关键特征,最终评分卡 AUC 提升约 4%,建模周期从三周缩到三天。特征工程这顿“备料”,从老师傅凌晨四点的手工活,变成了机器人的流水线。

电商销量预测:时序特征的自动提炼

阶段:特征变换与自动化搜索

解决的问题:销量预测需要从历史销售、促销活动、节假日等多张表中提取时序统计特征,人工提取费时且难以覆盖所有窗口组合。

具体案例:某电商平台用 AutoFeat 自动生成“销量/价格”“折扣率×历史均值”等组合特征,并自动做对数变换压缩长尾分布,预测误差降低 12%。小刀切得越细,主厨的汤就越准。

Python 演示

python34 行
# 自动特征工程演示: 特征生成 + 特征选择 + 效果对比from sklearn.datasets import fetch_california_housingfrom sklearn.ensemble import RandomForestRegressorfrom sklearn.feature_selection import SelectKBest, f_regressionfrom sklearn.model_selection import cross_val_scorefrom sklearn.preprocessing import PolynomialFeatures def main():    # 1. 加载加州房价数据集(8 个原始特征)    data = fetch_california_housing()    X = data.data[:3000]    y = data.target[:3000]    print("原始特征维度:", X.shape[1])     # 2. 自动特征生成: 多项式组合扩展到 2 阶    gen = PolynomialFeatures(degree=2, include_bias=False)    X_gen = gen.fit_transform(X)    print("生成后特征维度:", X_gen.shape[1])     # 3. 过滤式特征选择: 按 F 检验保留前 20 个    selector = SelectKBest(f_regression, k=20)    X_sel = selector.fit_transform(X_gen, y)    print("选择后特征维度:", X_sel.shape[1])     # 4. 对比: 原始特征 vs 自动特征工程    model = RandomForestRegressor(n_estimators=30, random_state=42)    score_raw = cross_val_score(model, X, y, cv=3).mean()    score_auto = cross_val_score(model, X_sel, y, cv=3).mean()    print("原始特征 R2: %.4f" % score_raw)    print("自动特征工程 R2: %.4f" % score_auto)    print("提升幅度: %.2f%%" % ((score_auto - score_raw) / score_raw * 100)) if __name__ == "__main__":    main()
目的:用 60 行代码复现自动特征工程的核心流程——先自动生成组合特征,再自动筛选,最后对比原始特征验证效果。
  1. gen = PolynomialFeatures(degree=2, include_bias=False)自动生成两两相乘的高阶组合特征,像帮厨把食材做各种搭配
  2. X_gen = gen.fit_transform(X)把原始 8 个特征扩展成 44 个候选特征,生成环节完成
  3. selector = SelectKBest(f_regression, k=20)过滤法按 F 检验给每个候选特征打分,挑出前 20 个
  4. X_sel = selector.fit_transform(X_gen, y)完成从 44 个候选到 20 个精选的收缩,选择环节完成
  5. score_auto = cross_val_score(model, X_sel, y, cv=3).mean()3 折交叉验证得到稳定分数,避免单次划分的运气成分
  6. print("提升幅度: %.2f%%" % ...)输出自动化备料带来的收益,直观看到提升

常见误区

误区老工程师常说“特征工程是炼丹,全靠手感”。我总觉得特征是业务专家一个个想出来的,自动化工具顶多做个加减法,怎么可能生成有业务含义的特征?

正解自动特征工程并非瞎猜,而是把人类专家的思路结构化——组合、编码、变换、筛选这些“刀法”被抽象成可搜索的操作原语,机器在候选空间里暴力搜索加评估优化。它生成的特征未必有直观业务含义,但统计上有效。比如“面积×楼层÷房龄”这种人工很难想到的怪搭配,机器却能通过评分发现它的预测力。

为何常见:因为特征工程常和业务洞察绑定,人们误以为它必须由人脑完成,忽略了它本质上是一个“候选生成 + 择优”的搜索问题。

误区反正自动生成了 1000 个特征,那就全用上吧,多总比少强,万一删掉有用的怎么办?

正解特征并非越多越好。冗余特征增加训练成本,还带来“维度灾难”——高维空间中样本距离趋于均匀,模型更容易过拟合。这正是自动特征工程必须配上特征选择环节的原因。合适的做法是:生成大候选集,再用过滤法、包裹法或嵌入法精挑细选,而不是一股脑全塞给模型。

为何常见:直觉上信息越多越好,但忽略了噪声和维度膨胀对泛化能力的伤害。

误区都叫 Auto 了,直接把原始数据丢进去,缺失值、异常值、重复记录它应该都会搞定吧?

正解自动特征工程处理的是“怎么把已清洗的数据加工得更好”,而不是“把脏数据变干净”。缺失值、异常值、一致性错误会污染候选特征生成,让模型学到错误模式。数据清洗是前置工作,两者缺一不可——就像帮厨再聪明,也不能把发臭的肉变成好食材。

为何常见:工具宣传常强调“端到端自动化”,容易让人误以为整条数据管线都能自己跑,忽略了清洗和特征工程是不同的环节。

误区归一化和标准化不都是把特征缩小吗?一个叫 min-max 一个叫 z-score,反正效果差不多。

正解两者数学形式和应用场景不同。Min-Max 依赖最大值和最小值,把数据压到 [0,1],但受异常值影响大;Z-Score 用均值和标准差,缩放后均值为 0、方差为 1,对异常值更稳健。树模型对尺度不敏感可以不缩放,但距离类模型(KNN、SVM)和神经网络通常必须做变换。

为何常见:两个方法名字接近、目标都是改变尺度,初学者容易混为一谈,忽略了分布形态和异常值敏感度的差异。

面试题

Q1. 特征工程的本质是把原始数据加工成?

单选题 · easy

  • A.让模型输出更多的结果
  • B.让模型更容易学习的特征← 正确答案
  • C.让数据集变得更大更全
  • D.让训练速度飞快提升

答案:B。特征工程是把原始数据加工成模型更容易学习的特征,就像帮厨把食材洗切好,让主厨(模型)能直接下锅。A、C、D 分别说的是输出、数据量和训练速度,都不是备料工作本身。

Q2. 标准化(Z-Score)最核心的统计量是?

单选题 · easy

  • A.样本最大值和最小值
  • B.样本中位数和众数
  • C.样本均值和标准差← 正确答案
  • D.样本总个数和类别数

答案:C。Z-Score 标准化用均值 μ 和标准差 σ 把特征变成 (x-μ)/σ,如同按标准分量称量食材。最大值最小值属于归一化,中位数众数不是核心,样本数和类别数更是无关。

Q3. 下列哪种特征变换依赖数据的最大值和最小值?

单选题 · easy

  • A.标准分数标准化
  • B.对数非线性变换
  • C.独热编码类映射
  • D.最小最大值归一化← 正确答案

答案:D。最小最大值归一化(Min-Max)公式用到了 x_min 和 x_max,把数据压到 [0,1]。Z-Score 用均值和标准差,对数变换用 log(),独热编码是类别映射,都不依赖最大最小值。只有“按规格范围称量”的刀法才需要知道整批食材的边界。

Q4. 以下属于特征生成方法的有?

多选题 · mid

  • A.缺失值均值填补
  • B.数值特征相乘组合← 正确答案
  • C.类别特征独热编码← 正确答案
  • D.时间字段拆分提取← 正确答案

答案:BCD。相乘组合、独热编码、时间拆分都是从原始数据造出全新特征,属于特征生成。缺失值均值填补属于数据清洗,它的目标是修补数据而不是创造新特征。

Q5. 过滤法、包裹法、嵌入法属于特征工程的?

单选题 · mid

  • A.特征生成阶段
  • B.数据清洗阶段
  • C.特征选择阶段← 正确答案
  • D.特征变换阶段

答案:C。这三类方法都是从海量候选中挑选有用特征,属于特征选择阶段。特征生成发生在选择之前,变换处理的是尺度,清洗在更前面。就像“挑菜”发生在“切菜”之后、下锅之前。

Q6. 自动特征工程算法的完整闭环通常包括?

多选题 · mid

  • A.手动设置全部超参
  • B.自动生成候选特征← 正确答案
  • C.用验证集评估效果← 正确答案
  • D.循环迭代寻优改进← 正确答案

答案:BCD。自动特征工程是“生成候选→评估→迭代”的闭环:先造候选特征,再用验证集打分,最后按反馈迭代优化。手动设置超参属于人工调参,恰恰是自动化想要替代的部分。

Q7. 包裹式特征选择相比过滤式的核心优势是?

单选题 · hard

  • A.计算开销低而且速度快
  • B.适合同样超大维的特征集
  • C.直接针对模型效果寻优← 正确答案
  • D.完全无需训练任何模型

答案:C。包裹法把特征子集放进模型训练看效果,直接针对模型优化,理论上更贴合模型;过滤法只用统计量,不经过模型。A、B 是过滤法的优点,D 是错误认知——包裹法恰恰需要反复训练模型,计算代价很高。

Q8. 特征维度爆炸引发“维度灾难”的主要原因是?

单选题 · hard

  • A.特征变多数据自动变多
  • B.样本距离趋于均匀过拟合← 正确答案
  • C.所有特征都会变成常量
  • D.训练时间一定显著缩短

答案:B。维度灾难指高维空间中样本分布稀疏、彼此距离趋于均匀,模型难以学到规律而容易过拟合。A、C、D 都是错误直觉。就像备料种类太多,每种食材平均分到的分量稀薄,反而做不出一道完整的菜。

Q9. 关于自动特征工程工具的说法,正确的是?

多选题 · mid

  • A.选型需要结合业务场景← 正确答案
  • B.工具可以取代全部数据清洗
  • C.Featuretools 能深度合成特征← 正确答案
  • D.AutoFeat 会搜索组合变换← 正确答案

答案:ACD。Featuretools 的核心是深度特征合成(DFS),AutoFeat 会搜索数值组合变换,工具选型确实要结合业务场景的数据形态。但工具不能取代数据清洗,脏数据依然需要人工处理。

Q10. 梯度提升树在做特征选择时,倾向于选中?

单选题 · extreme

  • A.特征总数更少的类型
  • B.出现次序最早的特征
  • C.随机分布生成的噪声
  • D.分裂增益更高的特征← 正确答案

答案:D。梯度提升树按分裂增益(不纯度下降)挑选划分特征,增益高的特征对预测贡献大,更容易作为重要特征被选中。特征总数、出现次序和随机噪声都不是树模型选特征的依据。就像主厨挑食材,只看它能不能提味,不看它在案板上摆在哪个位置。