版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章集成学习
(Ensemble
Learning)我们已经开发了很多机器学习算法/代码。单个模型的性能已经调到最优,很难再有改进。集成学习:用很少量的工作,组合多个基模型,使得系统性能提高集成学习
三个臭皮匠,顶个诸葛亮误差的偏差-方差分解Bagging随机森林提升法投票法堆叠法大纲误差的偏差-方差分解偏差:模型预测值的期望与真值之间的差异实践中,当训练误差稳定时,训练误差的大小可视为模型偏差(训练充分时,模型与训练数据的拟合程度)方差:预测值作为随机变量的变化程度当训练误差稳定时,训练误差与验证误差之间的差异可视为模型的方差(由于数据不同模型性能的差异)
噪声可以证明:当误差度量取军方误差时,误差的偏差-方差分解
噪声偏差-方差权衡
学习曲线(Learning
Curve)学习曲线:不同训练集大小时训练集和验证集的性能
横轴:训练样本的数量
纵轴:模型性能train_sizes,train_scores,validation_scores=
learning_curve
(estimator,
X,
y,
*,
groups=None,
train_sizes=array([0.1,
0.33,
0.55,
0.78,
1.]),
cv=None,
scoring=None,
exploit_incremental_learning=False,
n_jobs=None,
pre_dispatch='all',
verbose=0,
shuffle=False,
random_state=None,
error_score=nan,
return_times=False)返回值:训练集大小、训练集和验证集上的误差得分参数:学习器、数据、训练集大小、交叉验证参数、性能评价指标学习曲线(Learning
Curve)学习曲线:通过画出不同训练集大小时训练集和验证集的性能训练误差随训练集增大而增大,然后趋于稳定验证误差随训练集增大而减少,然后趋于稳定二者之间的差异随训练集增大而减少,然后趋于稳定不同模型区域稳定的样本集合大小不同
简单模型需要更少的训练数据学习曲线偏差:当训练误差稳定时,训练误差的大小可视为模型偏差(训练充分时,模型与训练数据的拟合程度)随机森林偏差小、线性模型偏差大方差:当训练误差稳定时,训练误差与验证误差之间的差异可视为模型的方差(由于数据不同模型性能的差异)随机森林方差大、线性模型方差小学习曲线(Learning
Curve)
验证集和训练集的误差值都很大,偏差大,此时为欠拟合训练集误差非常小,但验证集误差远大于训练集误差,此时为过拟合不可约误差为什么集成学习有效?如果学习算法能减少模型的偏差(提高算法在训练集上的性能)或者降低模型的方差(从训练集到验证集上更好地泛化),模型的性能都会有所提高。集成学习将多个模型通过合适的方式组合,使得组合后的模型的偏差和/或方差变小,从而得到性能更好的学习器。如果基础模型太弱(高偏差),通过弱弱组合变强;如果基础模型太复杂(高方差),通过互相遏制变壮。基学习器:
“好而不同”
每个基分类器正确率为66.6%每个基分类器精度为66.6%但每个基分类器之间没有差别
每个基分类器的精度为33.3%
集成学习的两个基本问题如何训练出具有差异性的多个基学习器?
基学习器算法不同:异质集成学习
基学习器算法相同,但训练集不同:同质集成学习如何将多个基学习器的预测结果集成为最终的强学习器预测结果?Bagging、Boosting、投票、堆叠
误差的偏差-方差分解Bagging随机森林提升法投票法堆叠法大纲Baggingaggregating训练集子训练集子训练集子训练集Bootstrap采样基模型1基模型2
训练模型
集成模型
预测结果投票/平均预测…
Baggingaggregating
Bootstrap
Bootstrap如何训练出具有差异性的多个基学习器?基学习器算法相同,但训练集不同:对训练集的Bootstrap采样如何将多个基学习器的预测结果集成为最终的强学习器预测结果?
每个基学习器的地位相同:分类任务通常采取投票法,取多个基学习器的预测类别的众数;
回归任务通常使用平均法,取多个基学习器的预测值的平均
Bagging:集成学习的两个基本问题
Bagging:降低模型方差
Bagging可降低模型方差推荐阅读:《为什么说bagging是减少variance,而boosting是减少bias?》使用sklearn进行集成学习——理论/jasonfreak/p/5657196.htmlBagging适合对偏差低、方差高的模型进行融合如较复杂的决策树、神经网络决策树很容易过拟合
偏差低、方差高如果每个训练样本为一个叶子结点,训练误差为0BaggingScikit-Learn中支持对任意基学习器的Bagging分类:BaggingClassifier回归:BaggingRegressorScikit-Learn中的Baggingclass
sklearn.ensemble.BaggingClassifier(base_estimator=None,
n_estimators=10,
max_samples=1.0,
max_features=1.0,
bootstrap=True,
bootstrap_features=False,
oob_score=False,
warm_start=False,
n_jobs=None,
random_state=None,
verbose=0)class
sklearn.ensemble.BaggingRegressor(base_estimator=None,
n_estimators=10,
max_samples=1.0,
max_features=1.0,
bootstrap=True,
bootstrap_features=False,
oob_score=False,
warm_start=False,
n_jobs=None,
random_state=None,
verbose=0)参数说明base_estimator基学习器,scikit-learn的分类器或回归器。如果没有给出,默认使用决策树(不推荐,不如RandomForest)。n_estimators基学习器的数目。通常基学习器越多,模型的方差越小。max_samples每个数据子集(用于训练基学习器)的样本数量。可以是浮点数(0.0至1.0,表示取样本占所有样本的比例),也可以是整数(表示样本的实际数量)。注意:如果输入了1而不是1.0,那么每个数据子集仅包含1个样本,会导致严重失误。max_features训练基学习器的特征数量。bootstrap在随机选取样本时是否是有放回bootstrap_features在随机选取特征时是否是有放回oob_score是否计算out-of-bag分数。每个基学习器只在原始数据集的一部分上训练,所以可以用剩下样本上的误差(out-of-bagerror),来估计它的泛化误差/测试误差。warm_start如果是True,在下一次使用fit方法时,向原有的模型再增加n_estimators个新的基学习器。BaggingClassifier的参数class
sklearn.ensemble.BaggingClassifier(base_estimator=None,
n_estimators=10,
max_samples=1.0,
max_features=1.0,
bootstrap=True,
bootstrap_features=False,
oob_score=False,
warm_start=False,
n_jobs=None,
random_state=None,
verbose=0)在Bagging中,每个基学习器只在原始数据集的一部分上训练,所以可以不用交叉验证,直接用包外样本上的误差(out-of-bagerror)来估计它的泛化误差/测试误差。Out-of-bagerror(OOBE)全体训练数据单次训练数据单次测试数据正确率估计:11/15*100%=73.33%
基学习器数目由于只是训练数据有一些不同,对决策树算法进行Bagging得到的多棵树高度相关,因此带来的方差减少有限。随机森林通过随机选择一部分特征随机选择一部分样本降低树的相关性随机森林在很多应用案例上被证明有效,但牺牲了可解释性森林:多棵树随机:对样本和特征进行随机抽取随机森林(Random
Forest)
Scikit-Learn中实现了两种包含随机树的森林随机森林(Random
Forests)极度随机森林(
ExtremelyRandomizedTrees)
极度随机森林组合比随机森林更随机在分裂时,随机森林寻找特征最有判别力的阈值。极度随机森林中,随机选取每个候选特征的阈值,然后从这些随机选取的阈值中寻找最佳阈值:每个结点上找到每个特征的最佳阈值是决策树生长中最耗时的任务极度随机森林对方差的减少会更多一些,但偏差可能增大一点点。Scikit-Learn中的随机森林随机森林模型参数众多,且涉及随机操作,在分类任务中当不同类别的样本数目不均衡时,超参数调优时需慎重。一般来说,先调含随机性的参数先初调“子采样率”(subsample)和“分裂时考虑的最大特征数”(max_features)再调叶节点最小样本数”(min_samples_leaf)和“分裂所需最小样本数”(min_samples_split)再调无随机性的参数:“最大深度”(max_depth)或“最大叶节点数”(max_leaf_nodes)随机森林超参数调优推荐阅读:使用sklearn进行集成学习——实践OutlineBagging提升法AdaBoostGradient
Boosting
Decision
Tree(GBDT)XGBoostLightGBMCatBoost投票法堆叠法提升法:Boosting并行顺序提升法:Boosting
弱学习器是按顺序学习的。怎样得到互补的学习器?在不同的训练集上训练学习器。怎么得到不同的训练集?对原始训练集重采样改变训练集的标签(基于梯度的提升法)对原始训练集重新加权(AdaBoost)在实际操作中,改变目标函数即可:
…
AdaBoost的基本思想
样本重新加权
权重减小权重增大样本重新加权
样本重新加权
AdaBoost
M1算法
准确率越高的弱学习机权重越高。例:AdaBoost
弱学习器:决策树桩
例:AdaBoost
例:AdaBoost
例:AdaBoost
训练误差可以证明:随着弱学习器数目增多,训练误差越来越小。证明
形式与训练误差很像证明(cont.)
0-1损失指数损失
证明(cont.)
证明(cont.)
测试误差
测试误差
回忆SVM中间隔的概念margin小的样本很少,即样本的margin都很大,泛化性能好前向分步加法模型解释
前向分步加法模型解释
前向分步加法模型解释
OutlineBagging提升法AdaBoostGradient
Boosting
Decision
Tree(GBDT)XGBoostLightGBMCatBoost投票法堆叠法Boosting的一般框架
Gradient
Boosting
用弱学习器来拟合目标函数的负梯度。(回归问题)GradientBoosting
Algorithm
从Gradient
Descent到Gradient
BoostingFrom:http://wepon.me/files/gbdt.pdf
GradientBoosting—不同损失函数对分类问题,损失函数取负log似然损失,得到logitBoosting。对回归问题,损失函数可取L2损失,得到L2boosting。
L2Boosting
预测残差
例:回归582134-52780134-5412103134-3123118134-16251721343828127134-7292041347034189134553599134-354016613432
例:回归
582134-5295.75-13.75780134-5495.75-15.7512103134-3195.757.2523118134-1695.7522.25251721343825.5159.512.528127134-725.5159.5-32.5292041347025.5159.544.5341891345525.5159.529.53599134-3525.5159.5-60.5401661343225.5159.56.5
例:回归
582134-5295.75-13.756.75102.50-20.50780134-5495.75-15.756.75102.50-22.5012103134-3195.757.256.75102.500.5023118134-1695.7522.256.75102.5015.60251721343825.5159.512.56.75166.255.7528127134-725.5159.5-32.56.75166.25-39.25292041347025.5159.544.56.75166.2537.75341891345525.5159.529.56.75166.2522.753599134-3525.5159.5-60.5-27.00132.50-33.50401661343225.5159.56.5-27.00132.5033.50
例:回归582134-5295.75-13.756.75102.50-20.50-10.0833392.41667780134-5495.75-15.756.75102.50-22.50-10.0833392.4166712103134-3195.757.256.75102.500.50-10.0833392.4166723118134-1695.7522/256.75102.5015.60-10.0833392.41667251721343825.5159.512.56.75166.255.75-10.08333156.1666728127134-725.5159.5-32.56.75166.25-39.25-10.08333156.16667292041347025.5159.544.56.75166.2537.7515.12500181.37500341891345525.5159.529.56.75166.2522.7515.12500181.375003599134-3525.5159.5-60.5-27.00132.50-33.5015.12500147.62500401661343225.5159.56.5-27.00132.5033.5015.12500147.62500
例:回归最后残差倾向于白噪声,没有模式,无需再学习器logitBoosting
logitBoosting
logitBoosting
logitBoosting所以
logitBoosting
预测残差
Shrinkage
OutlineBagging随机森林提升法AdaBoostGradient
Boosting
Decision
Tree(GBDT)XGBoostLightGBMCatBoost投票法堆叠法XGBoostXGBoost:eXtremeGradientBoosting可自定义损失函数:采用二阶Taylor展开近似损失函数规范化的正则项:叶子节点数目、叶子结点的分数建树支持分裂点近似搜索稀疏特征处理缺失值处理并行计算内存缓存推荐阅读:深入理解XGBoost(/fengdu78/article/details/104284924)损失函数的二阶近似
常用损失函数的g和h
正则项
正则项
目标函数
目标函数
分数越小的树越好!例:树的分数H2回归树的学习策略当树的结构确定时,我们前面已经推导出其最优的叶节点分数以及对应的最小损失值。如何确定树的结构?
暴力枚举所有可能的树结构,选择损失值最小的——NP难问题
贪心法:每次尝试分裂一个叶节点,计算分裂前后的增益,选择增益最大的分裂如何度量分裂的增益?分裂的增益度量ID3算法采用信息增益C4.5算法采用信息增益比CART采用Gini系数XGBoost:
增益
精确贪心算法
例:精确贪心算法左分支为age<b的样本共4个样本:A、B、C、D
对所有特征都按照特征的数值进行预排序精确贪心算法
基于直方图的近似算法当数据太多不能装载到内存时,不能进行精确搜索分裂,只能近似根据特征分布的百分位数(或直方图),提出特征的一些候选分裂点将连续特征值映射到桶里(候选点对应的分裂),然后根据桶里样本的统计量,从这些候选中选择最佳分裂点根据候选提出的时间,分为全局近似:在构造树的初始阶段提出所有的候选分裂点,然后对各个层次采用相同的候选提出候选的次数少,但每次的候选数目多(因为候选不更新)局部近似:在每次分裂重新提出候选对层次较深的树更适合例:直方图近似确定分割点直方图近似确定分割点6个可能的分裂点2个可能的分裂点直方图可减少候选分裂点的数目直方图可减少存储,且无需排序
对长尾分布,直方图可能利用不充分
稀疏特征在实际任务中,极有可能遇到稀疏特征缺失数据人工设计的特征:如独热(one-hot)编码XGBoost:在树的每个结点设置一个缺省方向稀疏特征统一的稀疏特征处理方案:将稀疏特征视为缺失值最佳缺省方向确定:只访问非缺失数据计算复杂度与非缺失数据数目线性相关
D,D在数据高度稀疏的Allstate-10K数据集上稀疏算法比基本算法快近50倍
(假设缺省方向为右边)(假设缺省方向为左边)OutlineBagging随机森林提升法AdaBoostGradient
Boosting
Decision
Tree(GBDT)XGBoostLightGBMCatBoost投票法堆叠法LightGBM:LightGradientBoostingMachineLightGBM是Microsoft开发的一个GBDT算法框架,支持高效率的并行训练,并且具有以下优点:更快的训练速度更低的内存消耗分布式支持,可以快速处理海量数据/Microsoft/LightGBMLightGBM的优化基于直方图的分裂算法直方图加速构造带深度限制的Leaf-wise的叶子生长策略直接支持类别型特征(CategoricalFeature)Cache命中率优化多线程优化基于Histogram的决策树算法
相当于数值特征离散化/分组:一个bin为一组Histogram算法的计算优势Histogram算法可大幅减少计算分割点增益的次数对于一个特征,预排序需要对每一个不同特征值都计算一次分割增益,而histogram只需要计算#bin次。Histogram算法的缺点Histogram算法不能找到精确的分割点,训练误差没有预排序算法好。但从实验结果来看,Histogram算法在测试集的误差预排序算法算法差异并不是很大,甚至有时候效果更好。实际上可能决策树对于分割点的精确程度并不太敏感,而且较“粗”的分割点也自带正则化的效果。Histogram做差加速
直方图加速计算
直方图加速:基于梯度的单边采样减少样本数:抛弃那些不太重要的样本梯度:样本重要性度量
梯度很小:该样本的训练误差很小,或者说该样本已经能被模型很好表示,样本的重要性低但直接抛弃梯度很小的样本会改变样训练集的分布,使得模型准确率下降保留梯度绝对值大的样本,对梯度的绝对值小的样本进行采样,对减少实际访问样本数直方图加速:基于梯度的单边采样基于梯度的单边采样(Gradient-basedOne-SideSampling,GOSS)
样本索引梯度4-53320.560.250.110样本索引梯度4-53360.250.1采样将增加基学习器的多样性直方图加速:互斥特征捆绑
直方图加速:互斥特征捆绑
直方图加速:互斥特征捆绑特征捆绑:图着色问题1.初始化:
计算结点的度(或特征非零值的样本数),根据度对特征进行排序特征束为空2.
对每个特征(根据度的大小)
计算特征与已有束的冲突程度。如冲突小,就加入到该计算束;如果与所有现有的束的冲突都较大,则生成一个新束;训练之前只处理一次例:互斥特征捆绑feature1和feature2互斥(不同时取非0值)
feature1和feature2变成一束确保捆绑特性(feature1和feature2)的非零数据点位于不同的bucket中。在feature_bundle中,bucket1到4包含feature1的非零实例,bucket5(4+1)、6(4+2)包含feature2的非零实例。将互斥特征放在不同的箱中来构建bundle:将偏移量添加到特征原始值带有深度限制的按叶子生长(leaf-wise)算法Level-wise过一次数据可以同时分裂同一层的叶子,容易进行多线程优化,不容易过拟合但Level-wise不加区分的对待同一层的叶子,带来了很多没必要的开销,比较低效(分裂增益较低,没必要进行搜索和分裂)Leaf-wise每次从当前所有叶子中,找到分裂增益最大(一般也是数据量最大)的一个叶子进行分裂。同level-wise相比,在分裂次数相同的情况下,leaf-wise可以降低更多的误差,得到更好的精度。Leaf-wise的缺点是可能会长出比较深的决策树,产生过拟合。因此LightGBM在leaf-wise之上增加了一个最大深度的限制,在保证高效率的同时防止过拟合。直接支持类别型特征大多数机器学习工具都无法直接支持类别型特征,一般需要把类别型特征转化到多维的0/1特征,降低了空间和时间效率。LightGBM优化了对类别型特征的支持,直接输入类别特征,不需要额外的0/1展开,并在决策树算法上增加了类别型特征的决策规则。切分不平衡:分裂增益很小得到的空间划分太小:落入该区域的数据少,统计信息不准确,学习不充分直接支持类别型特征
OutlineBaggingBoostingAdaBoostGradient
Boosting
Decision
Tree(GBDT)XGBoostLightGBMCatBoost投票法堆叠法CatBoost:
专为类别特征而生的无偏BoostingCatBoost(CategoricalBoosting)由Yandex在2017年开发的一种改进的梯度提升算法。核心创新:避免目标泄露原生支持类别特征避免目标泄露使用对称树结构实际应用中很多特征都是离散值/类别型特征。如商品类型类别型特征编码
0/1编码
标签编码独热编码计数编码类别型特征编码
标签编码#import编码器fromsklearn.preprocessingimportLabelEncoder#1.生成编码器实例enc=LabelEncoder()#调用fit_transform进行编码(对测试集调用transform)genre_labels=enc.fit_transform(df['Genre'])
独热编码Scikt-learn中的OneHotEncoderclass
sklearn.preprocessing.OneHotEncoder(*,
categories='auto',
drop=None,
sparse_output=True,
dtype=<class
'numpy.float64'>,
handle_unknown='error',
min_frequency=None,
max_categories=None,
feature_name_combiner='concat')
视频游戏有6代(特征'Generation'有6个不同的取值)例:独热编码fromsklearn.preprocessingimportOneHotEncoderenc=OneHotEncoder()transformed_df=pd.DataFrame(enc.fit_transform(df[‘Generation’]),
columns=enc.get_feature_names_out(),
index=df.index)poke_df=pd.concat([df,
transformed_df],axis=1)NameGenerationGeneration_Gen1Generation_Gen2Generation_Gen3Generation_Gen4Generation_Gen5Generation_Gen64OctilleryGen20.01.00.00.00.00.05HelioptileGen60.00.00.00.00.01.06DialgaGen40.00.00.01.00.00.0
计数编码
计数编码class
sklearn.preprocessing.TargetEncoder(categories='auto',
target_type='auto',
smooth='auto',
cv=5,
shuffle=True,
random_state=None)1.增加先验2.将样本打散顺序(随机置换),只用每个样本前面(伪历史)的样本来统计信息
某一行数据的目标值绝不会被用于计算该行自身的特征编码,同时随机置换确保这种顺序不会受到原始数据集中固有序列的偏差影响。对于目标变量为连续值的回归任务,CatBoost首先将目标变量离散化为多个区间(bin)。然后以这些区间标识作为目标标签执行有序目标编码,将回归问题有效转化为类分类任务的编码过程。测试:用整个训练数据集的目标统计信息,确保预测结果具有确定性且计算效率高。CatBoost的信息泄漏解决方案
通过“最喜欢的颜色”预测某人是否“喜欢《巨怪2》”(目标变量:1=是),且数据已进行随机排列例顺序(Order)最喜欢的颜色(FavoriteColor)喜欢《巨怪2》(目标)先验目标和先验类别计数编码值1蓝色(Blue)1000.0502红色(Red)0000.0503绿色(Green)1000.0504蓝色(Blue)0110.5255绿色(Green)1110.5256绿色(Green)1220.6837蓝色(Blue)1120.350某一类别的编码值会随着观测样本数量的增加而变化,但任意一行数据的编码计算均严格依赖于其之前的序列数据。用随机置换的伪历史信息来估计叶子节点的预测值(残差平均值),确保确保某个样本自身的残差不会被用于计算自身的预测值在评估和选择最佳分割阈值时,CatBoost使用余弦相似度作为度量标准(而非常用的L2损失),方向一致更重要残差预测防信息泄漏CatBoost采用对称树(SymmetricTrees),又称无偏树(
ObliviousTrees)作为其架构的核心组件。对称决策树计算效率高,还能作为正则化器。对称决策树:树中同一层级的所有节点,使用完全相同的特征和分割阈值例如,第一层(0层)的分割条件为“特征A<10”,第二层的所有节点将使用相同的后续条件(如“特征B<5”)进行分割(
标准决策树中,同一层级的不同节点可自由使用不同的特征和阈值)效果:弱学习器特性、结构统一、高效推理;单棵树表达能力弱,但整体组合效果佳对称决策树OutlineBagging提升法投票法堆叠法投票法各基学习器的地位相同时,集成采用简单的投票(分类任务)或平均(回归)机制即可。但当不同基学习器性能差别较大时,可以对各基学习器的结果采用加权平均法,其中权重需要用户根据经验指定。OutlineBagging提升法投票法堆叠法堆叠法各基学习器的地位相同时,集成采用简单的投票(分类任务)或平均(回归)机制即可。但当不同基用户根学习器性能差别较大时,可以对各基学习器的结果采用加权平均法,其中权重需要据经验指定,或者采用堆叠法对基模型进行更好的融合。信息泄露堆叠法:类似交叉验证堆叠法:类似留出法在训练集创建一个小的留出集(probe),用于训练stacker模型CombiningPredictionsforAccurateRecommenderSystems,MichaelJahrer,AndreasTöscher,RobertLe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《2026年中山市家电行业深度研究与目标企业全景解析(Q2版)》
- 4.4.2 一元一次不等式的应用 同步练习【北京】七下数学一课一练
- 用心服务赢得信赖
- 研究生考试《自然辩证法概论》练习题附答案
- 中医骨伤护理的饮食指导
- 海南海口市英语初一下学期期末复习要点解析
- 《英语书评写作|内容概括与评价表达》
- 四川绵阳市2026年一级建造师执业资格考试(公路工程管理与实务)综合能力测试题及答案
- 福建省福建房地产估价师考试题库及答案(2026年)
- 2026年一级注册消防工程师考试模拟题(含3科)题库及答案(肇庆)
- 煤矿安全生产标准化管理体系2024版与2026版对比分析报告
- 2025-2026学年-浙教版七年级下册数学期末质量检测模拟卷(含答案)
- 2026年湖南省岳阳市高一下学期期末考试数学试卷(含参考答案)
- 2026年版初中历史八年级下册复习提纲(表格型)
- 二级公共营养师《专业技能》试卷真题及解析(2026年)
- 2026年北京医师定期考核法律法规复习试题(附答案)
- 2026秋人教版九年级英语上册单词默写
- 初中道德与法治九年级下册构建人类命运共同体
- 《腔镜手术的麻醉》
- 古代诗歌散文专题复习
- 白内障ECCE(小切口囊外摘除)课件
评论
0/150
提交评论