设为首页收藏本站

JMP数据分析论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1414|回复: 0
打印 上一主题 下一主题

预测建模之思路探讨

[复制链接]
跳转到指定楼层
楼主
发表于 2019-9-10 10:39:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很多人觉得参加过那么多次培训,实际工作中经验也累积了不少,但为什么建模结果就是不理想呢?本文来谈谈数据分析中预测建模的那些方法和思路,并通过小案例帮助你了解在方法论上可能存在的误区和偏差,从而让你更加得心应手地开展建模和分析。

什么是预测建模?
谈到预测建模,不太了解的朋友可能觉得高深莫测。其实生活中预测建模无处不在,比如说早上起来看到天气是阴天,我们预测今天可能会下雨,这就是一个简单的预测。或者说当医生看到一个病人出现了各种症状,然后医生预测他可能百分之多少的可能性是可能是感冒,也百分之多少的可能性是什么疾病,这也是一个预测。

预测建模的核心和方法有哪些?
预测建模的方法有很多,传统的方法包括回归分析,如线性回归、多项式回归、Logistic回归等;惩罚模型,如岭回归、Lasso回归等。而基于机器学习的建模方法,比如神经网络、支持向量机(SVM)、决策树、随机森林、提升树等方法无一例外为数据分析人员提供了诸多选择。

但无论做什么样的预测建模,本质上都是为了寻找一个最佳的、能够真正还原现实情况的、发现一个真正规律的模型。但往往大多数情况下,可能我们面临的一个最主要的问题是:如何判断模型到底好不好?到底有没有过拟合?也就是预测模型最关键的核心问题在于能不能达到最佳的方差和偏差的均衡。

那么,什么叫方差和偏差的均衡?通俗地说,就是模型不仅要在用于建模的训练集数据里表现好,如果换一批人群收集的数据,模型的表现也要好。比如说,同样服用一种药,第一群人吃药后的有效率能达到80%,似乎看起来很好,但是换了另外一群人服用,药效可能就只有30%。这就说明效果并不是那么好。真正的效果好,应该是这样:如果(理论上)我们做无数次抽样,每次抽样一百人,在这无数次抽样里的效果应该表现很稳定,而且每次抽样的效果都很好。所谓效果好,就是模型预测效果好,所谓稳定,就是方差小;所谓的不稳定,就是方差大。听起来很容易理解,然而实际中我们是无法做到无数次抽样的,绝大多数情况下只有一次抽样,那么,如何利用一次抽样来评价模型的稳定性呢?这就要用到交叉验证的方法。

什么是交叉验证?举个例子,比如说我们把人群分成几份,把其中留几份作为训练数据,然后留一份作为验证数据,然后再把其他的抽出几份来再来做训练数据。总之每一份数据都拿出来做一次验证,这就叫交叉验证,所有验证的数据,都不是用于建模的数据,所以结果更具说服力。


比如有两个点,要构建一个最佳模型非常容易,这条直线就是一个最佳模型(偏差小,事实上,在这里它的偏差是0)。
从图上可以看出,在这个数据里,绿线很明显表现不如红线好(偏差大)。然而,当加上一个验证数据的时候,假如蓝色的是验证数据,这时候你就会发现,其实可能红色就不一定有绿色的好。所以这种情况下,红色的线就属于偏差很小但方差很大。因为你只是在训练数据里看起来拟合效果是最佳,但是换成另一批数据(验证数据),你会发现拟合效果立刻变差。看起来偏差是很小,但是方差太大,所以这个就不是我们要追求的,我们要真正追求的是一个方差既要小、偏差也要小,或者上最起码在二者之中找一个折中,这就是预测建模的核心内容。怎样找到这样一个折中,一般就用交叉验证。因此要构建一个好的预测模型,无论是神经网络也好,或者决策树、SVM等也好,其实都是来找这样一个这种折中点而已。

从实用的角度来说,预测建模最主要就是确定两点。

第一, 确定哪些变量对结果有影响。因为预测肯定是要找变量来预测,比如说拥有一百个变量,是不是这一百个变量都对预测有贡献?所以应该首先确定哪几个指标对它有贡献。

第二, 这些有贡献的指标跟结果是什么关系

