1 数据处理和分析
1.1数据收集和预处理
数据清洗:从数据集中检测和纠正不准确的记录的过程。
相关性分析:一对变量呈线性相关的程度
1.2 数据挖掘和机器学习算法
机器学习:对计算机算法的研究,它可以通过经验和使用数据来自动改进。
数据挖掘:在大型数据集中提取和发现模式的过程。
1.3 大数据计算模型
批处理计算模型:数据吞吐量高,适用于海量数据。MapReduce
流处理计算模型:处理延时较短,适用于产生速度快并需要及时处理的实时数据流处理。Storm
混合计算模型:从何批处理二号流处理优点,有更高的系统复杂度。Spark,Flink
图处理模型:适合处理大规模图数据。GraphLab
查询分析计算模型:大规模数据存储管理和查询分析。Dremel,Hive,Cassandra
1.4 分类和回归的评估
TP:正类判定为正类
TN:负类判定为负类
FP:负类判定为正类
FN: 正类判定为负类
准确率(Accuracy):所有的预测正确的占总的比例。(TP+TN)/(TP+TN+FP+FN)
精确率(Precision):正确预测为正的占全部预测为正的比例。TP/(TP+FP)
召回率(Recall):查全率,即正确预测为正的占全部实际为正的比例。TP/(TP+FN)
【准确率、精确率、召回率、F1值、ROC/AUC整理笔记 - CSDN App】
2 决策树(DT)
2.1 决策树基本介绍
决策树定义:由节点和分支组成的像流程图的结构。在每个节点上,根据其中一个输入特征对数据分割,产生两个或更多分支作为输出。在接下来的节点中进行更多的分割,产生许多分支对原始数据进行分区。这种情况一直持续直到产生一个节点,其中所有或几乎所有的数据都属于同一个类,并且不能再进行进一步的分割。
优点:
- 使用者不需要知道很多背景知识,只要训练案例能表示成属性→结论的形式,决策树就可以应用了
- 高效率,适用于大型数据集
- 简单直观的树状结构,可以转换成if→then形式,易于理解
- 有高的分类准确度(accuracy)
2.2 ID3算法
机器学习中一个著名的算法,引入了信息论中的熵的概念,利用分割前后的熵来计算信息增益,用来衡量分类能力。
信息熵(Information Entropy):用来度量数据集的纯度。
信息增益(Information Gain):分割前数据集的熵-分割后由子集大小加权的熵的和。如果是正数,说明纯度上升。在每一步中选择使信息增益最高的分割特征。
ID3思想:
- 自上往下建立一棵决策树
- 用信息增益来衡量各个特征对于样本分类的能力
- 选择信息增益最大的特征作为根节点
ID3实现:
- 选择有最好分类能力的特征作为根节点
- 根节点的每个可能值产生一个分支
- 训练样本被安排到适当的分支中
- 重复上述过程直到生成决策树
问题:它偏向于选择多值特征。例如,如果有唯一标识符ID,ID3将选择它作为拆分特征,虽然这样划分足够纯,但是对于分类没有意义。后继算法C4.5使用增益比来克服这个缺点。
2.3 C4.5算法
SplitInfo:权重*权重的对数
权重:当前子数据集中数据点数量/父数据集中数据点数量
增益比:信息增益/SplitInfo
缺点:
- 生成多度树,效率低于二叉树
- 只能用于分类
2.4 CART(分类和回归树)
classification and regression tree
是一种非参数技术,可以产生分类树或者回归树,取决于因变量是分类型的还是数值型的。使用Gini指数来选择分割特征 。产生的一定是二叉树。
基尼指数:度量样本的不纯度。指数越小,纯度越高。
产生分类树:
图源:【决策树系列【4】 基尼指数cart算法(代码已同步到github)】
分类树和回归树比较:
- 分类树输出离散值,回归树输出连续值
- 分类树使用Gini选择特征,回归树使用MSE(平方误差)选择特征
- 分类树采用叶子节点中概率最高的作为预测类别,回归树采用叶子节点的平均值作为预测类别
2.5 总结
优点:
- 快速:可以处理具有很多特征的大的数据集
- 灵活:分类和回归问题
- 可解释性:提供规则和特征重要性
- 容错能力好
缺点:
- 样本变化,决策树结构也变化(集成学习来解决)
- 难以学习难度大的模型,如XOR(神经网络)
- 如果一些样本比例太大,决策树会偏向这些特征(调整样本权重)
3 随机森林(Random Forest)
决策树可能会很不稳定,当训练数据受到干扰,预测结果可能会发生很大变化。它是高方差估计器。减少方差的方法:将多个模型平均。这叫集成学习。
两种集成方法:
3.1 序列集成方法
将多个弱模型结合成一个强模型。著名算法:AdaBoost
AdaBoost:一种自适应的提升算法,训练新的基估计器理修正前一个基估计器的错误。需要采用某种方法对错误分类的训练示例进行优先排序,通过保持单个训练示例的权重来实现这一点。
3.2 并行集成方法
两种重要方法:bagging,random forest
两者关键区别:
- 并行系统中的基估计器通常可以独立训练,而在序列系统中,当前迭代中的基估计器依赖于前一次迭代中的基估计器。
- 并行系统中的基估计器通常是强模型,而序列系统中的通常是弱模型。
自主采样法(bootstrap sampling):为了生成相同大小的数据集的复制,我们需要进行带替换的采样。通过带替换的采样,我们 可以得到一个大小为6的样本,但只包含4个唯一的对象,有重复对象。
bagging:
- 自助抽样,确保在每个复制集上训练的模型不一样
- 模型聚合,将单个基础学习者的预测结合到一个集成预测中。分类:多数决定;回归:平均
3.3 随机森林
是bagging的一种特殊扩展,引入了额外的随机化,进一步促成集成的多样性。
两种随机性: 随机决策树,自助抽样。
决策树和随机决策树的区别:如何构建决策节点。前者对所有的可用特征都进行了评估,以选择最分割的最佳特征;后者是从一个随机的特征子集中选择分割的最佳特征。
因此,随机森林使用一种改进的树学习算法,该算法在创建决策节点前先随机抽样特征。
随机森林优点:
- 目前最准确的学习算法之一
- 可以在大型数据库上高效运行
- 可以处理大量变量并且不删除它们
- 给出了在分类中哪些变量是重要的估计
- 有效估计缺失数据
随机森林缺点
- 对一些有噪声分类/回归任务的数据集过拟合
- 对于包含具有不同数量级别的分类变量的数据,更偏向于那些具有更多级别的属性,对于这类数据不可靠。
泛化误差:样本外误差,衡量算法预测以前未见过数据的结果值的准确性。
泛化能力度量:
- 留出法:将数据集划分为训练集和测试集,训练姐是模型所训练的对象,测试集用来查看模型对未看到的数据表现如何。
- 交叉验证: 或者k倍交叉验证,数据集被随机划分为k组,随机选择一组作为测试集,其余的作为训练集。
随机森林的泛化误差由OOB(out-of-bag)计算,对于每棵树,33%-66%的样本没有在自助抽样中被选择,称为OOB样本,使用OOB样本作为对应树的输入,输出预测值的误差即OOB误差。