机器学习校招面经二
快手 机器学习算法
一、AUC(Area Under the ROC Curve)怎么计算?AUC接近1可能的原因是什么?
见【搜广推校招面经四】
AUC 是评估分类模型性能的重要指标,用于衡量模型在不同阈值下区分正负样本的能力。它是 ROC 曲线(Receiver Operating Characteristic Curve)下的面积。
1.1. ROC 曲线的坐标
ROC 曲线以 真正例率(True Positive Rate, TPR) 为纵轴,假正例率(False Positive Rate, FPR) 为横轴。
1.1.1. 真正例率(TPR) = 召回率(Recall) = 灵敏度(Sensitivity)
= T P T P + F N = T P P = \frac{TP}{TP + FN} = \frac{TP}{P} =TP+FNTP=PTP
其中:
- T P TP TP:真正例(True Positives),即模型正确预测的正样本数。
- F N FN FN:假反例(False Negatives),即模型错误预测的负样本数。
2.2 假正例率(FPR)
F P R = F P F P + T N = F P N FPR = \frac{FP}{FP + TN} = \frac{FP}{N} FPR=FP+TNFP=NFP
其中:
- F P FP FP:假正例(False Positives),即模型错误预测的正样本数。
- T N TN TN:真反例(True Negatives),即模型正确预测的负样本数。
1.2. AUC 的计算公式
AUC 是 ROC 曲线下的面积,可以通过以下方法计算:
1.2.1. 积分法
A U C = ∫ 0 1 T P R ( F P R ) d F P R AUC = \int_{0}^{1} TPR(FPR) \, dFPR AUC=∫01TPR(FPR)dFPR
即对 ROC 曲线下的面积进行积分。
1.2.2. 排序法(更常用)
AUC 可以通过对样本的预测概率进行排序计算:
A U C = ∑ i = 1 N + ∑ j = 1 N − I ( p i > p j ) N + × N − AUC = \frac{\sum_{i=1}^{N_+} \sum_{j=1}^{N_-} \mathbb{I}(p_i > p_j)}{N_+ \times N_-} AUC=N+×N−∑i=1N+∑j=1N−I(pi>pj)
其中:
- ( N_+ ):正样本的数量。
- ( N_- ):负样本的数量。
- ( p_i ):第 ( i ) 个正样本的预测概率。
- ( p_j ):第 ( j ) 个负样本的预测概率。
- I ( p i > p j ) \mathbb{I}(p_i > p_j) I(pi>pj):指示函数,当 p i > p j p_i > p_j pi>pj 时为 1,否则为 0。
1.3. 手撕AUC
def cal_auc_1(label, pred):numerator = 0 # 分子denominator = 0 # 分母for i in range(len(label) - 1):for j in range(i, len(label)):if label[i] != label[j]:denominator += 1# 统计所有正负样本对中,模型把相对位置排序正确的数量r = (label[i] - label[j]) * (pred[i] - pred[j])if r > 0:numerator += 1elif r == 0:numerator += 0.5return numerator / denominator
二、LR逻辑回归的损失函数,使用熟悉的语言,写出交叉熵的伪代码
首先明确,逻辑回归的损失函数是交叉熵损失函数,也被称为对数损失函数(log loss)。
手撕:见【搜广推校招面经二十三】
import numpy as npclass LogisticRegression:def __init__(self, learning_rate=0.01, num_iterations=1000):self.learning_rate = learning_rate # 学习率self.num_iterations = num_iterations # 迭代次数self.theta = None # 模型参数def sigmoid(self, z):"""计算 Sigmoid 函数"""return 1 / (1 + np.exp(-z))def compute_cost(self, X, y):"""计算交叉熵损失函数"""m = len(y)h = self.sigmoid(np.dot(X, self.theta))cost = - (1/m) * np.sum(y * np.log(h) + (1 - y) * np.log(1 - h))return costdef gradient_descent(self, X, y):"""梯度下降优化"""m = len(y)for i in range(self.num_iterations):h = self.sigmoid(np.dot(X, self.theta)) # 计算预测值gradient = (1/m) * np.dot(X.T, (h - y)) # 计算梯度self.theta -= self.learning_rate * gradient # 更新参数if i % 100 == 0: # 每100次输出一次损失值cost = self.compute_cost(X, y)print(f"Iteration {i}, Cost: {cost}")def fit(self, X, y):"""训练模型"""m, n = X.shapeself.theta = np.zeros(n) # 初始化参数self.gradient_descent(X, y)def predict(self, X):"""预测新样本的类别"""probabilities = self.sigmoid(np.dot(X, self.theta))return probabilities >= 0.5 # 预测类别:如果大于等于 0.5,分类为 1,否则为 0
三、平均绝对误差(MAE)与均方误差(MSE)的理解及区别
见【搜广推实习面经四】
3.1. 平均绝对误差(MAE)
定义
MAE表示预测值和真实值之间绝对误差的平均值,是一个非负值,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=1∑n∣yi−y^i∣
其中 y i y_i yi 是真实值, y ^ i \hat{y}_i y^i 是预测值, n n n 是样本数量。
特点
- 直观性: MAE以原始数据单位表示,因此更直观易懂。例如,在房价预测问题中,MAE可以直接解释为预测价格与实际价格之间的平均偏差。
- 鲁棒性: MAE对异常值不敏感,因为它使用的是绝对值而不是平方值来计算误差。这意味着即使存在极端值,其影响也不会被放大。
3.2. 均方误差(MSE)
定义
MSE是预测值和真实值之间误差平方的平均值。其公式如下:
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=1∑n(yi−y^i)2
特点
- 敏感性: MSE对较大的误差更为敏感,因为误差被平方后,较大的误差会被进一步放大。这使得MSE非常适合用于检测异常值或重要的偏离情况。
- 可微性: MSE是一个平滑可微的函数,便于进行数学运算和优化算法的应用。
3.3. 区别
3.3.1. 误差处理方式
- MAE采用绝对值处理误差,所有个体差异在平均值上的权重都相等。
- MSE则通过对误差进行平方处理,给予大误差更多的权重,从而更加突出大误差的影响。
3.3.2. 对异常值的反应
- MAE由于其线性性质,对异常值具有较好的鲁棒性。
- 相比之下,MSE由于其平方特性,对异常值更加敏感。
3.3.3. 优化过程中的表现
- 在训练过程中,MAE可能导致更新梯度始终相同的问题,即使对于很小的损失值,梯度也可能较大,不利于模型的学习。
- 而MSE在这种情况下的表现较好,即便使用固定的学习率也可以有效收敛,因为其梯度随损失增大而增大,损失趋于0时则会减小。
3.3.4. 应用场景
- 如果异常点代表了商业上重要的异常情况,并且需要被检测出来,则应选用MSE作为损失函数。
- 若仅把异常值当作受损数据,则应选用MAE作为损失函数。
相关文章:
机器学习校招面经二
快手 机器学习算法 一、AUC(Area Under the ROC Curve)怎么计算?AUC接近1可能的原因是什么? 见【搜广推校招面经四】 AUC 是评估分类模型性能的重要指标,用于衡量模型在不同阈值下区分正负样本的能力。它是 ROC 曲线…...
Spring Boot如何利用Twilio Verify 发送验证码短信?
Twilio提供了一个名为 Twilio Verify 的服务,专门用于处理验证码的发送和验证。这是一个更为简化和安全的解决方案,适合需要用户身份验证的应用。 使用Twilio Verify服务的步骤 以下是如何在Spring Boot中集成Twilio Verify服务的步骤: 1.…...
毕业项目推荐:基于yolov8/yolo11的苹果叶片病害检测识别系统(python+卷积神经网络)
文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…...
Linux的用户与权限--第二天
认知root用户(超级管理员) root用户用于最大的系统操作权限 普通用户的权限,一般在HOME目录内部不受限制 su与exit命令 su命令: su [-] 用户名 -符号是可选的,表示切换用户后加载环境变量 参数为用户名,…...
【Flink银行反欺诈系统设计方案】1.短时间内多次大额交易场景的flink与cep的实现
【flink应用系列】1.Flink银行反欺诈系统设计方案 1. 经典案例:短时间内多次大额交易1.1 场景描述1.2 风险判定逻辑 2. 使用Flink实现2.1 实现思路2.2 代码实现2.3 使用Flink流处理 3. 使用Flink CEP实现3.1 实现思路3.2 代码实现 4. 总结 1. 经典案例:短…...
HashMap的table数组何时初始化?默认容量和扩容阈值是多少?
HashMap 的 table 数组何时初始化? 答案: table 数组在第一次调用 put() 方法时初始化。 为什么? HashMap 为了节省内存,采用了“懒加载”机制。即使用 new HashMap() 创建对象时,只是计算了参数(如容量、…...
基于CURL命令封装的JAVA通用HTTP工具
文章目录 一、简要概述二、封装过程1. 引入依赖2. 定义脚本执行类 三、单元测试四、其他资源 一、简要概述 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具&…...
docker学习笔记(1)从安装docker到使用Portainer部署容器
docker学习笔记第一课 先交代背景 docker宿主机系统:阿里云ubuntu22.04 开发机系统:win11 docker镜像仓库:阿里云,此阿里云与宿主机系统没有关系,是阿里云提供的一个免费的docker仓库 代码托管平台:github&…...
数据集/API 笔记:新加坡PSI(空气污染指数)API
data.gov.sg 数据范围:2016年2月 - 2025年3月 1 获取API方式 curl --request GET \--url https://api-open.data.gov.sg/v2/real-time/api/psi 2 返回数据 API 的数据结构可以分为 3 大部分: 区域元数据(regionMetadata) →…...
计算机网络数据传输探秘:包裹如何在数字世界旅行?
计算机网络数据传输探秘:包裹如何在数字世界旅行? 一、从快递网络看数据传输本质 想象你网购了一件商品: 打包:商家用纸箱包装,贴上地址标签(数据封装)运输:包裹经过网点→分拣中心→运输车(网络节点与链路)签收:快递员核对信息后交付(数据校验与接收)数据的网络…...
笔记:代码随想录算法训练营day36:LeetCode1049. 最后一块石头的重量 II、494. 目标和、474.一和零
学习资料:代码随想录 1049.最后一块石头的重量II 力扣题目链接 思路:如何讲该问题转化为背包问题:还是对半分去碰,对半分去碰碰剩下的就是最小的。然后背包容量就是一半儿,物品重量等于物品价值等于stones[i] 和上…...
Bitmap -> Bitmap安卓设备上的显示和内存
Android 屏幕显示与 Bitmap 内存详解 前言 在 Android 开发中,理解屏幕显示单位和 Bitmap 内存占用是构建高效应用的基础。本文将详细介绍相关概念、计算公式及单位转换,并通过实例分析 Bitmap 在内存中的表现。 一、屏幕显示单位基础 1.1 基本单位及…...
QT study DAY2
作业 代码 Widget.h class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();void save_data(const QString& filename,const QString& data); private slots:void on_lineEdit_textChanged(); //账户栏void on_l…...
QT-自定义参数设计框架软件
QT-自定义参数设计框架软件 Chapter1 QT-自定义参数设计框架软件前言一、演示效果二、使用步骤1.应用进行参数注册2.数据库操作单例对象3.参数操作单例对象 三、下载链接 Chapter2 Qt中管理配置参数(QSettings、单例模式)1 前言2 QSettings类ini文件写in…...
VUE集成Live2d
VUE集成Live2d 目前基于大模型,可以实现一个桌面的3D动画小人,个人猜测可以简介这个项目进行实现 1-参考网址 试了很多项目,只有这个项目直观的把问题说清楚了 Live2D Vue3技术应用:https://blog.csdn.net/hh1233321/article/details/1406947…...
【CPP面经】科大讯飞 腾讯后端开发面经分享
文章目录 C 面试问题整理基础问题简答1. 内存对齐2. this 指针3. 在成员函数中删除 this4. 引用占用内存吗?5. C 越界访问场景6. 进程通信方式7. 无锁队列实现8. ping 在哪一层?实现原理?9. HTTPS 流程10. GDB 使用及 CPU 高使用定位11. 智能…...
el-card 结合 el-descriptions 作为信息展示
记录下el-card 组合 el-descriptions 实现动态展示信息 文章结构 实现效果1. el-descriptions 组件使用1.1 结合v-for实现列表渲染1.2 解析 2. 自定义 el-descriptions 样式2.1 修改背景色、字体颜色2.2 调整字体大小2.3 解析 3. el-card 结合 el-descriptions 作为信息展示3.…...
GaussDB自带诊断工具实战指南
一、引言 GaussDB是一种分布式的关系型数据库。在数据库运维中,快速定位性能瓶颈、诊断故障是保障业务连续性的关键。GaussDB内置了多种诊断工具,结合日志分析、执行计划解析和实时监控功能,帮助开发者与运维人员高效解决问题。本文深入讲解…...
LeetCode 链表章节
简单 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2…...
SSL证书和HTTPS:全面解析它们的功能与重要性
每当我们在互联网上输入个人信息、进行在线交易时,背后是否有一个安全的保障?这时,SSL证书和HTTPS便扮演了至关重要的角色。本文将全面分析SSL证书和HTTPS的含义、功能、重要性以及它们在网络安全中的作用。 一、SSL证书的定义与基本概念 S…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
