搜广推校招面经七十八
字节推荐算法
一、实习项目:多任务模型中的每个任务都是做什么?怎么确定每个loss的权重
这个根据实际情况来吧。如果实习时候用了moe,就可能被问到。
loss权重的话,直接根据任务的重要性吧。。。
二、特征重要性怎么判断的?
2.1. 基于树模型的方法(Model-based Methods)
在使用树模型(如 XGBoost、LightGBM、CatBoost)时,通常有多种方式可以计算 feature_importance_
2.1.1. Gain(信息增益)
- 定义:每个特征在树结构中带来的信息增益(或损失函数的减少量)之和。
- 特点:反映了特征对模型性能提升的“贡献度”。
- 优点:精度较高,考虑了每次分裂的效果。
- 劣势:容易偏向使用频率较低但效果突出的特征。
2.1.2. Split(或 Weight / Frequency)
- 定义:每个特征被用作分裂点的次数。
- 特点:反映了特征在树中“被使用的频率”。
- 优点:实现简单,速度快。
- 劣势:不考虑每次使用带来的好处(信息增益大小),可能高估某些无效但频繁使用的特征。
2.1.2. Cover(覆盖度)
- 定义:使用该特征进行分裂的样本权重的总和(即覆盖的样本量)。
- 特点:用于衡量特征使用时影响的样本规模。
- 优点:结合了使用频率和样本量。
- 劣势:对结果的解释性不如 Gain 明确。
2.2. 基于模型不确定性的分析
2.2.1. SHAP (SHapley Additive exPlanations)
- 利用博弈论中 Shapley Value 分析每个特征对模型输出的贡献,支持大多数模型(树模型、神经网络、线性模型)
2.2.2. LIME (Local Interpretable Model-agnostic Explanations)
- 基于局部线性模型的解释方法,对每个预测样本提供局部特征重要性
2.3. Permutation Importance(置换重要性)
- 打乱某一特征,看模型性能下降多少(需要做很多次,求平均)
2.4. 消融实验
- 删除某一特征,观察模型性能的下降程度
2.5. 基于回归模型系数的方法
- 逻辑回归、线性回归中的系数大小表示特征重要性。简单讲就是y = wx+b的w。
三、谈谈推荐模型中的SENet(Squeeze-and-Excitation Networks)
SENet本身并不直接进行特征选择(即不删除不重要的特征),而是通过重新标定特征的重要性来间接影响模型的学习过程。但是其实我们可以将SENet的的门控参数当作特征重要度用。
SENet的通道注意力思想被引入到多特征交互建模中,动态地学习不同特征的重要性。
3.1. SENet 结构模块
3.1.1. Squeeze(压缩)
对每个通道(对应推荐系统中的每个嵌入向量)做全局平均池化,提取通道级的全局信息。
- 输入维度:
(batch_size, num_fields, embedding_dim) - 输出维度:
(batch_size, embedding_dim)
3.1.2. Excitation(激励)
通过一个两层的全连接网络(MLP)建模特征之间的关系,输出每个特征维度的权重。
- 通常包含 ReLU 激活 + Sigmoid
- 可视为一个门控机制,学习特征维度的重要性
3.1.3. Scale(缩放)
将激励模块生成的权重乘回原始特征,实现特征重标定。
3.2. 在推荐模型中的应用
SENet是一个很方便的模块,即插即用。推荐系统中的输入通常是多个类别特征的 embedding(嵌入向量),SENet 可以作用于这些向量,对不同特征分配动态的权重。
import torch
import torch.nn as nn
import torch.nn.functional as F class SEBlock(nn.Module): def __init__(self, num_channels, reduction_ratio=4): super(SEBlock, self).__init__() self.avg_pool = nn.AdaptiveAvgPool1d(1) # 对于1D特征(如嵌入向量) self.fc = nn.Sequential( nn.Linear(num_channels, num_channels // reduction_ratio, bias=False), nn.ReLU(inplace=True), nn.Linear(num_channels // reduction_ratio, num_channels, bias=False), nn.Sigmoid() ) def forward(self, x_input): b, f, size = x_input.size() y = self.avg_pool(x_input).view(b, f) gate = self.fc(y).view(b, f, 1) return x_input * gate
四、特征共线性无法计算重要度怎么处理?
特征共线性 指的是多个特征之间存在高度相关性,
- 这种冗余关系会使得模型在估计每个特征贡献时,共线特征会分摊重要性,使它们看起来都不重要。
- 但特征共线性问题其实只是对 线性模型(如线性回归、逻辑回归)会产生影响。
4.1. 降低共线性
- 删除冗余特征
- 主成分分析(PCA):通过 PCA 将共线特征压缩成无关主成分,再做重要性分析
- 加入正则化
4.2. 选择对特征共线性不敏感的树模型或者其他的特征重要性检测方法
五、负样本不均衡怎么处理?负采样后怎么保证预估值正常?
在推荐系统中正负样本极度不均衡 是常见问题:
- 正样本(如点击、购买)远少于负样本(未点击、未购买)不处理会导致模型偏向负类,召回率低;但直接负采样可能影响模型输出概率的解释性
5.1. 如何保证负采样后的预估值正常?
方法一:调整 loss 中的 sample weight
- 给每个样本赋予一个权重,权重反映它在真实分布中的代表性
# 例如真实负样本比例为 99%,采样比例为 10%
# 则负样本需要乘以一个调整系数 alpha ≈ 99 / 10
sample_weight = np.where(y == 1, 1.0, alpha)
model.fit(X, y, sample_weight=sample_weight)
方法二:手动调整输出概率
p = p̂ * r / [ p̂ * r + (1 - p̂) * (1 - r') / (1 - r) ]
- p̂:采样后训练输出的概率
- r:采样前的正负样本比
- r’:正负样本比
- P⁺:真实正样本概率
六、199. 二叉树的右视图

- 代码:这道题,会写层序遍历,那么就很简单了
class Solution:def rightSideView(self, root: Optional[TreeNode]) -> List[int]:'''层序遍历取每层的第一个'''if not root: return []res = []queue = collections.deque()queue.append(root)while queue:tmp_res = []for _ in range(len(queue)):node = queue.popleft()tmp_res.append(node.val)if node.left:queue.append(node.left)if node.right:queue.append(node.right)res.append(tmp_res[-1])return res
相关文章:
搜广推校招面经七十八
字节推荐算法 一、实习项目:多任务模型中的每个任务都是做什么?怎么确定每个loss的权重 这个根据实际情况来吧。如果实习时候用了moe,就可能被问到。 loss权重的话,直接根据任务的重要性吧。。。 二、特征重要性怎么判断的&…...
广搜bfs-P1443 马的遍历
P1443 马的遍历 题目来源-洛谷 题意 要求马到达棋盘上任意一个点最少要走几步 思路 国际棋盘规则是马的走法是-日字形,也称走马日,即x,y一个是走两步,一个是一步 要求最小步数,所以考虑第一次遍历到的点即为最小步数ÿ…...
强化学习算法系列(六):应用最广泛的算法——PPO算法
强化学习算法 (一)动态规划方法——策略迭代算法(PI)和值迭代算法(VI) (二)Model-Free类方法——蒙特卡洛算法(MC)和时序差分算法(TD) (三)基于动作值的算法——Sarsa算法与Q-Learning算法 (四…...
Vue3 + TypeScript中provide和inject的用法示例
基础写法(类型安全) typescript // parent.component.vue import { provide, ref } from vue import type { InjectionKey } from vue// 1. 定义类型化的 InjectionKey const COUNTER_KEY Symbol() as InjectionKey<number> const USER_KEY Sy…...
AI Agents系列之AI代理架构体系
1. 引言 智能体架构是定义智能体组件如何组织和交互的蓝图,使智能体能够感知其环境、推理并采取行动。本质上,它就像是智能体的数字大脑——集成了“眼睛”(传感器)、“大脑”(决策逻辑)和“手”(执行器),用于处理信息并采取行动。 选择正确的架构对于构建有效的智能…...
3个实用的脚本
1. Linux 系统清理临时文件脚本 该脚本用于清理系统中 /tmp 目录下超过 7 天的临时文件。 #!/bin/bash# 清理 /tmp 目录下超过 7 天的文件 find /tmp -type f -atime 7 -exec rm -f {} \;# 清理 /var/tmp 目录下超过 7 天的文件 find /var/tmp -type f -atime 7 -exec rm -f {…...
2025海外代理IP测评:Bright Data,ipfoxy,smartproxy,ipipgo,kookeey,ipidea哪个值得推荐?
近年来,随着全球化和跨境业务需求的不断扩大“海外代理IP”逐渐成为企业和个人在多样化场景中的重要工具。无论是进行数据采集、广告验证、社交媒体管理,还是跨境电商平台运营,选择合适的代理IP服务商都显得尤为重要。然而,市场上…...
条款13:以对象管理资源
什么是资源?内存?没错但是内存只是我们需要管理众多资源的一种,资源还包括数据的连接,文件描述符,互斥锁,网络套接字,不管哪种资源他都是从系统中获取的,当你不在需要他的时候是要还…...
Android守护进程——Vold (Volume Daemon)
简介 介绍:Vold 是用来管理 android 系统的存储设备,如U盘、SD卡、磁盘等移动设备的热插拔、挂载、卸载、格式化 框架结构:Vold 在系统中以守护进程存在,是一个单独的进程。处于Kernel和Framework之间,是两个层级连接…...
vue3+vite 实现.env全局配置
首先创建.env文件 VUE_APP_BASE_APIhttp://127.0.0.1/dev-api 然后引入依赖: pnpm install dotenv --save-dev 引入完成后,在vite.config.js配置文件内加入以下内容: const env dotenv.config({ path: ./.env }).parsed define: { // 将…...
AI 组件库是什么?如何影响UI的开发?
AI组件库是基于人工智能技术构建的、面向用户界面(UI)开发的预制模块集合。它们结合了传统UI组件(如按钮、表单、图表)与AI能力(如机器学习、自然语言处理、计算机视觉),旨在简化开发流程并增强…...
【AI模型学习】关于写论文——论文的审美
文章目录 一、“补丁法”(Patching)1.1 介绍1.2 方法论1.3 实例 二、判断工作的价值2.1 介绍2.2 详细思路2.3 科研性vs工程性 三、novelty以及误区3.1 介绍3.2 举例 看了李沐老师的读论文系列后,总结三个老师提到的有关课题研究和论文写作的三…...
OpenCV day6
函数内容接上文:OpenCV day4-CSDN博客 , OpenCV day5-CSDN博客 目录 平滑(模糊) 25.cv2.blur(): 26.cv2.boxFilter(): 27.cv2.GaussianBlur(): 28.cv2.medianBlur(): 29.cv2.bilateralFilter(): 锐…...
AI的出现,是否能替代IT从业者?
一、技术能力的边界:AI 能做什么? 自动化基础任务 代码生成:GitHub Copilot、天工 AI 等工具可自动生成 80% 以上的重复性代码,例如根据自然语言描述生成完整的网站前端代码。测试与运维:AI 驱动的测试工具能自动生成测…...
【AI飞】AutoIT入门七(实战):python操控autoit解决csf视频批量转换(有点难,AI都不会)
背景: 终极目标:通过python调用大模型,获得结果,然后根据返回信息,控制AutoIT操作电脑软件,执行具体工作。让AI更具有执行力。 已完成部分: 关于python调用大模型的,可以参考之前的…...
MARA/MARC表 PSTAT字段
最近要开发一个维护物料视图的功能。其中PSTAT字段是来记录已经维护的视图的。这里记录一下视图和其对应的字母。 MARA还有个VPSTA(完整状态)字段,不过在我试的时候每次PSTAT出现一个它就增加一个,不知道具体是为什么。 最近一直…...
《探秘鸿蒙分布式软总线:开启无感发现与零等待传输新时代》
在数字化浪潮中,设备之间的互联互通成为构建智能生态的关键。鸿蒙系统中的分布式软总线技术,宛如一座桥梁,让各种智能设备紧密相连。尤其是其实现的设备间无感发现和零等待传输功能,更是为用户带来了前所未有的便捷体验࿰…...
学习型组织与系统思考
真正的学习型组织不是只关注个人的学习,而是关注整个系统的学习。—彼得圣吉 在这两年里,越来越多的企业开始询问是否可以将系统思考的内容内化给自己的内训师,进而在公司内部进行教学。我非常理解企业这样做的动机,毕竟内部讲师…...
支持mingw g++14.2 的c++23 功能print的vscode tasks.json生成调试
在mingw14.2版本中, print库的功能默认没有开启, 生成可执行文件的tasks.json里要显式加-lstdcexp, 注意放置顺序. tasks.json (支持mingw g14.2 c23的print ) {"version": "2.0.0","tasks": [{"type": "cppbuild","…...
守护者进程小练习
守护者进程含义 定义:守护进程(Daemon)是运行在后台的特殊进程,独立于控制终端,周期性执行任务或等待事件触发。它通常以 root 权限运行,名称常以 d 结尾(如 sshd, crond)。 特性&a…...
opencv函数展示3
一、图像平滑(模糊) 线性滤波(速度快): 1.cv2.blur() 2.cv2.boxFilter() 3.cv2.GaussianBlur() 非线性滤波(速度慢但效果好): 4.cv2.medianBlur() 5.cv2.bilateralFilter() 二、锐…...
环境搭建与入门:Flutter SDK安装与配置
环境搭建与入门:Flutter SDK安装与配置 一、Flutter开发环境概述 1.1 Flutter开发环境组成 Flutter开发环境主要包含以下几个关键组件: Flutter SDK:Flutter的核心开发工具包Dart SDK:Flutter使用的编程语言环境IDE/编辑器&am…...
linux驱动之poll
驱动中 poll 实现 在用户空间实现事件操作的一个主要实现是调用 select/poll/epoll 函数。那么在驱动中怎么来实现 poll 的底层呢? 其实在内核的 struct file_operations 结构体中有一个 poll 成员,其就是底层实现的接口函数。 驱动中 poll 函数实现原…...
遥感技术赋能电力设施监控:应用案例篇
目前主流的电力巡检手段利用无人机能够通过设定灵活航线进行低空飞行、搭载不同的采集设备,能够从不同角度对输电线进行贴近拍摄,但缺陷是偏远山区无人机飞行技术要求高,成本高,且飞行的无人机也可能会对输电线产生破坏。 星图云开…...
SpringAI+DeepSeek大模型应用开发——5 ChatPDF
ChatPDF 知识库 RAG检索增强 由于训练大模型非常耗时,再加上训练语料本身比较滞后,所以大模型存在知识限制问题: 知识数据比较落后,往往是几个月之前的;不包含太过专业领域或者企业私有的数据; 为了解决…...
yolov8 框架自带模型体验功能
简介 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务。 YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,…...
柴油机气缸体顶底面粗铣组合机床总体及夹具设计
一、引言 柴油机气缸体是柴油机的关键部件,其顶底面的加工精度直接影响气缸体的装配质量和柴油机的性能。粗铣是气缸体顶底面加工的重要工序,设计一款高效、精确的粗铣组合机床及配套夹具,对于提高气缸体加工效率和质量具有重要意义。 二、…...
SpringBoot - Minio
1、简介 MinIO 是一个开源的对象存储服务器,用于存储和管理大规模的非结构化数据,例如图像、视频、日志文件、备份和容器镜像。MinIO 旨在提供高性能、高可用性、可扩展性和易用性的对象存储解决方案,适用于私有云、公共云和混合云环境。2、…...
Android --- SystemUI启动流程
1.main 函数入口,调用SystemServer().run()方法 代码路径:frameworks/base/services/java/com/android/server/SystemServer.java 2.run 方法中有3种服务的启动,我们主要看StartOtherService 代码路径:frameworks/base/services/java/com/android/se…...
docker镜像被覆盖了怎么办?通过sha256重新上传镜像
如果一个镜像通过相同的标签被重新推送(覆盖),那么旧的镜像内容虽然在 Docker 的存储中可能仍然存在,但通过原来的标签将无法直接访问到它。Docker 和 Harbor 默认情况下不会自动删除旧的镜像层,除非进行了垃圾回收&am…...
