当前位置: 首页 > news >正文

搜广推实习面经四

字节跳动TAC 广告算法

一、回归任务的评价指标有哪些

  • 1.均方误差(Mean Squared Error, MSE)/均方根误差(Root Mean Squared Error, RMSE)
    M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2
  • 2.平均绝对误差(Mean Absolute Error, MAE)
    M A E = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1nyiy^i
  • 3.平均绝对百分比误差(Mean Absolute Percentage Error, MAPE)
    MAPE 衡量模型预测误差相对于真实值的百分比。
    M A P E = 1 n ∑ i = 1 n ∣ y i − y ^ i y i ∣ × 100 MAPE = \frac{1}{n} \sum_{i=1}^{n} \left|\frac{y_i - \hat{y}_i}{y_i}\right| \times 100 MAPE=n1i=1n yiyiy^i ×100
  • 4.R² 或 决定系数(Coefficient of Determination)
    R² 反映了模型对数据的拟合程度,值的范围在 [0,1]之间。R² 值越接近 1,表示模型越能解释数据的方差;接近 0 则表示模型的解释能力较弱。
    R 2 = 1 − ∑ i = 1 n ( y i − y ^ i ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2} R2=1i=1n(yiyˉ)2i=1n(yiy^i)2
  • 5.调整后的 R²(Adjusted R²)
    调整后的 R² 是对 R² 的修正,考虑到模型中自变量的数量。当自变量较多时,R² 值可能会偏高(特征多了更容易拟合),防止模型因增加无关特征而导致 R² 值虚高。因此调整后的 R² 提供了更可靠的评价。
    R adj 2 = 1 − ( 1 − R 2 ) n − 1 n − p − 1 R^2_{\text{adj}} = 1 - \left(1 - R^2\right) \frac{n - 1}{n - p - 1} Radj2=1(1R2)np1n1
    - n n n 是样本数,
    - p p p 是自变量数量。

二、标签长尾分布,多峰分布怎么应对?

  • 1.长尾分布
    • 少数类范围的样本做过采样、多数类范围的样本做降采样
    • 做log、Box_Cox变换等
    • 变换目标(比如房价,大部分价格都是百万级别,尾巴肯定有千万、上亿的,可以通过房价/面积得到每平方价格,用每平方价格当作标签计数)
      • 用无监督模型对每个样本预先打上一个标签(这个类别标签表示这个样本大概属于那个范围)
      • 稀疏样本加权
  • 2.多峰分布
    感觉和长尾分布处理方式差不多。但是多峰分布可能更适合采用分组建模
    分组建模:如果数据中的不同部分存在不同的模式,考虑使用分组建模或分段模型,为每个群体(峰值区域)建立单独的模型。

三、优化器有哪些

