GitHub Copilot 写推荐系统把用户推远了,补完机器学习入门才看懂特征工程

发布时间:2026/9/1 14:25:44
GitHub Copilot 写推荐系统把用户推远了,补完机器学习入门才看懂特征工程 GitHub Copilot 写推荐系统把用户推远了,补完机器学习入门才看懂特征工程项目上线后第一次周会,产品经理把数据丢过来:新上线的“猜你喜欢”模块,用户点击率比旧规则还低了 15%,页面跳出率反而涨了 20%。我当时就懵了--因为整个推荐逻辑是我靠着 GitHub Copilot 在三个下午里“拼”出来的,代码跑通了,测试集上相似度看着也不错,谁会想到上线后变成赶客功能。我翻出那段协同过滤代码,除了矩阵乘法和余弦相似度,完全看不出哪里有问题。GitHub Copilot 能帮我飞快补全函数体,但它不会告诉我“为什么是余弦距离”“特征值要不要归一化”“冷启动怎么处理”。复盘会后我做了个决定:先暂停靠 AI 补全写 ML 代码,扎扎实实去补一门机器学习入门--这门课后来帮我厘清了从数据到部署的完整链路,少走了至少三个月的弯路。用 Copilot 拼出推荐系统的那三天当初转行念头很简单:我在一家电商公司做了三年后端,天天跟订单接口、缓存架构打交道。2024 年底各种 AIGC 工具刷屏,Leader 在例会上提了一句“我们也要在系统里加智能推荐”,我就自告奋勇接了。当时想的是,有 GitHub Copilot,写个推荐算法不就是几行代码的事吗?我让 GitHub Copilot 生成了一个基于物品的协同过滤函数,思路是计算用户最近浏览商品和其他商品的余弦相似度,排序后推送给前端。代码不到 80 行就搞定了,本地用历史日志跑了一遍,前 10 推荐里确实出现了同类商品,我心想机器学习不过如此。# 最早的推荐代码:不做特征工程,不处理缺失值 import numpy as np from sklearn.metrics.pairwise import cosine_similarity user_item_matrix np.loadtxt(user_item.csv, delimiter,) item_similarity cosine_similarity(user_item_matrix.T) def recommend(user_id, top_k10): user_vec user_item_matrix[user_id] scores user_vec.dot(item_similarity) recommended np.argsort(scores)[::-1][:top_k] return recommendedGitHub Copilot 补完了数组切片、相似度计算、排序返回的每一行注释,我几乎没查文档。但这段代码把用户行为只做成了 0/1 矩阵,完全没考虑浏览时长、加购、价格区间这些信号--我当时根本没意识到这些叫特征工程,更不知道缺少它们会让推荐结果偏向热门商品,反而把长尾优质内容挤掉。点击率跌了 15%,我才发现缺的不只是代码上线第一周,点击率持续下滑。我开始怀疑是缓存策略或者接口耗时,调了三天性能参数毫无改善。直到产品经理拉出行为漏斗:大量用户收到推荐后直接跳失,原来推的是他们已经买过的同款,或者完全不相关的品类。GitHub Copilot 能写出语法完美的 Python,但它不理解业务上下文。于是我去查资料,看到一篇博客提到“推荐系统上线前必须做数据预处理和数据漂移检测”,当时这两个词对我完全陌生。我又翻到一门机器学习基础课程的目录--它从数据清洗、缺失值处理讲到模型评估,我才发现自己的认知差了一整条机器学习管道。GitHub Copilot 帮我省了写代码的时间,却掩盖了一个致命问题:我根本不知道一个好的机器学习项目应该包含哪些阶段。那时同事问我“你的验证集怎么划分的”“有没有看过混淆矩阵”,我连混淆矩阵是什么都说不清楚。被准确率骗了,我才明白什么叫过拟合不甘心就这么认输,我又用 GitHub Copilot 写了一个逻辑回归分类器,试图预测用户是否会点击某个商品。这次我加上了用户年龄段、设备类型作为特征,训练集准确率冲到 97%,我兴奋地把模型打包准备上线。但这一次,测试经理在 staging 环境压测时,AUC 只有 0.61,比随机猜好不了多少。我突然想起之前扫过的机器学习入门课程里提到一句话:“准确率不是唯一指标,尤其在样本不均衡时。”我硬着头皮开始补机器学习基础知识,才看懂那条经典的蓝色橙色曲线就是 ROC,而我的模型在训练集上过度学习了少数类别,成了典型的过拟合。# 补完课后重新做的评估代码 from sklearn.metrics import confusion_matrix, roc_auc_score, classification_report y_pred model.predict(X_test) print(Confusion Matrix:\n, confusion_matrix(y_test, y_pred)) print(AUC Score:, roc_auc_score(y_test, model.predict_proba(X_test)[:,1])) print(classification_report(y_test, y_pred))这段代码现在看很基础,但当时我连classification_report里的 precision 和 recall 都分不清。GitHub Copilot 能帮我把这三行自动补全,却不能让我理解为什么 precision 高而 recall 低时,推荐系统会把大部分好商品漏掉。放下 Copilot,我从机器学习入门开始重走一遍连栽两次跟头之后,我暂停了项目,在亚马逊云科技机器学习学习路径上找到了一门机器学习入门课程。它用实际案例带我走通整个机器学习管道:从定义业务问题、收集数据、数据预处理、特征工程,到模型训练、超参调优、评估部署。最让我受益的是课程里的动手实验--在 AWS 控制台上创建一个 SageMaker 笔记本实例,按照AWS基础知识指引配置 IAM 角色和 S3 存储桶,然后一步步完成一个完整的电影推荐项目。之前我只会在本地跑脚本,根本不懂云上训练的安全分层和成本控制。这门机器学习课程让我把零散的知识点串成了可落地的流程。学到一半我突然理解:GitHub Copilot 就像一个会写字的笔,但如果你不会造句、不懂语法,笔是写不出好文章的。接着我又补了机器学习基础,把特征存储、模型版本管理、数据漂移监控这些工程化概念补上。以前我写的代码里,训练数据和线上数据完全是两套分布,却从来没做过数据一致性校验--这就是为什么模型在离线表现良好,上线就失效的根本原因。第二次上线,我主导了整个推荐管线六个月后,我重新提了一个推荐系统改造项目。这次不再依赖 GitHub Copilot 替我完成所有函数,而是先定义特征清单:用户过去 7 天的搜索词、价格偏好区间、品类跳转频率。我用 Pandas 做数据预处理,对连续特征做标准化,对类别特征做 One-Hot 编码,再用 SelectKBest 做特征筛选--这些都是在机器学习入门和后续AWS机器学习实验中反复练过的。# 学完课后自己写的特征工程代码 from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.feature_selection import SelectKBest, f_classif scaler StandardScaler() X_num scaler.fit_transform(df[[price_avg,freq_7d,session_len]]) enc OneHotEncoder(handle_unknownignore) X_cat enc.fit_transform(df[[device,city_tier]]) X np.hstack([X_num, X_cat.toarray()]) selector SelectKBest(f_classif, k20) X_new selector.fit_transform(X, y)GitHub Copilot 仍然在 IDE 里辅助我,但这次我是先写出注释描述特征逻辑,再让它补全实现,然后逐一核对每个变换步骤的数学意义。模型上线前,我用混淆矩阵和 ROC 曲线做了离线评估,又在灰度环境监控了数据漂移指标。最终,新版推荐系统上线后,用户点击率提升了 12%,加购率提升了 8%。产品经理问我这次怎么没崩,我说:“因为这次我不是在写推荐代码,而是在构建机器学习管道。”给非科班入行 AI 的 5 条实操建议如果你也跟我一样,看到 AIGC 工具遍地就想冲进去写模型,下面几条是踩坑换来的经验:第一门课别选深度学习,选机器学习入门没有特征工程、模型评估的基础,直接扎进神经网络只会更快放弃。机器学习入门这门课用实际项目帮你建立完整的管线思维,比零散刷视频有效得多。GitHub Copilot 是助手,不是导师在学完机器学习基础之前,尽量别让它替你写完整算法。可以先手写思路,再用它补全,逐步验证。动手前先搞懂数据预处理和特征工程这两个环节占实际项目 70% 以上的时间。如果没有系统学过数据预处理和特征工程,任何模型都可能是垃圾进垃圾出。把模型评估指标刻在脑子里准确率、精确率、召回率、F1、AUC--这些必须能闭着眼推导。机器学习入门里的评估章节会详细讲解混淆矩阵,千万别跳过。先在云上跑一次完整流程用亚马逊云科技机器学习的免费层级创建笔记本实例,按照AWS基础知识配置权限,从头到尾做一次数据上传、训练、评估、部署。这会让你真正理解工业界 ML 的全貌。补完这些基础后,GitHub Copilot 对我来说才真正变成了提效工具,而不是掩盖无知的遮羞布。如果你也正站在非科班转 AI 的路口,不妨先把那门机器学习入门点开--它可能就是让你少加班三个月的关键。