【机器学习】《机器学习算法竞赛实战》思考练习(更新中……)

文章目录

  • 第2章 问题建模
    • (一)对于多分类问题,可否将其看作回归问题进行处理,对类别标签又有什么要求?
    • (二)目前给出的都是已有的评价指标,那么这些评价指标(分类指标和回归指标)的损失函数如何实现?
    • (三)解决样本分布不均衡问题时,尝试用代码实现样本加权、类别加权和采样算法等几种方式,并对比使用权重前后的分数变化。
    • (四)在对不均衡的数据集进行采样时,是否会影响训练集和测试集之间的独立同分布关系?
    • (五)在进行K折交叉验证的时候,对于K值的选取,是否越大越好呢?
    • (六)在大多数情况下,我们会选择使用K折交叉验证,那么K折交叉验证为什么能够帮助提升效果呢?
  • 第3章 数据探索

最近在看《机器学习算法竞赛实战》,虽然很多看不懂,但是我觉得学习就是看不懂、然后就厚着脸皮反复看呗,我不是一次就能看懂、学会的天才。
思考练习里面的内容我基本都答不上来,答案来自CodeGeeX。仅供参考。

第2章 问题建模

(一)对于多分类问题,可否将其看作回归问题进行处理,对类别标签又有什么要求?

CodeGeeX:
对于多分类问题,可以将它们看作回归问题进行处理。但是,为了 successful,会对类别标签提出以下要求:
1、每个类别都有一个唯一的数值标签。
2、类别标签必须是 continuous 且 non-negative。
3、类别标签不能存在空值或缺失值。
满足这些要求的类别标签可以使用进行回归问题处理。但是,请注意,这种方法可能会降低 model 的性能,因为多分类问题通常需要 special handling。
【翻译】
continuous:连续性
negative:负类
non-negative:非负类
special handling:特殊处理

(二)目前给出的都是已有的评价指标,那么这些评价指标(分类指标和回归指标)的损失函数如何实现?

CodeGeeX:
在机器学习中,指标(如 F1-score、Accuracy、MSE 等)通常用于评估模型的性能。这些指标可以使用损失函数(如 Log-loss、MSE-loss 等)实现。在神经网络训练过程中,模型会根据输入数据计算损失函数,并根据损失函数的大小更新模型参数。
我:
我觉得这个问题,CodeGeeX回答的不太好。依据我看书后的理解和总结如下:
1、分类问题常见的评价指标:
①错误率与精度
要点:加总等于1。
②准确率与召回率
要点:同时使用,此消彼长。
③F1-score
要点:调和平均②,介于[0,1]区间。
④ROC曲线
要点:正负样本不均衡时依然能够保持不变。该指标不常用。
⑤AUC
要点:极常见的指标。定义为ROC曲线下的面积。取值范围0.5-1之间。
是数值,值越大==>分类器效果越好。
⑥对数损失
要点:常见指标。取值0-1之间。
2、AUC和对数损失对比
同样是概率。
AUC侧重于模型将正样本排到前面的能力。比如广告排序效果。
我理解的是,如果要考察排在前几位的,就用AUC。比如热度前十,增长前十这类的……评价这类的预测用AUC比较好。
对数损失反映平均偏差,更偏向于将样本数量多的那类划分准确。评价模型预测的概率是否足够准确。
3、如何实现,大概就是代码问题了,书上给了准确率、召回率、F1-score:

from sklearn.metrics import precision_score, recall_score, f1_score
precision = precision_score(y_train, y_pred)
recall = recall_score(y_train, y_pred)
f1 = f1_score(y_train, y_pred)

代码很简单:导入模块,然后直接使用方法,参数就那两个,直接放进去 就好啦。
4、回归指标
①平均绝对误差(MAE,Mean Absolute Error),又称为L1范数损失
残差的基础上,弄了个绝对值。所谓的“绝对”就是绝对值的意思。
②均方误差(MSE,Mean Squared Error),又称为L2范数损失
残差基础上,弄了个平方。
③均方根误差
在均方误差基础上弄了个开方。
④平均绝对百分比误差(MAPE)
在平均绝对误差(MAE)基础上除以预测值y’。弥补了MAE的不足,真实值越大,误差越小。
5、这些指标的损失函数……这个我就不太理解了,貌似书上只说了这些指标啊,它们还有损失函数吗?以后再说吧……
(现实情况是,我还没啰嗦完,面试官:可以滚了,下一位……)

(三)解决样本分布不均衡问题时,尝试用代码实现样本加权、类别加权和采样算法等几种方式,并对比使用权重前后的分数变化。

