西瓜书《机器学习》课后习题NFL

本文探讨了机器学习中的NOFREELUNCH定理,强调了对于世界上所有问题,任意两个学习算法的总误差相同,指出算法的有效性依赖于具体问题,通过条件概率解析算法性能。

NO FREE LUNCH(没有免费的午餐定律——NFL)

该定理内容是,任意两个不同的归纳偏好(类似选择模型的“价值观”)/学习算法e,对于世界上所有问题的总误差是一样的(误差的总期望)。 换句话说,也就是,无论算法的是否聪明,或者聪明程度如何,都不是任何问题都适用,总有有些适用,有些不适应,比例五五开。所以得具体问题具体对待。

本题是原书上的例题的扩展,例题内假设问题是分类问题,可以算出分类问题的期望数,此题将问题泛化。用L来表示。

利用概率论中的,条件概率求和相关知识得到答案于算法无关(具体看上解)!

### 西瓜第八章课后题解答与讨论 对于西瓜中第八章的课后题目,重点在于理解集成学习的概念及其不同方法的应用。这里提供几个典型问题的回答。 #### 不剪枝决策树构建 针对西瓜数据3.0α,在构建不剪枝决策树时,需要考虑如何选择最优划分属性以及处理连续值属性的方法[^1]。通常情况下,会基于信息增益或其他标准来挑选最佳分割点,并且对于数值型特征,则需将其离散化以便于分类器使用。 ```python from sklearn.tree import DecisionTreeClassifier import numpy as np # 构建简单的决策树模型作为示例 clf = DecisionTreeClassifier(criterion="entropy", max_depth=None, min_samples_split=2) X_train = [[...], [...]] # 输入样本集 y_train = [...] # 对应标签列表 clf.fit(X_train, y_train) ``` #### Bagging算法实现 Bagging是一种重要的集成策略,通过多次采样并训练多个基估计器最后汇总预测结果以提高稳定性。具体到Python代码层面可以借助`sklearn`库中的`BaggingClassifier`类轻松完成: ```python from sklearn.ensemble import BaggingClassifier from sklearn.neighbors import KNeighborsClassifier base_estimator = KNeighborsClassifier(n_neighbors=5) bagging_model = BaggingClassifier(base_estimator=base_estimator, n_estimators=10, bootstrap=True, oob_score=False, random_state=42) bagging_model.fit(X_train, y_train) ``` #### AdaBoost.M1算法解析 AdaBoost即自适应增强法,能够迭代调整权重使得难分错的数据得到更多关注从而逐步提升整体表现。在每次循环过程中更新实例权值分布并将弱分类器组合成强分类器。 ```python from sklearn.ensemble import AdaBoostClassifier ada_boost_clf = AdaBoostClassifier( base_estimator=DecisionTreeClassifier(max_depth=1), algorithm='SAMME', n_estimators=50, learning_rate=1. ) ada_boost_clf.fit(X_train, y_train) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值