机器学习中的算法性能假设检验--最通俗易懂

一个数据集、单个算法

一次留出法----二项检验

  m个样本的测试集上,泛化错误率为 ϵ \epsilon ϵ的学习器被测得测试错误率为 ϵ ^ \hat{\epsilon} ϵ^的概率是:
P ( ϵ ^ ; ϵ ) = ( m c ^ × m ) ϵ e ^ × m ( 1 − ϵ ) m − e ^ × m P(\hat{\epsilon} ; \epsilon)=\left(\begin{array}{c} {m} \\ {\hat{c} \times m} \end{array}\right) \epsilon^{\hat{e} \times m}(1-\epsilon)^{m-\hat{e} \times m} P(ϵ^;ϵ)=(mc^×m)ϵe^×m(1ϵ)me^×m
  服从二项分布,可使用“二项检验”进行检验。

多次重复留出法或交叉验证法----t检验

  多次重复留出法或者交叉验证法进行训练/测试,会得到多个测试错误率,此时可使用“t检验”。假定获得了k个测试错误率, ϵ 1 ^ 、 ϵ 2 ^ 、 ϵ 3 ^ … ϵ ^ k \hat{\epsilon1}、\hat{\epsilon2}、\hat{\epsilon3}…\hat{\epsilon}k ϵ1^ϵ2^ϵ3^ϵ^k,则平均测试错误率为 X ˉ \bar{X} Xˉ S 2 S^{2} S2
X ˉ = 1 k ∑ i = 1 k ε ^ i , S 2 = 1 k − 1 ∑ i = 1 k ( ε ^ i − X ˉ ) 2 \bar{X}=\frac{1}{k} \sum_{i=1}^{k} \hat{\varepsilon}_{i} \quad, \quad S^{2}=\frac{1}{k-1} \sum_{i=1}^{k}\left(\hat{\varepsilon}_{i}-\bar{X}\right)^{2} Xˉ=k1i=1kε^i,S2=k11i=1k(ε^iXˉ)2
  根据中心极限定理可知,
( X ˉ − ε ) S / n ∼ t ( n − 1 ) \frac{(\bar{X}-\varepsilon)}{S / \sqrt{n}} \sim t(\mathrm{n}-1) S/n (Xˉε)t(n1)
  t分布示意图及常用双边临界值表如下所示:
在这里插入图片描述

一个数据集、两个算法----交叉验证t检验

  对于一个数据集,两个算法A和B,使用k折交叉验证法得到的测试错误率分别为 ε ^ i A 、 ε ^ i B ( i = 1 , 2 , , , k ) \hat{\varepsilon}_{iA} 、 \hat{\varepsilon}_{iB}(i=1,2,,,k) ε^iAε^iB(i=1,2,,,k)。可采用k折交叉验证“成对t检验”来进行检验。
  基本思想是若两个算法的性能相同,则他们使用相同的训练集/测试集得到的测试错误率应相同,即 ε ^ i A = ε ^ i B \hat{\varepsilon}_{iA} = \hat{\varepsilon}_{iB} ε^iA=ε^iB