CodeGeeX:
在解决样本分布不均衡问题时,可以使用以下几种方式来处理:
1、样本加权:为不同类别的样本分配不同的权重,以便于对不同类别进行均衡采样。
2、类别加权:为不同类别的样本分配不同的数量,以便于对不同类别进行均衡训练。
3、采样算法:使用算法来生成平衡的样本分布,例如adasyn、balance_dataset、ClassBalancedSampler 等。
4、使用权重前缀:在计算损失函数时,使用权重前缀来调整不同类别的重要性。例如,在 softmax 损失函数中,可以使用权重前缀来调整预测概率的权重。
5、使用 focal loss:focal loss 是一种针对样本分布不均衡问题的损失函数,它可以有效地提高识别困难样本的能力。
6、使用 gradient reverse algorithm:GRAD 是一种通过调整学习率来解决样本分布不均衡问题的方法,它通过最大化正负样本的差值来提高困难样本的训练强度。
我:
看不懂……遇到具体问题的时候再说吧……代码实现?没有没有……

(四)在对不均衡的数据集进行采样时,是否会影响训练集和测试集之间的独立同分布关系?

CodeGeeX:
在某些情况下,对不均衡的数据集进行采样可能会影响训练集和测试集之间的独立同分布关系。具体来说,这取决于采样算法的设计和数据集的性质。一些采样算法,如 undersampling(欠采样) 和 oversampling(过采样),可以确保训练集和测试集之间的独立同分布关系保持不变。然而,一些算法,如 balanced sampling(平衡取样;对称抽样),可能会改变独立同分布关系。
因此,在对不均衡的数据集进行采样时,需要根据实际需求和数据集的性质来选择合适的采样算法,以保持训练集和测试集之间的独立同分布关系。

(五)在进行K折交叉验证的时候,对于K值的选取,是否越大越好呢?

CodeGeeX:
通常情况下,K值的选取不是越大越好。在K折交叉验证中,K值越大,意味着每个验证集的大小越小,XTrain和XTest之间的独立同分布关系越小,这可能会导致模型泛化能力不足。因此,K值的选取需要根据实际需求和数据集的性质来选择。在某些情况下,K值可能需要减小到接近于1的值,以提高模型的泛化能力。
我:
K值过大,计算量过大。一般K=5或10。

(六)在大多数情况下,我们会选择使用K折交叉验证,那么K折交叉验证为什么能够帮助提升效果呢?

CodeGeeX:
K折交叉验证是一种常用的评估方法,它可以帮助我们评估模型的泛化能力。与直接使用整个训练集作为验证集相比,K折交叉验证可以在不暴露测试集的情况下估计模型的性能,从而更准确地评估模型的效果。通过K折交叉验证,我们可以看到不同训练集下的模型性能,从而更好地理解和优化模型。

第3章 数据探索

(更新中……)
CodeGeeX:

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

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

相关文章

Java入门学习Day04

本篇文章主要介绍了:如何输入数据、字符串拼接、自增自减运算符、类型转换(int,double等) CSDN:码银 公众号:码银学编程 一、键盘输入练习 Scanner是Java中的一个类,用于从控制台或文件中读…

DOTS:Burst

目录 一:简介 1.1 Getting started 1.2 C# language support 1.2.1 HPC# overview 1.2.1.1 Exception expressions 1.2.1.2 Foreach and While 1.2.1.3 Unsupported C# features in HPC# 1.2.2 Static read-only fields and static constructor support 1.…

STM32-03基于HAL库(CubeMX+MDK+Proteus)输入检测案例(按键控制LED)

文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式,生成代码四、MDK打开生成项目,编写HAL库的按键检测代码五、运行仿真程序,调试代码 一、功能需求分析 搭建完成开发STM32开发环境之后,开始GPIO…

LC 110.平衡二叉树

110. 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入: root [3,9,20,null,null,15,7]…

【python】python 测试,为什么我们需要测试,pytest的使用

为什么需要测试 🔥测试,软件开发的秘密武器🔥 ✨大家好,今天就来跟大家聊聊软件开发中的一项超级重要的环节——测试!👀 🎯测试,是软件开发的灵魂,是确保代码正确运行…

MySQL中innodb_status_output_locks含义和用法

innodb_status_output_locks 是一个MySQL系统变量,它决定了是否在 SHOW ENGINE INNODB STATUS 输出中包含详细的锁定信息。其主要用途是帮助分析和诊断InnoDB存储引擎中的锁定问题,比如事务死锁或长时间持有的锁导致的性能问题。 当innodb_status_outpu…

补充知识

