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

文章目录

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

python 复制代码
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:

相关推荐
passer__jw7671 小时前
【LeetCode】【算法】3. 无重复字符的最长子串
算法·leetcode
passer__jw7671 小时前
【LeetCode】【算法】21. 合并两个有序链表
算法·leetcode·链表
sweetheart7-71 小时前
LeetCode22. 括号生成(2024冬季每日一题 2)
算法·深度优先·力扣·dfs·左右括号匹配
小于小于大橙子2 小时前
视觉SLAM数学基础
人工智能·数码相机·自动化·自动驾驶·几何学
封步宇AIGC4 小时前
量化交易系统开发-实时行情自动化交易-3.4.2.Okex行情交易数据
人工智能·python·机器学习·数据挖掘
封步宇AIGC4 小时前
量化交易系统开发-实时行情自动化交易-2.技术栈
人工智能·python·机器学习·数据挖掘
景鹤4 小时前
【算法】递归+回溯+剪枝:78.子集
算法·机器学习·剪枝
陌上阳光4 小时前
动手学深度学习68 Transformer
人工智能·深度学习·transformer
OpenI启智社区4 小时前
共筑开源技术新篇章 | 2024 CCF中国开源大会盛大开幕
人工智能·开源·ccf中国开源大会·大湾区
_OLi_4 小时前
力扣 LeetCode 704. 二分查找(Day1:数组)
算法·leetcode·职场和发展