对每一组测试错误率求差值, Δ i = ε ^ A − ε ^ B \Delta_{i}=\hat{\varepsilon}_{A}-\hat{\varepsilon}_{B} Δi=ε^Aε^B,若两个算法性能相同,则差值均值为零。可根据 Δ 1 、 Δ 2 、 . . . Δ k 、 \Delta_{1、}\Delta_{2、}... \Delta_{k、} Δ1Δ2...Δk进行t检验,计算出差值的均值 ∣ Δ ⃗ ∣ |\vec{\Delta}| Δ 和方差 S 2 S^2 S2,则:
∣ ( Δ ˉ − ( ε A − ε B ) ⟩ ∣ S / k ∼ t ( k − 1 ) \frac{\left|\left(\bar{\Delta}-\left(\varepsilon_{A}-\varepsilon_{B}\right)\right\rangle\right|}{S / \sqrt{\mathrm{k}}} \sim t(\mathrm{k}-1) S/k (Δˉ(εAεB)t(k1)
  若假设 H 0 : ε A = ε B , H 1 : ε A ≠ ε B H_{0}: \varepsilon_{A}=\varepsilon_{B}, H_{1}: \varepsilon_{A} \neq \varepsilon_{B} H0:εA=εB,H1:εA=εB,则,满足 ∣ Δ ˉ ∣ S / k ≤ t ∂ / 2 \frac{|\bar{\Delta}|}{S / \sqrt{\mathrm{k}}} \leq \mathrm{t}_{\partial / 2} S/k Δˉt/2
  由于样本有限,在使用交叉验证等方法的时候,会导致不同轮次的训练集有一定程度的重叠,是的测试错误率不独立,导致过高估计假设成立的概率,为缓解这一问题,可采用“5次2折交叉验证”。

一组数据集、多个算法----Friedman检验与Nemenyi检验

Friedman检验

  假设有数据集D1、D2、D3、D4,算法A、B、C进行比较。
  使用留出法或者交叉验证得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋予序值1,2,…,若算法测试性能相同,则平分序值。
在这里插入图片描述
  使用Friedman检验来判断这些算法是否性能相同,若相同,则它们的平均序值应当相同。
  若在N个数据集,比较k个算法,令 r i {r_i} ri表示第i个算法的平均序值,则 r i {r_i} ri的均值和方差分别为 ( k + 1 ) / 2 , ( k + 1 ) ( k − 1 ) / 12 (k+1) / 2, \quad(k+1) \quad(k-1) / 12 (k+1)/2,(k+1)(k1)/12,则有:
τ χ 2 = k − 1 k ⋅ 12 N k 2 − 1 ∑ i = 1 k ( r i − k + 1 2 ) 2 = 12 N k ( k + 1 ) ( ∑ i = 1 k r i 2 − k ( k + 1 ) 2 4 ) \begin{aligned} \tau_{\chi^{2}} &=\frac{k-1}{k} \cdot \frac{12 N}{k^{2}-1} \sum_{i=1}^{k}\left(r_{i}-\frac{k+1}{2}\right)^{2} \\ &=\frac{12 N}{k(k+1)}\left(\sum_{i=1}^{k} r_{i}^{2}-\frac{k(k+1)^{2}}{4}\right) \end{aligned} τχ2=kk1k2112Ni=1k(ri2k+1)2=k(k+1)12N(i=1kri24k(k+1)2)
  在k和N比较大时,服从自由度为k-1的 χ 2 \chi^{2} χ2分布。
τ F = ( N − 1 ) τ χ 2 N ( k − 1 ) − τ χ 2 \tau_{F}=\frac{(N-1) \tau_{\chi^{2}}}{N(k-1)-\tau_{\chi^{2}}} τF=N(k1)τχ2(N1)τχ2
  服从自由度为k-1和(k-1)(N-1)的F分布。下面是F检验常用的临界值:
F检验常用临界值

Nemenyi检验

  若原假设被拒绝,则需要进行后续检验,来得到具体的算法之间的差异。常用的是Nemenyi检验。Nemenyi检验计算出平均序值差别的临界值域,下表是常用的qa值,若两个算法的平均序值差超出了临界值域CD,则相应的置信度 1 − α 1-\alpha 1α拒绝“两个算法性能本相同”的假设。
C D = q α k ( k + 1 ) 6 N C D=q_{\alpha} \sqrt{\frac{k(k+1)}{6 N}} CD=qα6Nk(k+1)
  qa中常用的联临界值:
在这里插入图片描述

链接

https://blog.youkuaiyun.com/qqMiSa/article/details/98660515

<think>嗯,用户想了解学习机器学习的入门要求。我需要先理清楚这个问题的各个方面,然后组织一个结构化的回答。首先,用户可能是刚开始接触这个领域,所以应该从基础讲起,不要用太多专业术语,但也要确保涵盖必要的内容。 首先,数学基础应该是重要的部分。机器学习涉及很多数学概念,比如线性代数、微积分、概率统计。需要解释每个数学领域在机器学习中的具体应用,比如矩阵运算在数据处理中的作用,梯度下降中的导数,概率在模型评估中的重要性。不过用户可能没有很强的数学背景,所以得强调基础的重要性,同时也要提到可以通过实践来辅助学习,避免吓退他们。 接下来是编程能力。Python应该是主要的工具,还有相关的库如NumPy、Pandas、Scikit-learn。需要提到学习这些库的基本使用,以及数据处理和可视化的技能。可能用户对编程不太熟悉,所以需要强调实践的重要性,建议他们通过项目来巩固编程技能。 然后是机器学习的基础理论,比如监督学习和无监督学习的区别,常见的算法如线性回归、决策树等。这部分需要简明扼要,避免深入复杂的算法细节,但要让用户了解需要掌握哪些基本概念。另外,模型评估指标如准确率、召回率也需要提及,因为这些是衡量模型性能的关键。 工具和框架部分,应该包括TensorFlow、PyTorch,以及数据处理工具如Pandas和可视化工具Matplotlib。这部分可以稍微详细一点,但也要说明这些工具的学习路径,比如先学Scikit-learn再过渡到深度学习框架。 实践项目的重要性,用户可能想知道如何应用所学知识,所以需要强调做项目的好处,比如Kaggle竞赛或自己找数据集。同时,阅读经典教材和论文可以提升理论水平,但可能对新手来说有点难,所以建议先打好基础再深入。 持续学习方面,跟进新进展和加入社区交流是必要的。可能用户担心自己无法跟上快速发展的领域,所以需要鼓励他们保持学习习惯,参与社区讨论。 后,学习路径建议分阶段,从基础到进阶,逐步深入。同时,提醒用户保持耐心和兴趣,因为机器学习的学习曲线可能较陡峭。 需要检查是否有遗漏的部分,比如是否需要提到硬件要求,比如GPU之类的?不过入门阶段可能不需要太高配置的硬件,所以可能不用强调。另外,是否要推荐一些在线课程或资源?可能用户会需要,但问题主要是入门要求,不是资源列表,所以可以简要提及或放在后作为建议。 总的来说,回答应该结构清晰,分点列出,语言通俗易懂,鼓励用户逐步学习,不要被数学或编程吓到,强调实践和项目经验的重要性。同时,考虑到用户可能是完全的新手,避免使用过于技术性的术语,必要时举例说明。</think>机器学习的入门要求可以从基础知识、技能储备、工具使用和实践路径几个方面来介绍。以下是具体内容: -- ### **1. 数学基础** 机器学习依赖数学理论支撑,入门需掌握以下核心领域: - **线性代数**:矩阵运算、向量空间、特征值分解(用于数据降维、神经网络等)。 - **微积分**:导数和梯度(理解优化算法如梯度下降)、偏导数(深度学习中的反向传播)。 - **概率与统计**:概率分布、贝叶斯定理、假设检验(模型评估、算法设计的基础)。 **学习建议**:无需精通所有数学细节,但需理解核心概念如何应用于算法(如逻辑回归中的概率建模)。 --- ### **2. 编程能力** - **语言选择**:推荐 **Python**(社区资源丰富,库支持完善)。 - **关键库**: - **NumPy/Pandas**:处理数值计算和结构化数据。 - **Scikit-learn**:实现经典机器学习算法(分类、回归、聚类)。 - **Matplotlib/Seaborn**:数据可视化工具。 - **基础技能**:熟悉数据清洗、特征工程、模型调参流程。 **学习建议**:通过实战项目(如Kaggle入门赛)巩固编程技能。 -- ### **3. 机器学习基础理论** - **核心概念**: - 监督学习(分类、回归) vs. 无监督学习(聚类、降维)。 - 过拟合与欠拟合、偏差-方差权衡。 - 交叉验证、正则化等优化方法。 - **经典算法**:线性回归、逻辑回归、决策树、K近邻、支持向量机(SVM)等。 - **模型评估**:准确率、精确率、召回率、F1分数、ROC曲线等指标。 **学习建议**:先理解算法原理和适用场景,再学习代码实现。 --- ### **4. 工具与框架** - **深度学习框架**(可选但推荐):TensorFlow/PyTorch(适合进阶学习神经网络)。 - **数据处理工具**:SQL(数据库查询)、Excel(快速分析)。 - **开发环境**:Jupyter Notebook(交互式编程)、VS Code/PyCharm(代码调试)。 --- ### **5. 实践路径** - **入门项目**: - 预测房价(回归问题)、手写数字识别(分类问题)。 - 使用公开数据集(如UCI、Kaggle)进行探索。 - **系统学习**: - 在线课程:推荐吴恩达《机器学习》(Coursera)或国内慕课(如李沐《动手学深度学习》)。 - 书籍:《机器学习实战》《Python机器学习手册》。 - **持续提升**: - 参与竞赛(如Kaggle)、复现经典论文。 - 关注AI顶会(NeurIPS、ICML)和开源社区(GitHub)。 --- ### **6. 软性要求** - **逻辑思维**:能够将实际问题抽象为数学模型。 - **耐心与抗挫力**:调参和debug可能耗时较长。 - **英语能力**:主流资料和论文多为英文。 -- ### **学习路线建议** 1. **第一阶段**:掌握Python基础 + 数学核心概念。 2. **第二阶段**:学习Scikit-learn实现经典算法,完成1~2个小项目。 3. **第三阶段**:深入深度学习(可选)或专攻某个方向(如自然语言处理、计算机视觉)。 --- **关键提醒**:机器学习领域更新快,但核心理论相对稳定。入门时不必追求“新技术”,打好基础后逐步扩展知识边界。保持动手实践的习惯,理论结合项目才能融会贯通!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值