其实绝大多数情况下,我们很多人都关注第一条,就是哪个变量对结果有影响,但实际上这些变量跟结果的关系到底是什么样的很少有人关注,尤其在传统的预测模型里,如果不关注这些的话,你会发现其实很多构建的模型都是无效的。在这方面机器学习方法会更胜一筹,因为机器学习无论变量是线性也好,非线性也好,它都能帮你找到一个最佳的分割点。

但是传统的模型在这方面稍逊一筹,因为传统的模型绝大多数都是线性模型,无法直接处理非线性。传统的模型比如说像线性回归,Logistic回归等,一般只追求偏差小,但是像Lasso回归、弹性网络等方法就不仅仅是追求偏差小,还要追求方差小,可以在二者之间找一个均衡,所以这些方法现在往往非常流行,因为它更兼顾了偏差和方差的均衡。

那么,是不是传统预测建模方式已经过时了呢?答案是否定的。

神经网络、支持向量机、决策树、随机森林、提升树等方法确实是当下很多人都喜欢追求的一些前沿方法,但传统建模也并非被“后浪拍死在沙滩上”。它其实仍有自己的优势。
首先,只要变量变换恰当,传统的线性模型也可以做非线性的预测。传统建模方法主要使用的是一些线性模型,大多数都可以归因于广义线性模型,主要是做一些线性区分。而机器学习方法可能在非线性的区分上更有优势。但是并不是说传统模型就一定不能做这些非线性的区分。当然,对于建立传统的预测模型,如果你只是单纯地把变量直接放到软件里,你永远做不出一个非线性的区分来,因为这个模型本身就是线性,这是已经定义的了。但是,这些变量在做一些探索和变换的话,仍然可以达到一个非线性的区分。


其次,传统的回归模型很直观,在传统的回归模型里,我们可以看到非常明确的参数估计值、P值等等这些大家都很关注的指标,如果想列出模型也很简单,直接可以把模型都给列出来。

相比之下,机器学习尤其是深度学习等等,想列出一个模型来,几乎是不大可能(当然不是说这些模型没有公式,只是实在太复杂以至于列不出来)。所以其实它更像是一个黑箱的过程。所谓黑箱,你可以想象成有个机器,这边把肉放进去,那边就出来香肠了。但至于中间怎么加工的你也不知道。可能有时候你想了解一下中间的加工过程,你会发现里面的东西只有机器才能看得懂,机器非常清楚中间一步步怎么实现的,但是我们看不懂,因为里面实在太过于复杂。所以说,我们往往只是看到一个黑箱的过程,因此无法给出一个明确的公式来。

有时候我们可以不关心这个公式,只关心预测效果怎么样,但有时当你必须列出模型的时候(比如需要申请专利),如果没办法描述清楚,就很难申请到这个专利。这时候往往你可能需要一个明确的公式来协助。
综上所述,并不存在说方法是否过时这样的说法,方法并没有过时不过时,只有适合不适合。只不过有些方法在应用时有一些适用的条件而已。至于什么时候运用哪种方法,更多的时候是要取决于实际情况,比如机器学习在变量很多的时候,往往具有较大的优势。

接下来,我们用两个小案例来实际看看传统方法和机器学习的对比应用。

Logistic回归 VS 神经网络
案例:某研究分析高血压(二分类变量,是或否)的影响因素,调查了性别、年龄,以及4个血清学指标,分别用A、B、C、D表示。研究者打算以age、B、C这三个变量建立预测模型。同样一组数据,我们用Logistic回归和神经网络分别建模,再看一下最终结果。

首先我们用Logistic回归建立预测模型,将这3个连续变量直接纳入模型,结果显示,ROC曲线下面积为0.6023,这实际上属于比较低的结果,说明可能构建的模型没什么太大实际意义。

然后,我们再用两层的神经网络技术,直接纳入这3个变量(基于训练集的结果),然后也得到一个ROC曲线,最后发现是0.86左右。

