预测建模过程的理解

今天基于既往经验和近期所读书籍做一个简要总结,有关代码和此方面的新知识择期进行更新。

建模的过程看似简单,选择一个模型,套入数据,得到预测。但是要建好模,却并不那么简单。必须要在充分理解任务和数据的前提下,对数据进行相应的预处理和划分,进而构建模型、调整参数;这一过程可以是多个模型同步进行,然后通过效能评估,选择出最优模型的最优参数,最终完成建模。

以下分步骤进行阐述:一、理解数据;二、数据预处理和数据分割;三、模型建立、参数调整和评估; 四、模型选择

一、理解数据(又称探索性分析,Exploratory Data Analysis,EDA)

这个过程是建模的基石。充分理解数据,便于接下来对数据进行清洗和预处理,也有利于对模型的选择形成直觉。理解数据的方式包括统计描述、可视化。

  • 1. 针对预测变量

    • 连续型:有无缺失值,分布直方图,有无偏态,多个变量间的相关性
    • 分类型:有无缺失值,分类统计的结果,如果是多分类则拟构建哑变量(下一步数据预处理)
  • 2. 针对结果变量

    • 连续型:分布情况
    • 分类型:这是我们医学建模任务中最常见的类型。通过分类结果的统计摘要,可以判断分类结果是否为不平衡分布。不平衡分布,会导致建模效果差,特异度低。我们进行数据划分的时候,应该根据结果分类进行分层随机抽样;同时,应对结果变量不平衡的问题,还可以采用类别平衡算法,近期在处理lidan的建模任务时就通过类别平衡算法获得了极大的效能提升。
  • 3. 预测变量和结果变量之间的相关性

    • 结果分类,预测变量连续:差异性检验(t or 秩和)
    • 结果分类,预测变量分类:列联表差异 or 关联性分析
    • 结果连续,预测变量连续:散点图及相关性分析
    • 结果连续,预测变量分类:差异性检验(t or 秩和)

二、数据预处理和数据划分

