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

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

文章目录

  • 第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:

相关文章:

  • C语言编写Linux的Shell外壳
  • C#常见Winform窗体效果
  • SpringBoot+ECharts+Html 地图案例详解
  • 四、Mybatis-查询与删除
  • 内网安全之-kerberos协议
  • 第五篇:3.4 用户归因和受众(User attribution and audience) - IAB/MRC及《增强现实广告效果测量指南1.0》
  • SpringBoot+ECharts+Html 字符云/词云案例详解
  • Redis缓存设计与性能优化【缓存穿透、缓存击穿、缓存雪崩】
  • 【Web】记录Polar靶场<困难>难度题一遍过
  • pytorch中的while for 循环 导出onnx的问题
  • Error: TF_DENORMALIZED_QUATERNION: Ignoring transform forchild_frame_id
  • 3D模型格式转换工具HOOPS Exchange如何将3D文件加载到PRC数据结构中?
  • R统计实战:详解机器学习Adaboost的操作步骤与应用
  • acwing算法提高之图论--最小生成树的典型应用
  • python项目练习——12.在线购物商城应用程序
  • php的引用
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Django 博客开发教程 16 - 统计文章阅读量
  • Hibernate【inverse和cascade属性】知识要点
  • Linux Process Manage
  • pdf文件如何在线转换为jpg图片
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • python_bomb----数据类型总结
  • Vue2 SSR 的优化之旅
  • vue总结
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 第十八天-企业应用架构模式-基本模式
  • 回顾 Swift 多平台移植进度 #2
  • 区块链分支循环
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用 @font-face
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 一文看透浏览器架构
  • 用Canvas画一棵二叉树
  • gunicorn工作原理
  • Semaphore
  • #if #elif #endif
  • ${ }的特别功能
  • (1)(1.13) SiK无线电高级配置(五)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (27)4.8 习题课
  • (39)STM32——FLASH闪存
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (day 12)JavaScript学习笔记(数组3)
  • (独孤九剑)--文件系统
  • (二)斐波那契Fabonacci函数
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .NET 5种线程安全集合