从结果来看,你可能会感觉神经网络优于Logistic回归预测。事实上这个结论并不是很可靠。为什么呢?这跟分析者有很大的关系。如果把数据直接放到软件里,如前面提到的传统回归方法都是一个线性的模型,软件当然就按线性来执行。但机器学习到最后都能找到一个最佳的拟合效果、最佳的预测效果。实际上,大多数的机器学习是一个不断试错的过程,不断地跟结果做对比,不断地调整。就像我们不断地试错,试错的过程中慢慢地就能够达到一个比较好的结果一样。
还是就刚才的数据,如果以一个统计学家的身份重新来分析一下,看起来这3个指标确实都没意义,所以当我们把这3个连续资料直接纳入分析时,看起来确实没有什么统计学意义,因此ROC曲线也就比较低。



然而,如果你仔细分析一下会发现什么呢?因为3个变量并不是线性的关系,做出来的结果自然就没有统计学意义。如果采用分类的话就看得非常清楚。因此,把这几个不是线性关系的变量直接放到Logistic回归里面去构建一个线性的模型,那得到的预测结果可想而知,是绝对不理想的。



如果我们不把原始的变量放进去,而是将分类结果作为变量重新纳入模型,仍然是运用Logistic回归重新操作下,你会看到ROC曲线立刻变成了0.86,比刚才的0.6高了很多。


为什么呢?因为我们找到了它的规律,变量并不是线性的关系,而是一个非线性的,通过这样一个非线性的分类之后,你会发现实际上这才是它真正的关系。而且当你一旦找到了关系之后,你会发现模型结果就会变得理想了很多,预测效果好了很多。

因此,当运用传统回归模型来构建预测模型时,我们必须拥有更多的分析经验才行,否则的话,可能你就会得出“传统模型真的不如机器学法这样一些新的技术,不如机器学习好”这样一个假象。其实在很多情况下,构建模型最关键的不在于方法,而在于分析者本身,很多时候我们发现的问题并不是模型本身的问题,更多的是我们没有发现它们真正的规律而已。


Logistic回归 VS 决策树

同样,我们再来比较下Logistic回归跟决策树。

还是上面相同的案例。以年龄这一变量为例,如果采用决策树的话,把年龄作为连续变量直接纳入模型,决策树会自动将其分为3类。



然后经过探索发现,我们也需要将它分为三类较为合理。最后发现我们自己探索的结果,跟决策树做的结果差不多。



当然了,这种分析确实需要分析者自身的一些经验累积,当你做了足够多的数据分析工作,自然而然就会有这样建模和分析的经验了。所以,对于数据分析师来说,是需要具备这样一些明辨模型和判断正误的能力,否则的话如果一味地追求所谓的高级方法而脱离了实际,只是为了追求数据上的拟合效果是没什么意义的。所有的模型一定要根据研究的实际情况,最后一定要回归实际分析工作,要为实际工作服务。

基于JMP的交互式的预测建模

什么叫交互?在数据分析里面的交互,总的来说就是电脑能够针对操作者随时调整的内容随时做出反应。传统的软件一般都是写一段命令,然后接着出来结果,如果再想得到别的结果,需要再写另外一段命令,是从命令到结果式的模式。
但JMP可以不仅从命令到结果,还可以从结果到命令,这两个是真正的交互。对数据的任何操作会直接体现在交互式的结果里,反之,对结果的任何调整也会直接就体现在数据表。此外,JMP不仅提供了传统回归分析的各种平台,如最小二乘、逐步回归、广义回归等,也囊括了当下常用的机器学习平台例如神经网络、决策树、随机森林、提升树等,而且能够以交互式的可视化方式,无需编程,就能满足学术界和业界对基础分析、探索性数据分析和预测建模的各类需求。


如果想了解更多JMP交互式预测建模如何更好地服务于实际工作,如何更好地树立科学的数据分析思维,欢迎下载国家儿童医学中心冯国双博士在2019国际医药分析高峰论坛(iPAS)上的演讲资料,看冯老师如何结合自己几十年的宝贵实战工作经验和自身的数据分析经验体会,帮助你更好地解读对预测建模方法的应用和认知。

你可以点击这里免费下载资料学习。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  !connect_viewthread_share_to_qq!!connect_viewthread_share_to_qq! QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|JMP数据分析论坛 ( 沪ICP备13022603号-2 )  

GMT+8, 2024-4-19 18:52 , Processed in 0.393480 second(s), 17 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表