数据预处理就是基于第一步的数据理解,对数据进行增加 or 删减 or 变换. 预处理的方法不一而足,但最有效的方法,往往还是 “ 建立在建模者对问题的理解,而非任何数学方法上 ”

 要额外说明的是,有的模型自带特征筛选的功能(如LASSO),
 而模型内嵌的特征筛选,能够最大程度地适应模型需要(所谓需要,即在保有模型预测性能的前提下,尽可能减少特征)
 不在此处讨论范围内
  • 预测变量预处理

    • 连续型:是数据预处理的主要阵地,包括:

      • 单个变量:
        • 处理缺失值
          • 首先要去了解缺失值产生的原因。假设药物极其无效或有明显副作用,则病人很可能不来再来找医生,这种疗效评价缺失数据是和治疗方式显著有关的;这种缺失和结果变量间是有关的,称为“有信息量的缺失”
          • 又例如一个男人的后代数目可能是缺失的,这种称为结构性缺失(我理解这类缺失是必然的、合理的存在)
          • 缺失数据应该和删失数据相鉴别:删失数据是指生存数据这类既有时间长度,又有定性结果的数据,至随访终点仍未产生明确的定性结果:患者至今仍存活,客户至今未归还借阅的光盘等。在处理删失数据时,有时候会直接当做缺失数据处理,有时会以至今的数据为准(因为我们可以肯定这个时间至少持续了这么久),或者在[0,至今时间]这样一个区间随机选择一个数据作为观测值。
          • 处理缺失数据的办法:1.直接删除,但对于小样本而言不可行;2. 一些基于树的模型能够处理有缺失值的数据 3. 缺失值插补:缺失值的插补,是利用完整数据和缺失数据的相关性,预测缺失的数据,进而填补空缺。因此,是建模之前的另一层建模,也因而具有不确定性。插补应该嵌入到重抽样过程中(如果我们做了重抽样)。
        • 中心化(所有变量减去其均值)和标准化(每个变量除以自身标准差)、z-score同时进行了中心化和标准化。中心化和标准化能够提升某些模型(如PLS)的表现,但缺陷在于失去了观测值的可解释性

        • 偏度变换:右偏是指相对分布右侧的大值而言,大量的样本落在分布左边(小值)。BOX-COX变换族以λ为变量,包含了平方变换、平方根变换、倒数变换等一系列变换算法;能够改善数据偏度的情况。

        • 剔除方差为零或近似为零的变量。近零方差变量的判定准则:

          不重复取值的数目与样本量比值低(<=10%)
          最高频数和次高频数的比值高(>=20)
          同时满足上述两条件,则建议删除该预测变量

        • 检查并删除多重共线性变量中的一部分。检查共线性的方法包括:

          1. 相关性热图
          2. PCA:如果第1主成分占据了总方差的大部分,则说明至少有一组预测变量包括了相同的信息;如果前3个主成分对总方差贡献大,则说明有3组变量间有显著相关性。PCA载荷量可以用来理解每个主成分和哪些预测变量相关,从而梳理出这些关系。
          • 删除共线性的方法:1. PCA后就自然删除了共线性 2. Caret提供了一种逐步删除共线性变量的算法(《应用预测建模》P35)
        • 区间化预测变量(连续型变量转化为分类变量):例如我们通常将某个gene or gene signature的表达值以中位数作为cutoff分为high/low分组,就是一种区间化预测变量的思想。

          优势:简单,有利于得到明确的判定法则
          劣势:导致模型表现下降(显然是损失了预测变量的信息);假阳性率增高
      • 多个变量:即对特征进行整体变换,应在完成单个数据的预处理(如偏度变换、中心化和标准化)后进行
        • 处理离群值

        通常离群值的处理应该是放在单个变量中的,例如画连续变量的箱线图可以看出离群值的分布情况。但究竟什么样的点属于离群值,其实并没有明确定义。
        单纯的离群值删除是不可取的,除非是明显有数值错误的离群值(如为负数的血压测量值)否则常规情况下,无法判断离群值究竟是来自于真实数据的另一个域,因为目前样本量不够所造成(这种情况为主);还是真正的离群值。
        《应用预测建模》书中(P25)所述,有的算法(树模型、SVM)对离群值是有抗性的,而离群值的处理算法是针对所有预测变量进行空间表示变换,其变换是将所有样本点映射到高维的、离球心距离相等的球面上。在做此操作前,应进行中心化和标准化,并且完成该操作后,不应该再进行数据的移除,否则会导致一系列问题

        • 降维数据变换:通常是所有原始变量的函数。为避免预测变量分布偏态或者标度不同的问题影响数据变换,应在这之前对有偏变量进行变换、以及变量的中心化和标准化。

        PCA等;使用PCA之前,应对有偏数据进行变换,然后进行中心化和标准化:

  • 分类型:几乎不需要预处理,对于多分类变量,构建哑变量即可

  • 结果变量预处理

对结果变量通常并不能使用任何的变换。当然,如果结果变量为NA,我们应该考虑将该样本删除;此外,就是关于分类结果变量分布不平衡的问题。首先,在划分数据集的时候,应按照结果变量的比例进行分层随机抽样;此外,如果结果极不平衡导致建模效能,可考虑采用各种采样方法(见参考文献),强行构造样本,使得样本结果分布均衡。

  • 数据分割

数据分割可以是简单的随机抽样,将样本分为训练集和验证集;也可以是分层随机抽样,根据结果变量的比例来分割成训练集和验证集;但实际建模过程中,多使用重抽样技术来对样本进行反复分割和利用,这样既能够提高样本的利用率,还能够构建更为鲁棒的模型,提高模型的泛化能力。重抽样方法技术:

  • K折交叉验证(含结果分层的K折交叉验证):可以重复K折交叉验证;留一交叉验证是K折交叉验证的特例
  • 广义交叉验证(GCV)
  • 留多交叉验证/蒙特卡罗交叉验证,又称重复训练/测试集划分
  • Bootstrap方法:“632法” 是Bootstrap的改进版

三、模型建立、参数调整和评估 以及 四、模型选择

    1. 模型构建之前应该选择模型:选择几个较复杂的、通常预测准确率较高的模型;选择几个较为简单的、可解释度高的模型
    1. 多个模型同时构建,每个模型各自进行参数调整。调参的方法包括:
    • 1)预先定义参数候选值集合,然后分别代入,选择最优模型值
    • 2)遗传算法、单纯型搜索法
    • 3)预先定义损失函数,然后让模型自动调参。深度学习通常这样做;但其实传统机器学习算法也可以。Cohen等(2005) 比较了SVM中搜索调优参数值的不同方式
    1. 对比各模型的准确度、复杂度、可解释度和运算效率;综合考量后确定最终模型

参考文献

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容