课堂小练
对于机器学习中出现的一些问题,做一次简单的总结。
题一
为什么进行交叉验证
- 得到拟合程度模型的真实水平(模型的分类能力)
- 即交叉验证在做评估测验
- 变换交叉验证方式去测试模型泛化
交叉验证的种类
- 简单的训练集与测试集的切分 即按照百分比切分出测试集与训练集
- 标准k折交叉验证 将数据样本分为k份,每一份(n/k个样本)轮流作为测试集
- 分层k折交叉验证 在标准k折的基础上,每一折内不同类别的占比与整个数据样本内一致
- 留一法(n折交叉验证) 测试集只有一个样本,其余全部作为训练集,相当于k折交叉验证的特例(k=n)
- 随机排列交叉验证
总的来说:数据决定评估结果的上限,算法决定评估结果的下限!
题二
贝叶斯垃圾邮件分类
计算概率表单条件概率
- 推导出的公式:
题三
贝叶斯分类器的种类与应用场景
高斯贝叶斯分类器(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
题四
对三种分类器的比较
- 说KNN不需要训练,是因为它计算距离采用的是训练集自带的特征值,KNN的fit过程只是保存了训练集的值,不像贝叶斯需要计算出概率表单、决策树需要计算各特征的信息熵或基尼系数;
- 所以KNN的再“训练”成本很低,不需要进行新的计算,保存即可。
题五
决策树进行处理莺尾花分类
- 针对莺尾花数据集的各个特征,我们获取其特征值的最大最小值,确定一个取值区间;
- 用每个区间范围生成一个含有n个元素的等差数组,每个元素都视为一个阈值;
- 计算按照各阈值分割后的信息增益(或信息熵、基尼系数),比较得出最优分割特征与阈值;
- 将该特征的该阈值作为判断条件,分割出两个子数据集;
- 对每个子数据集重复上述四步操作,直到所有叶子结点信息增益为1(信息熵、基尼系数为0)或达到最大树深
期中总结
交叉验证
评价模型:评估拟合程度模型分类好坏模型泛化能力
- 对于一个事件,首先有发生:True和不发生:False,这里简称为T和F;
- 对于其是否发生我们做出预测,又有预测正确:Right和预测错误:Wrong,这里简称为R和W;
- 那么我们大致就可以将事件的预测结果分为以下四种情况:
- 发生且预测正确(预测为发生):TR
- 发生且预测错误(预测为不发生):TW
- 不发生且预测正确(预测为不发生):FR
- 不发生且预测错误(预测为发生):FW
那么对于这次对多个事件的预测结果做一个评估,我们就可以采用以下三个标准:
- 准确率:所有事件中,预测结果中与真实结果一致的占比;
- 召回率:所有真实结果为发生的事件中,被预测正确的占比;
- 精准率:所有被我们预测为发生的事件中,被预测正确的占比;
- 准确率的使用场景比较宽泛,因为它关注的是整体的预测情况;
- 召回率更适用于处理不好的事件,因为它更关注于一个事件的发生能否被更好的预测到,如对地震发生的预测则依据召回率评估比较有效;
- 精准率更适用于处理好的事件,因为它更关注于我们预测要发生的事件是否真的会发生,如对彩票中奖的预测则依据精准率评估比较有效;
超参数与参数
- 超参数:在开始学习过程之前就要设置值的参数;
- 参数:通过模型训练得出的值(或者权重);
KNN
机器学习与深度学习
- 深度学习适合处理海量的数据,对于少量的数据机器学习表现更佳
- 机器学习的优势:简单、高效;
- 深度学习的优势:特征复杂、事物本身复杂的海量数据,能趋近于无穷复杂度;
集成学习:
1)bagging:
2)boosting:
- adaboost:①强化错误训练样本;②加权;