R教材11.1 分类与决策树

  1. 分类目的:根据一组预测变量来预测相对应的分类结果,实现对新出单元的准确分类
  2. 有监督学习:基于已知类的数据样本,将全部数据分为训练集和验证集
  3. 用到的包:rpart,rpart.plot,party,randomForest,e1071
  4. 随机抽样:
    1. set.seed(1234)
    2. sample(nrow(对象),present*nrow(对象)),结果是抽样的内置ID
      1. sample(数据对象,抽样个数)数据对象可以是连续数据或数据分布
  5. 逻辑回归glm(),自动将预测变量中的分类变量编码为数值型,广义线性模型
    1. glm(formula,data,family),family指连接函数,数据服从的分布类型,binomial二项分布(在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,并且相互独立,与其它各次试验结果无关),模型按数值大小分01,模型再将假设结果为正负
    2. predict(fit,data,type="response")
      1. response按数据正负转化为概率0~1
      2. class即输出变量为分类类型
    3. table(class1,class2,dnn=c()),dnn为维度名,class分类类型
    4. step(fit),模型的逐步法,去除多余的属性
  6. 决策树:默认二分树算法
    1. 经典树:不希望有大量的测试条件的划分,即CART算法,二分树,classify and regression tree分类回归树
      1. 步骤
        1. 选定一个最佳预测变量将样本单元分为两类,对子类别继续分类,递归
        2. 直到结束条件成立:节点样本量过少,继续分类的不纯度提升过少等
        3. 叶节点中的多数类即该叶节点的类
      2. 改进:过拟合现象,采用k折交叉验证法选择预测误差最小的树,剪枝后即为最优树
      3. R中的rpart()和prune():
        1. rpart(formula,data,method,parm)构造决策树
          1. *na. action 缺失数据的处理办法:默认办法是删除因变量缺失的观测而保留自变量缺失的观测
          2. method划分树时,根据树末端的数据类型选择相应变量分割方法;程序会根据因变量的类型自动选择方法, 但一般情况下较好还是指明本参数, 以便让程序清楚做哪一种树模型
            1. "anova"连续型
            2. "poisson"计数型(泊松过程)
            3. "class"离散型
            4. "exp"生存分析型
          3. parm=list(split="",...)设置先验概率、损失矩阵、分类纯度的度量方法
            1. split可以是gini(基尼系数)或者information(信息增益)
          4. rpart()返回的cptable值中包括不同大小的树对应的预测误差
            1. cp复杂度参数,惩罚过大的树
            2. nsplit划分个数,n个分支的树有n+1个叶节点
            3. rel error训练集中的树的误差(应该是对单个树,可能是该节点数下的最优树)
            4. xerror交叉验证误差,k折总误差
            5. xstd交叉验证误差的标准差
        2. plotcp(rpart)
          1. size of tree树大小
          2. y轴交叉验证误差
          3. x轴复杂度参数
          4. 最优树:最小交叉验证误差的±1个标准差范围内的树,规模最小的树即最优;图像的虚线即基于一个标准差准则得到的上限
        3. prune(rpart,cp=)决策树剪枝,将树的大小控制在理想范围内,最优树对应的cp
        4. rpart.plot::prp(fit,type,extra,fallen.leaves)
          1. type分割标签显示类型
          2. extra每个节点的样本占比和类型占比
          3. fallen.leaves=T垂直作图|斜线连接
        5. predict(fit,data,type="class")对应rpart的method
    2. 条件推断树:类似于决策树,但变量和分割的选取是基于显著性检验,而不是不纯性度量
      1. 算法:
        1. 对输出变量和每个预测变量间的关系计算p值(显著性检验)
        2. 选择p_value最小的变量
        3. 尝试所有的二元分割,选择p_value最小的分割
        4. 重复分割直到所有分割都不显著或达到最小节点为止
      2. 实现
        1. party::ctree(formula,data)
        2. plot(fit)
        3. predict(fit,data,type)type选择response,算法将结果变量当做二项分布
        4. 条件推断树的剪枝是不必要的,生成过程中就有对不显著变量的去除

猜你喜欢

转载自blog.csdn.net/u013103305/article/details/83479154