机器学习校招面经二

news2025/3/5 7:10:51

快手 机器学习算法

一、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+×Ni=1N+j=1NI(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 += 1
                elif r == 0:
                    numerator += 0.5
    return numerator / denominator

二、LR逻辑回归的损失函数,使用熟悉的语言,写出交叉熵的伪代码

首先明确,逻辑回归的损失函数是交叉熵损失函数,也被称为对数损失函数(log loss)。
手撕:见【搜广推校招面经二十三】

import numpy as np

class 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 cost
    
    def 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.shape
        self.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=1nyiy^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=1n(yiy^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作为损失函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2309883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第四十一:Axios 模型的 get ,post请求

Axios 的 get 请求方式 9.双向数据绑定 v-model - 邓瑞编程 Axios 的 post 请求方式:

全国青少年航天创新大赛各项目对比分析

全国青少年航天创新大赛各项目对比分析 一、比赛场地对比 项目名称场地尺寸场地特点组别差异筑梦天宫虚拟三维场景动态布局,小学组3停泊处,初高中组6停泊处;涉及传送带、机械臂、传感器等虚拟设备。初中/高中组任务复杂度更高,运…

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式 2025/3/4 16:47 缘起:128GB的TF卡,只能格式化为NTFS/exFAT/ext4。 在飞凌的OK3588-C下,NTFS格式只读。 exFAT需要改内核来支持。 现在只剩下ext4了。 linux R4默认不支持exFAT…

服务器配置-从0到分析4:ssh免密登入

该部分涉及到公钥、私钥等部分knowledge,本人仅作尝试 若将本地机器 SSH Key 的公钥放到远程主机,就能无需密码直接远程登录远程主机 1,在客户端生成 ssh 公私钥: 也就是我们本地机器,windows电脑 一路回车即可&am…

React 组件基础介绍

基本概念:一个组件就是用户界面的一部分,可以有自己的逻辑和外观,组件之间可以互相嵌套、复用多次。每个组件就是一个首字母大写的函数,内部存放了组件的逻辑和试图UI,渲染组件只需要把组件 当成 标签 书写。App 可以视…

环境变量 ─── linux第14课

本内容为总结: 1. 环境变量本质是配置信息, 在系统配置时起效 . 2. 环境变量具有全局性(子进程可以继承父进程的环境信息,不能继承本地变量) 3. 进程具有独立性 ,环境变量可以进程间传递信息(只读信息) 环境变量 环境变量(environment variables)一般是指在操作系统中用来指定操…

基于APDL语言的结构优化设计

1、前言 结构设计是创造结构方案的过程,传统的结构设计是设计者按设计要求和设计者的实践经验,参考类似工程,通过判断创造结构方案,然后进行力学分析或按规范要求作安全校核,再修改设计。 而结构优化设计与分析则把力…

一、MySQL备份恢复

一、MySQL备份恢复 1.1 MySQL日志管理 数据库中数据丢失或被破坏可能原因 误删除数据库 数据库工作时,意外断电或程序意外终止 由于病毒造成的数据库损坏或丢失 文件系统损坏后,系统进行自检操作 升级数据库时,命令语句不严格 设备故…

【Linux第三弹】Linux基础指令 (下)

目录 🌟1.find指令 1.1find使用实例 ​编辑 🌟2.which指令 🌟3.grep指令 3.1grep使用实例 🌟 4.zip/unzip指令 4.1 zip/unzip使用实例 🌟5.tar指令 5.1 tar使用实例 🌟6.完结 很庆幸走在自己…

VB6网络通信软件开发,上位机开发,TCP网络通信,读写数据并处理,完整源码下载

VB6网络通信软件开发,上位机开发,TCP网络通信,读写数据并处理,完整源码下载 完整源码XZ网口四进四出主动上传版_VB源代码.rar 下载链接:http://xzios.cn:86/WJGL/DownLoadDetial?Id20 在自动化、物联网以及工业控制…

TMS320F28P550SJ9学习笔记1:CCS导入工程以及测试连接单片机仿真器

学习记录如何用 CCS导入工程以及测试连接单片机仿真器 以下为我的CCS 以及驱动库C2000ware 的版本 CCS版本: Code Composer Studio 12.8.1 C2000ware :C2000Ware_5_04_00_00 目录 CCS导入工程: 创建工程: 添加工程: C…

阿里万相,正式开源

大家好,我是小悟。 阿里万相正式开源啦。这就像是AI界突然开启了一扇通往宝藏的大门,而且还是免费向所有人敞开的那种。 你想想看,在这个科技飞速发展的时代,AI就像是拥有神奇魔法的魔法师,不断地给我们带来各种意想…

纯前端使用 Azure OpenAI Realtime API 打造语音助手

本文手把手教你如何通过纯前端代码实现一个实时语音对话助手,结合 Azure 的 Realtime API,展示语音交互的未来形态。项目开源地址:https://github.com/sangyuxiaowu/WssRealtimeAPI 1. 背景 在这个快节奏的数字时代,语音助手已经…

基于Windows11的RAGFlow安装方法简介

基于Windows11的RAGFlow安装方法简介 一、下载安装Docker docker 下载地址 https://www.docker.com/ Download Docker Desktop 选择Download for Winodws AMD64下载Docker Desktop Installer.exe 双点击 Docker Desktop Installer.exe 进行安装 测试Docker安装是否成功&#…

教育强国建设“三年行动计划“分析

教育部即将推出的教育强国建设"三年行动计划"中,职业教育板块的部署体现出鲜明的战略导向和创新思维,其核心是通过系统化布局和结构性改革推动职业教育高质量发展。以下从政策内涵、实施路径及潜在影响三个维度展开分析: 一、政策…

基于Spring Boot+vue的厨艺交流平台系统设计与实现

大家好,今天要和大家聊的是一款基于Spring Boot的“厨艺交流平台”系统的设计与实现。项目源码以及部署相关事宜请联系我,文末附上联系方式。 项目简介 基于Spring Boot的“厨艺交流平台”系统设计与实现的主要使用者分为管理员、普通用户和游客。没有…

GPU、NPU与LPU:大语言模型(LLM)硬件加速器全面对比分析

引言:大语言模型计算基础设施的演进 随着大语言模型(LLM)的快速发展与广泛应用,高性能计算硬件已成为支撑LLM训练与推理的关键基础设施。目前市场上主要有三类处理器用于加速LLM相关任务:GPU(图形处理单元…

强化学习-随机近似与随机梯度下降

强化学习-数学理论 强化学习-基本概念强化学习-贝尔曼公式强化学习-贝尔曼最优公式强化学习-值迭代与策略迭代强化学习-蒙特卡洛方法强化学习-随机近似于随机梯度下降 文章目录 强化学习-数学理论一、前言二、再谈mean eatimation2.1 回顾蒙特卡洛法2.2 新角度解决求均值问题2…

Linux纯命令行界面下SVN的简单使用教程

诸神缄默不语-个人技术博文与视频目录 我用的VSCode插件是这个: 可以在文件中用色块显示代码修改了什么地方,点击色块还可以显示修改内容。 文章目录 1. SVN安装2. checkout3. update1. 将文件加入版本控制 4. commit5. 查看SVN信息:info6.…

python 初学攻略(上)

废话写在前面,后面都是干货,这个语言教学到处都是。我这里直接给你搞定所有要用的就好了。 环境安装(略) 输出函数print 转义字符 二进制与字符编码 标识符和保留字 变量的定义和使用 数据类型 整数类型 浮点类型 布尔类型 字符串…