课堂小练

对于机器学习中出现的一些问题,做一次简单的总结。

题一

为什么进行交叉验证

  • 得到拟合程度交叉验证法 r 随机森林 交叉验证的r2和r_python模型的真实水平(模型的分类能力)
  • 即交叉验证在做评估测验
  • 变换交叉验证方式去测试模型交叉验证法 r 随机森林 交叉验证的r2和r_python泛化

交叉验证的种类

  1. 简单的训练集与测试集的切分 交叉验证法 r 随机森林 交叉验证的r2和r_python 即按照百分比切分出测试集与训练集
  2. 标准k折交叉验证 交叉验证法 r 随机森林 交叉验证的r2和r_python 将数据样本分为k份,每一份(n/k个样本)轮流作为测试集
  3. 分层k折交叉验证 交叉验证法 r 随机森林 交叉验证的r2和r_python 在标准k折的基础上,每一折内不同类别的占比与整个数据样本内一致
  4. 留一法(n折交叉验证) 交叉验证法 r 随机森林 交叉验证的r2和r_python 测试集只有一个样本,其余全部作为训练集,相当于k折交叉验证的特例(k=n)
  5. 随机排列交叉验证 交叉验证法 r 随机森林 交叉验证的r2和r_python

总的来说:数据决定评估结果的上限,算法决定评估结果的下限!

题二

贝叶斯垃圾邮件分类

计算概率表单交叉验证法 r 随机森林 交叉验证的r2和r_交叉验证法 r 随机森林_08条件概率交叉验证法 r 随机森林 交叉验证的r2和r_分类算法_09

  • 推导出交叉验证法 r 随机森林 交叉验证的r2和r_机器学习_10的公式:

题三

贝叶斯分类器的种类与应用场景

高斯贝叶斯分类器(GaussianNB)
sklearn.naive_bayes.GaussianNB
  • 无参数,不需要调参
  • 方法
  • fit()
  • partial_fit():追加训练模型,适用于规模大的数据集,划分为若干个小数据集,在这些小数据集上连续使用partial_fit训练模型
  • predict()
  • score()
  • 属性
  • class_prior_:每个类别的概率
  • class_count_:每个类别包含样本数量
多项式贝叶斯分类器(MultinomialNB)
  • 适用特征为2个以上离散量,特征数据符合多项分布
sklearn.naive_bayes.MutlnomialNB
  • 参数
  • alpha:浮点数,指定朴素贝叶斯估计公式中λ值
  • fit_prior=True:是否学习P(y=Ck),不学习则以均匀分布替代
  • class_prior=None:可以传入数组指定每个分类的先验概率,None代表从数据集中学习先验概率
  • class_count:数组,形状为(n_class,),每个类别包含训练样本数量
  • feature_count:数组,形状(n_class,n_features),每个类别每个特征遇到的样本数
  • 方法同上述的高斯贝叶斯分类器
伯努利贝叶斯分类器(BernoulliNB)
  • 适用特征只有2个离散量,特征数据符合伯努利二项分布
  • 特征取值只能是0和1(如文本分类中某个词出现,特征为1;无,特征为0)
sklearn.naive_bayes.BernoulliNB
  • 参数
  • alpha:浮点数,指定贝叶斯估计中的λ
  • binarize=0.0:浮点数或None,None表明原始数据已二元化;浮点数作为边界,特征取值大于该边界作为1,否则作为0(通过这个浮点数来实现二元化)
  • fit_prior=True:是否学习P(y=Ck),不学习则以均匀分布替代
  • class_prior=None:可以传入数组指定每个分类的先验概率,None代表从数据集中学习先验概率
  • class_count:数组,形状为(n_class,),每个类别包含训练样本数量
  • feature_count:数组,形状(n_class,n_features),每个类别每个特征遇到的样本数
  • 方法同上述高斯贝叶斯分类器
  • alpha对预测的影响,越大(>100)准确率反而下降
  • binarize不能过小不能太大,一般取所有特征的所有值的(Min+Max)/2

题四

对三种分类器的比较

交叉验证法 r 随机森林 交叉验证的r2和r_机器学习_11

  • 说KNN不需要训练,是因为它计算距离采用的是训练集自带的特征值,KNN的fit过程只是保存了训练集的值,不像贝叶斯需要计算出概率表单、决策树需要计算各特征的信息熵或基尼系数;
  • 所以KNN的再“训练”成本很低,不需要进行新的计算,保存即可。

题五

决策树进行处理莺尾花分类

  1. 针对莺尾花数据集的各个特征,我们获取其特征值的最大最小值,确定一个取值区间;
  2. 用每个区间范围生成一个含有n个元素的等差数组,每个元素都视为一个阈值;
  3. 计算按照各阈值分割后的信息增益(或信息熵、基尼系数),比较得出最优分割特征与阈值;
  4. 将该特征的该阈值作为判断条件,分割出两个子数据集;
  5. 对每个子数据集重复上述四步操作,直到所有叶子结点信息增益为1(信息熵、基尼系数为0)或达到最大树深

交叉验证法 r 随机森林 交叉验证的r2和r_分类算法_12

期中总结

交叉验证

评价模型:评估拟合程度交叉验证法 r 随机森林 交叉验证的r2和r_交叉验证法 r 随机森林_08模型分类好坏交叉验证法 r 随机森林 交叉验证的r2和r_交叉验证法 r 随机森林_08模型泛化能力

  • 对于一个事件,首先有发生:True和不发生:False,这里简称为T和F
  • 对于其是否发生我们做出预测,又有预测正确:Right和预测错误:Wrong,这里简称为R和W
  • 那么我们大致就可以将事件的预测结果分为以下四种情况:
  • 发生且预测正确(预测为发生):TR
  • 发生且预测错误(预测为不发生):TW
  • 不发生且预测正确(预测为不发生):FR
  • 不发生且预测错误(预测为发生):FW

那么对于这次对多个事件的预测结果做一个评估,我们就可以采用以下三个标准:

  • 准确率:所有事件中,预测结果中与真实结果一致的占比;交叉验证法 r 随机森林 交叉验证的r2和r_sklearn_15
  • 召回率:所有真实结果为发生的事件中,被预测正确的占比;
    交叉验证法 r 随机森林 交叉验证的r2和r_python_16
  • 精准率:所有被我们预测为发生的事件中,被预测正确的占比;
    交叉验证法 r 随机森林 交叉验证的r2和r_sklearn_17
  • 准确率的使用场景比较宽泛,因为它关注的是整体的预测情况;
  • 召回率更适用于处理不好的事件,因为它更关注于一个事件的发生能否被更好的预测到,如对地震发生的预测则依据召回率评估比较有效;
  • 精准率更适用于处理好的事件,因为它更关注于我们预测要发生的事件是否真的会发生,如对彩票中奖的预测则依据精准率评估比较有效;

超参数与参数

  • 超参数:在开始学习过程之前就要设置值的参数;
  • 参数:通过模型训练得出的值(或者权重);

KNN交叉验证法 r 随机森林 交叉验证的r2和r_python_18

机器学习与深度学习

  • 深度学习适合处理海量的数据,对于少量的数据机器学习表现更佳
  • 机器学习的优势:简单、高效;
  • 深度学习的优势:特征复杂、事物本身复杂的海量数据,能趋近于无穷复杂度;

集成学习:

1)bagging:交叉验证法 r 随机森林 交叉验证的r2和r_分类算法_19

2)boosting:交叉验证法 r 随机森林 交叉验证的r2和r_分类算法_20

  • adaboost:①强化错误训练样本;②加权;