ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

教育SaaS中AI学情诊断系统设计从特征工程到推理优化的实战踩坑

教育SaaS中AI学情诊断系统设计从特征工程到推理优化的实战踩坑

背景

最近在做一个教育SaaS产品的学情诊断模块,目标是根据学生的答题记录、学习行为数据,自动生成个性化的学习建议。做到一半发现网上的参考方案大多是理论层面的,真正落地时遇到的问题远比想象中多。把踩过的坑记录下来,给同行参考。

整体架构

系统分三层:

数据采集层:负责收集学生的答题记录、视频观看时长、作业提交时间、错题分布等原始数据。

特征工程层:把原始数据加工成模型可用的特征向量。

推理服务层:调用大模型API,结合特征向量生成诊断报告。

数据采集层的坑

第一个坑是数据完整性问题。

教育场景下数据缺失非常普遍。学生可能漏做作业、中途退出视频、请假缺课。如果直接用缺失数据做特征,模型输出会很不稳定。

解决方案是做数据插值,但不能用简单的均值填充。我们用的是基于学生历史表现的中位数填充,比全局均值更准确。具体来说,如果一个学生某天的答题数据缺失,就用他过去七天同类题型的中位数表现来填补。

代码片段:

def fill_missing(data, student_id, date, feature): history = data[ (data.student_id == student_id) & (data.feature == feature) & (data.date >= date - timedelta(days=7)) & (data.date < date) ] if len(history) == 0: return global_median(feature) return history.value.median()

第二个坑是时区问题。我们的系统服务全国机构,不同地区学生在同一天的学习行为,时间戳可能差好几个小时。如果不做时区对齐,晚上的学习行为可能被归到第二天的数据里。

解决方法是在数据入库时就统一转成UTC时间,展示时再按用户时区转换。听起来很简单,但我们上线后第一周就因为这个问题导致诊断报告里的学习时间段全错了。

特征工程层的坑

特征工程是整个系统最花时间的部分。我们最终定义了四大类特征:

行为特征:日均学习时长、学习时段分布、连续学习天数。

答题特征:正确率、平均答题时长、错题集中分布。

进度特征:课程完成度、作业按时提交率、预习完成率。

社交特征:课堂互动频次、提问次数。

第三个坑是特征冗余。一开始我设计了三十多个特征,后来发现很多特征之间相关性很高。比如日均学习时长和连续学习天数,这两个特征都反映学习持续性,同时使用反而会让模型困惑。

最终通过相关性分析砍到了十五个核心特征。用Pearson相关系数做过滤,阈值设为0.85以上就保留一个:

def filter_redundant_features(df, threshold=0.85): corr_matrix = df.corr() features_to_drop = set() for i in range(len(corr_matrix.columns)): for j in range(i): if abs(corr_matrix.iloc[i, j]) > threshold: colname = corr_matrix.columns[i] features_to_drop.add(colname) return df.drop(columns=list(features_to_drop))

推理服务层的坑

推理层我们调用的是第三方大模型API,把特征向量组装成prompt,让模型生成诊断报告。

第四个坑是prompt长度控制。十五个特征如果每个都详细描述,prompt会非常长,导致token成本飙升。我们做了特征压缩,只把异常值和关键趋势传给模型,正常范围内的特征只传摘要。

比如某学生日均学习时长是45分钟,系统判断这个值在正常范围内,就只传"学习时长正常"。但如果某天突然降到10分钟,就把这个异常点详细传给模型。

这个优化让单次推理的token消耗降低了百分之六十左右。

第五个坑是推理延迟。大模型API的响应时间不稳定,快的时候两三秒,慢的时候十几秒。如果学生在端上等诊断报告,十几秒的等待体验非常差。

解决方案是异步生成加缓存预生成。学生提交答题后,系统先返回一个正在生成的提示,后台异步调用API。同时,对于高频场景(比如某年级某单元的诊断),系统会提前预生成一批模板报告,命中缓存时直接返回。

性能数据

上线后跑了一个月的数据:

日均诊断请求量:约3500次 平均响应时间:缓存命中1.2秒,未命中8.7秒 缓存命中率:百分之七十二 单次推理成本:优化前0.12元,优化后0.05元

总结

做教育场景的AI应用,最大的挑战不是模型能力,而是数据质量和工程优化。教育数据天然存在缺失多、噪声大、分布不均的问题,如果不在数据层做好处理,再强的模型也白搭。

另外推理成本是真金白银,每一个不必要的token都是钱。在prompt设计和缓存策略上多花心思,比换更大的模型管用得多。

返回列表