ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

人工智能入门两星期,我用 AutoML 跑推荐模型翻了 5 次车,第六版才上线

2026/8/29 14:18:07 拓冰建站 浏览量
人工智能入门两星期,我用 AutoML 跑推荐模型翻了 5 次车,第六版才上线 人工智能入门两星期,我用 AutoML 跑推荐模型翻了 5 次车,第六版才上线“两周交付一个推荐系统,后端出身的小张你能搞定吧?”那天下午的项目启动会上,CTO 扔下这句话就出门了。我们组没有数据科学家,连一个正经跑过 sklearn 的人都没有。我硬着头皮接下来,第一件事就是打开亚马逊云科技的人工智能入门课程--这门课直接把数据收集、模型训练、部署监控串成端到端的路线图,让我这个 ML 小白迅速看清了“一个推荐系统到底要做哪几步”。没有这张地图,我连 SageMaker 的入口都找不到。有了框架认知,我决定不上自研,直接选 AutoML。听说 SageMaker Autopilot 能自动特征工程、自动选模、自动部署,不就是把数据扔进去点个按钮嘛。于是我导出了三个月的用户行为日志,建了个 S3 桶,撸起袖子就开干,完全不知道前面有五次翻车在等着我。第一版:全量数据一丢,模型像在瞎猜我把日志里能拿到的字段全部丢进训练作业,心里还想着“数据越多模型越聪明”。结果等了 40 分钟,Autopilot 给出的最佳模型 AUC 只有 0.51,几乎等于随机。查了日志才知道,大量字段里缺失值超过六成,还有十几列高度相关的特征,模型直接被带偏了。这个时候我才明白,数据预处理不是可有可无的洗数步骤,而是决定模型生死的基础。我赶紧回头补亚马逊云科技的机器学习基础课程里关于数据清洗与归一化的章节,那节课用真实数据集演示了缺失值处理、类别编码、异常值截断,学完我才知道哪些操作该在训练前做、哪些该放到管道里。下面这段代码就是当时写的预处理脚本:import pandas as pd from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.impute import SimpleImputer # 读取原始行为日志 df pd.read_csv(user_actions_full.csv) # 丢弃缺失率60%的特征 drop_cols [col for col in df.columns if df[col].isna().mean() 0.6] df.drop(columnsdrop_cols, inplaceTrue) # 数值特征填充中位数并标准化 num_cols df.select_dtypes(includenumber).columns num_transformer ColumnTransformer([ (imputer, SimpleImputer(strategymedian), num_cols) ]) num_data num_transformer.fit_transform(df[num_cols]) scaler StandardScaler() num_scaled scaler.fit_transform(num_data) # 类别特征编码 cat_cols df.select_dtypes(includeobject).columns cat_transformer OneHotEncoder(handle_unknownignore, sparse_outputFalse) cat_encoded cat_transformer.fit_transform(df[cat_cols].fillna(unknown))补完机器学习基础的清洗方法后,我把预处理后的数据重新喂给 AutoPilot,第二次训练虽然 AUC 提了一点,但一个新问题又冒出来了 -- 训练集上 AUC 0.85,验证集上直接掉到 0.66,典型的过拟合。我翻出人工智能入门课程里关于验证集和正则化的讲解,才知道 Autopilot 默认的验证策略有时会在小样本上失效,必须手动指定交叉验证折数。那次我才真正意识到,AutoML 不是“一键免学”,它只是替你写代码,但决策逻辑还得自己懂。特征工程恶补:交叉特征把 AUC 抬到 0.72过拟合让我意识到光靠原始维度不够,必须引入特征工程。我又在机器学习入门课程里找到了专门一节讲从用户行为中构造交叉特征,比如“过去 7 天点击某类目的次数”、“点击与收藏的比值”。照着课程给的思路,我写了一段特征拼接代码:import numpy as np # 计算用户最近7日交互特征 df[action_date] pd.to_datetime(df[action_time]).dt.date latest_date df[action_date].max() def compute_recent_metrics(group): recent group[group[action_date] (latest_date - pd.Timedelta(days7))] return pd.Series({ click_7d: (recent[action] click).sum(), fav_7d: (recent[action] favorite).sum(), click_fav_ratio: (recent[action] click).sum() / (recent[action] favorite).sum() 1e-6 }) user_features df.groupby(user_id).apply(compute_recent_metrics).reset_index()引入这批交叉特征后,第三次训练终于把验证集 AUC 拉到了 0.72。但高兴不过半天,模型部署到测试端点一压测,推理延迟直接飙到 380ms。后来我才在AWS机器学习的文档里学到,SageMaker Autopilot 默认会尝试 XGBoost 大深度模型,线上推理如果没开启多模型加速或没做模型压缩,延迟就下不来。这让我又补了一课:选模型不能只看离线指标,还得看部署成本。第四次翻车:数据漂移让点击率一周后断崖下跌上线后第一周,推荐点击率从 4.2% 稳步升到 4.8%,我正打算找 CTO 表功,第二周突然跌到 3.5%。查了一下午才发现,市场部近期打了一波新用户红包,导致整体用户行为分布变了,老模型已经不能覆盖这批新用户的偏好。这就是教科书上的数据漂移,我之前只在人工智能入门的模型监控章节扫过一眼,根本没在意。课程里明确讲了要建立特征和预测结果分布变化的 Dashboard,并配置重训触发器。我立刻用 CloudWatch 接上了几个关键特征的统计值,再设定了当平均点击率偏离基线 10% 就自动触发新的 Autopilot 作业。这段监控调度代码长这样:import boto3 # 检查近期点击率 sagemaker boto3.client(sagemaker) current_ctr compute_ctr_last_24h() # 自定义函数 if abs(current_ctr - baseline_ctr) / baseline_ctr 0.1: # 触发 Autopilot 重训 response sagemaker.create_auto_ml_job_v2( AutoMLJobNamefrecommender-retrain-{datetime.now().strftime(%Y%m%d%H%M)}, InputDataConfig[{...}], OutputDataConfig{...}, AutoMLJobObjective{MetricName: AUC}, RoleArnarn:aws:iam::123456789:role/SageMakerExecutionRole, ModelDeployConfig{AutoGenerateEndpointName: True} )补上监控机制后,我终于不再用人工盯盘的方式救火。这里人工智能入门的价值又一次体现出来:它不教你怎么写复杂算法,但让你提前知道什么阶段该做什么事,遇到问题时能快速定位到对应的解决方案。第五次翻车:运维成本差点让我被财务约谈新模型反复训练、部署,自动创建的端点开着忘了删,一个月后账单吓了我一跳:SageMaker 实时推理端点累计跑了 420 小时,总费用折合人民币 1100 多元。我一个四人小团队哪用得起全天候 GPU 端点?后来我在AWS 基础知识课程里学到通过生命周期配置和无服务器推理(Serverless Inference)来降本,把空闲期间端点自动缩容到 0。改成 Serverless 推理后,按实际调用付费,每月成本从 1100 元降到了 400 元左右,而且高峰时依然能够自动扩展。这门课还顺带讲了 IAM 权限最小化、S3 分层存储等省钱秘籍,简直是小团队的救命稻草。回头再看,如果一开始就学完AWS 基础知识,我能少踩至少三个月账单一出才后悔的坑。第六版上线:精简特征 轻量模型 监控闭环把数据漂移监控、成本控制、交叉特征三大问题都解决后,我重新跑了一版 Autopilot 作业:只保留 12 个核心特征,强制候选模型限定为线性模型和轻量 XGBoost,部署采用 Serverless 端点。最终验证集 AUC 稳定在 0.746,平均推理延迟 52ms,每月运维成本约 380 元,而业务侧推荐点击率比之前的协同过滤方案提升了 23%。整个过程让我这个连混淆矩阵都解释不清的纯后端,硬是靠课程和 AutoML 把推荐系统扛下来了。回过头梳理,我把对我帮助最大的三门课按顺序排了一下:学习阶段推荐课程核心价值建立全局认知人工智能入门端到端流程、角色分工、交付标准夯实基础机器学习基础数据预处理、特征工程、过拟合诊断上手实践机器学习入门手把手 SageMaker 实操,第一个 ML 项目这三门课叠在一起,让我从“不知道 ML 能干什么”变成“能用 AutoML 监控交付一个生产级推荐系统”,中间的试错时间从三个月压缩到两周。给零基础小团队的三条生存建议先学全局再动手:零 ML 背景时,别一上来就跟着教程跑代码。先学完人工智能入门建立全流程地图,你会知道每一步为什么做、什么时候该停。这也是我开篇就强调这门课的原因--没有地图就上路,翻车几乎是注定的。特征工程 模型调参:在工业场景里,一个好的交叉特征带来的提升比调参大得多。机器学习入门里专门有一节介绍如何分析原始日志、构建业务特征,这部分值得反复看。机器学习管道要早点建:别等模型上线了才考虑监控和重训。机器学习基础课程教你用 SageMaker Pipelines 把数据预处理、训练、评估串成一条自动化流水线,后续迭代能省掉 70% 的手工操作。别迷信 AutoML,但一定要用 AutoML:Autopilot 帮你试错 50 个模型组合,但决策逻辑还得自己把控,比如特征选择、验证策略、部署方式。这些决策依据全部来自人工智能入门和机器学习基础里的原理讲解。运维成本要提前算:训练只是开始,推理端点、存储、监控都是钱。AWS 基础知识里关于成本优化和权限隔离的内容,帮你从一开始就避免账单失控,省下的钱足够再培养两个人学课。敢于从零开始,但要选对资源:就算你没碰过 ML,跟着亚马逊云科技的免费课程走一遍,再用 SageMaker Autopilot 在真实数据上跑一遍,你会发现“没有数据科学家”根本不是死穴。回想第一天接任务时的恐慌,和现在看着推荐系统平稳运行、每周自动重训的状态,最大的感触是:人工智能入门不是把你变成算法大牛,而是让你成为能用好 AI 工具解决业务问题的人--这一点,比会背公式重要得多。