在机器学习中,优化器负责调整模型的参数以最小化损失函数,帮助模型更好地拟合数据。

  • 1.基础的优化器
    • Ⅰ.随机梯度下降 (SGD)
      θ = θ − η ⋅ ∇ θ J ( θ ) \theta = \theta - \eta \cdot \nabla_{\theta} J(\theta) θ=θηθJ(θ)
      - θ \theta θ: 模型参数
      - η \eta η: 学习率
      - J ( θ ) J(\theta) J(θ): 损失函数
    • Ⅱ.动量法 (Momentum)
      引入动量,使得更新方向受之前梯度的影响,平滑收敛路径。
      v t = β v t − 1 + ( 1 − β ) ∇ θ J ( θ ) θ = θ − η v t v_t = \beta v_{t-1} + (1 - \beta) \nabla_{\theta} J(\theta) \\ \theta = \theta - \eta v_t vt=βvt1+(1β)θJ(θ)θ=θηvt
      - v t v_t vt: 动量向量
      - β \beta β: 动量系数(如 0.9)
  • 2.自适应优化器
    自适应优化器(Adaptive Optimizer)是指能够根据梯度变化动态调整学习率的优化算法。这类优化器的主要目标是改进传统优化器(如SGD)的收敛速度和稳定性,特别是在训练非凸深度学习模型时表现优异。
    • Ⅰ.Adagrad
      可以为每个参数自适应调整学习率,但是累积历史梯度平方和导致学习率持续下降,后期更新较慢
      θ = θ − η G t , i i + ϵ ∇ θ J ( θ ) \theta = \theta - \frac{\eta}{\sqrt{G_{t,ii} + \epsilon}} \nabla_{\theta} J(\theta) θ=θGt,ii+ϵ ηθJ(θ)
      • G t G_t Gt: 梯度平方的累加矩阵。
      • ϵ \epsilon ϵ: 防止分母为零的小值。
    • Ⅱ.RMSprop
      通过梯度平方的指数加权平均,解决了 Adagrad 的学习率衰减问题。
      E [ g 2 ] t = β E [ g 2 ] t − 1 + ( 1 − β ) g t 2 θ = θ − η E [ g 2 ] t + ϵ ∇ θ J ( θ ) E[g^2]_t = \beta E[g^2]_{t-1} + (1 - \beta) g_t^2 \\ \ \\ \theta = \theta - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \nabla_{\theta} J(\theta) E[g2]t=βE[g2]t1+(1β)gt2 θ=θE[g2]t+ϵ ηθJ(θ)
      • E [ g 2 ] t E[g^2]_t E[g2]t: 梯度平方的指数加权平均。
    • Ⅲ.Adam (Adaptive Moment Estimation)
      综合了动量法和 RMSprop 的优点,基本默认的都是用Adam
      一阶动量: m t = β 1 m t − 1 + ( 1 − β 1 ) g t 二阶动量: v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 参数更新: θ = θ − η ⋅ m ^ t v ^ t + ϵ 一阶动量:m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t \\ 二阶动量:v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \\ 参数更新:\theta = \theta - \eta \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} \\ 一阶动量:mt=β1mt1+(1β1)gt二阶动量:vt=β2vt1+(1β2)gt2参数更新:θ=θηv^t +ϵm^t
      • m ^ t \hat{m}_t m^t, v ^ t \hat{v}_t v^t: 偏差校正。
  • 3.高级的优化器
    • Ⅰ.SGDW / AdamW
      增加权重衰减项(Weight Decay),替代 L2 正则化。
    • Ⅱ.LAMB (Layer-wise Adaptive Moments)
      专为大规模分布式训练设计,适用于大批量训练。每一层都有独立的学习率调整。
  • 四、力扣_215. 数组中的第K个最大元素
    给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
    这是一道经典的使用快排和堆的,这里可以背一下快排的模板
class Solution:def findKthLargest(self, nums, k):def quick_select(nums, k):# 随机选择基准数pivot = random.choice(nums)big, equal, small = [], [], []# 将大于、小于、等于 pivot 的元素划分至 big, small, equal 中for num in nums:if num > pivot:big.append(num)elif num < pivot:small.append(num)else:equal.append(num)if k <= len(big):# 第 k 大元素在 big 中,递归划分return quick_select(big, k)if len(nums) - len(small) < k:# 第 k 大元素在 small 中,递归划分return quick_select(small, k - len(nums) + len(small))# 第 k 大元素在 equal 中,直接返回 pivotreturn pivotreturn quick_select(nums, k)
http://www.lryc.cn/news/524525.html

相关文章:

  • 【Elasticsearch】inference ingest pipeline
  • AQS公平锁与非公平锁之源码解析
  • 若依框架在企业中的应用调研
  • 【Day23 LeetCode】贪心算法题
  • 2025年PHP面试宝典,技术总结。
  • Qt中的按钮组:QPushButton、QToolButton、QRadioButton和QCheckBox使用方法(详细图文教程)
  • influxdb+grafana+jmeter
  • Net Core微服务入门全纪录(三)——Consul-服务注册与发现(下)
  • leetcode 479. 最大回文数乘积
  • 独立搭建UI自动化测试框架
  • 62,【2】 BUUCTF WEB [强网杯 2019]Upload1
  • Spring Boot 整合 ShedLock 处理定时任务重复执行的问题
  • 常见Arthas命令与实践
  • Glide加载gif遇到的几个坑
  • STM32学习之通用定时器
  • MiniMax-Text-01——模型详细解读与使用
  • Redis的Windows版本安装以及可视化工具
  • tensorflow源码编译在C++环境使用
  • 第四届机器学习、云计算与智能挖掘国际会议
  • #漏洞挖掘# 一文了解什么是Jenkins未授权访问!!!
  • QT QListWidget控件 全面详解
  • 【Vim Masterclass 笔记25】S10L45:Vim 多窗口的常用操作方法及相关注意事项
  • 包文件分析器 Webpack Bundle Analyzer
  • 代码随想录day14
  • react19新API之use()用法总结
  • 67,【7】buuctf web [HarekazeCTF2019]Avatar Uploader 2(未完成版)
  • ANSYS HFSS 中的相控天线阵列仿真方法
  • stm32 L051 adc配置及代码实例解析
  • KUKA示教器仿真软件OfficeLite8.6.2,EthernetKRL3.1.3通信
  • Erlang语言的并发编程