补充知识1 内存的本质是对数据的临时存储 内存与磁盘进行交互时, 最小单位是4kb叫做页框(内存)和页帧(磁盘) 也就是, 如果我们要将磁盘的内容加载到内存中, 可是文件大小只有1kb, 我们也要拿出4kb来存他, 多余的就直…

基于Leaflet.js和Turf.js的等值线区间自定义及颜色自适应实践

目录 前言 一、Turf.js等值线相关制作 1、生成方法 2、主要参数 二、实际案例开发 1、新建展示页面 2、等值线生成 3、基于Leaflet的再优化 总结 前言 在气象方面的GIS应用当中,会根据实际的工作需要建立不同的监测站点。气象监测站的主要功能包括&#xff1…

pnpm--安装与使用

原文网址:pnpm--安装与使用-CSDN博客 简介 本文介绍pnpm的安装与使用。 pnpm由npm/yarn衍生而来,解决了npm/yarn内部潜在的bug,极大的优化了性能,扩展了使用场景,被誉为“最先进的包管理工具”,速度快、…

HTTP/2 牛逼在哪?(计算机网络)

兼容HTTP/ 1.1 第一点,HTTP/2 出来的目的是为了改善 HTTP 的性能。协议升级有一个很重要的地方,就是要兼容老版本的协议,否则新协议推广起来就相当困难, HTTP/2 做到了兼容 HTTP/1.1。 1.HTTP/2 没有在 URI 里引入新的协议名&…

变量重名情况

变量重名 变量的使用规则:就近原则 第一种情况:局部变量和成员变量重名,使用this关键字访问成员变量 第二种情况:子类成员变量和父类成员变量重名,使用super关键字访问父类成员变量 // 父类 public class Fu {int …

【C语言】凯赛密码的加密和解密

凯撒密码是一种简单的替换加密方法,其原理是将明文中的每个字母按照指定的偏移量进行替换,从而得到密文。在下面的C语言代码中,我们实现了凯撒密码的加密和解密过程。这段代码的优点是简单易懂,实现了凯撒密码的基本功能。然而&am…

舞蹈网站制作分享,舞蹈培训商城网站设计案例分享,wordpress主题分享

嘿,朋友们!今天我要跟你们唠一唠一个超级酷炫的舞蹈培训商城网站设计案例。 咱先说说这个网站的目标哈,那就是得让喜欢舞蹈的小伙伴们能够轻轻松松找到自己心水的课程和商品。 那制作过程都有啥呢?别急,听我慢慢道来。…

C#常见Winform窗体效果

目录 1&#xff0c;窗体闪烁。 2&#xff0c;透明非矩形的窗体。 3&#xff0c;窗口显示&#xff0c;退出呈现平滑效果。 4&#xff0c;窗体不在任务栏中显示&#xff1a; 1&#xff0c;窗体闪烁。 /// <summary>/// 窗体闪烁/// </summary>/// <param na…

在c# 7.3中不可用,请使用9.0或更高的语言版本

参考连接&#xff1a;在c# 7.3中不可用,请使用8.0或更高的语言版本_功能“可为 null 的引用类型”在 c# 7.3 中不可用。请使用 8.0 或更高的语言版本-CSDN博客https://blog.csdn.net/liangyely/article/details/106163660 [踩坑记录] 某功能在C#7.3中不可用,请使用 8.0 或更高的…

ubuntu install Python3

1. 安装ppa源 首先要知道的是&#xff0c;在Ubuntu的默认源中&#xff0c;Python 3.8是不支持安装的&#xff0c;因此需要添加ppa源。打开终端输入以下命令&#xff1a; sudo add-apt-repository ppa:deadsnakes/ppa 2. 更新apt-get 添加ppa源之后&#xff0c;需要更新一下…

STM32 | 通用同步/异步串行接收/发送器USART带蓝牙(第六天原理解析)

STM32 第六天 一、 USART 1、USART概念 USART:(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步串行接收/发送器 USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备 处理器与外部设备通信的两种方式: u并行通信(…

摸鱼123

摸鱼https://toyaml.com/windowsupdate.html

【漏洞复现】用友NC-Cloud文件服务器用户登陆绕过漏洞

Nx01 阅读须知 如棠安全的技术文章仅供参考&#xff0c;此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的…

51单片机学习笔记13 红外遥控接收

51单片机学习笔记13 红外遥控接收 一、红外遥控1. **发射原理**2. **接收原理**3. **发射、接收示例** 二、编码、解码1. **编码方式分类**&#xff1a;&#xff08;1&#xff09;Pulse Distance Modulation (PDM) 脉冲距离调制&#xff1a;&#xff08;2&#xff09;Pulse Wid…