求助,关于稳健统计学原理里的Sn,Qn

&figure&&img src=&https://pic4.zhimg.com/v2-1fa95736ebcf88a4388c07dfffbd25e7_b.jpg& data-rawwidth=&960& data-rawheight=&960& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&https://pic4.zhimg.com/v2-1fa95736ebcf88a4388c07dfffbd25e7_r.jpg&&&/figure&&p&首先,我要给大家打一个预防针。荷兰的实习工资都很一般。大家如果要飞上天的实习工资,请往美国或者英国看。忘记荷兰。&a href=&http://link.zhihu.com/?target=https%3A//phd.pages.ist.ac.at/internships/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Internships Overview&/a&首先,我要给大家打一个预防针。荷兰的实习工资都很一般。大家如果要飞上天的实习工资,请往美国或者英国看。忘记荷兰。&/p&&p&首先,你需要一个非常强悍的个人简历。我本人见过好几个非常好的学生,硬是把自己简历搞的很粗糙最后实习申请悲剧。很可惜。&/p&&hr&&p&首先我来给大家列一批暑假“科研性的”实习的项目。大家先自己看这,我找时间再来更新:&/p&&p&马普所(有钱,而且钱比较多):&/p&&a href=&http://link.zhihu.com/?target=http%3A//www.ru.nl/io/english/students/outgoing-exchange/grants/radboud-max-planck-internships/& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Radboud Max Planck Internships&/a&&a href=&http://link.zhihu.com/?target=https%3A//www.cwi.nl/jobs/internships& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Internships&/a&&p&&br&&/p&&p&科研中偏向工业的:&/p&&a href=&http://link.zhihu.com/?target=https%3A//www.tno.nl/en/career/internships-and-graduation/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic2.zhimg.com/v2-8bb5fd5376ffabaaf7e384e5d9cf9f8d_ipico.jpg& data-image-width=&500& data-image-height=&500& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Internships and graduation | TNO&/a&&p&&br&&/p&&p&公司的实习:&/p&&a href=&http://link.zhihu.com/?target=https%3A//www.ing.jobs/netherlands/Internships.htm& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-602c648a726d187ba592b9f0x120.jpg& data-image-width=&975& data-image-height=&520& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Internships&/a&&a href=&http://link.zhihu.com/?target=https%3A//www.abnamro.com/en/careers/graduates-students/internships/index.html& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-f6b4ed21cd1b2f0x120.jpg& data-image-width=&433& data-image-height=&271& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Internship Vacancies&/a&&a href=&http://link.zhihu.com/?target=https%3A//www.shell.com/careers/students-and-graduates.html& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-e77ffac3fe449e36ceba5e2b_180x120.jpg& data-image-width=&800& data-image-height=&200& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Students and graduates&/a&&a href=&http://link.zhihu.com/?target=https%3A//www.ibm.com/nl-nl/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-9ea6dacfef6ebx120.jpg& data-image-width=&1280& data-image-height=&522& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&ibm.com/nl-nl/&/span&&span class=&invisible&&&/span&&/a&&p&&a href=&http://link.zhihu.com/?target=https%3A//www.ibm.com/nl-nl/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IBM - Nederland&/a&&/p&&a href=&http://link.zhihu.com/?target=https%3A//www.ibm.com/nl-nl/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-9ea6dacfef6ebx120.jpg& data-image-width=&1280& data-image-height=&522& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IBM - Nederland&/a&&a href=&http://link.zhihu.com/?target=http%3A//www.research.ibm.com/university/cas/benelux/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-12f89ef3cdef54aae5463ef_ipico.jpg& data-image-width=&774& data-image-height=&756& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&research.ibm.com/univer&/span&&span class=&invisible&&sity/cas/benelux/&/span&&span class=&ellipsis&&&/span&&/a&&p&&a href=&http://link.zhihu.com/?target=http%3A//www.research.ibm.com/university/cas/benelux/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IBM Center for Advanced Studies Benelux&/a&&/p&&a href=&http://link.zhihu.com/?target=http%3A//www.research.ibm.com/university/cas/benelux/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-12f89ef3cdef54aae5463ef_ipico.jpg& data-image-width=&774& data-image-height=&756& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IBM Center for Advanced Studies Benelux&/a&&a href=&http://link.zhihu.com/?target=https%3A//jobs.philips.com/nld/jobs/%3Fq%3Dintern& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Philips Jobs - Intern - Jobs in Netherlands&/a&&a href=&http://link.zhihu.com/?target=https%3A//www.shell.com/careers/students-and-graduates/assessed-internships.html& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic2.zhimg.com/v2-ec6c2dfaa044e2aadda1_180x120.jpg& data-image-width=&800& data-image-height=&200& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&shell.com/careers/stude&/span&&span class=&invisible&&nts-and-graduates/assessed-internships.html&/span&&span class=&ellipsis&&&/span&&/a&&p&&a href=&http://link.zhihu.com/?target=https%3A//www.shell.com/careers/students-and-graduates/assessed-internships.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Assessed Internships&/a&&/p&&a href=&http://link.zhihu.com/?target=https%3A//www.shell.com/careers/students-and-graduates/assessed-internships.html& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic2.zhimg.com/v2-ec6c2dfaa044e2aadda1_180x120.jpg& data-image-width=&800& data-image-height=&200& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Assessed Internships&/a&&a href=&http://link.zhihu.com/?target=https%3A//www.accenture.com/nl-en/Careers& data-draft-node=&block& data-draft-type=&link-card& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&accenture.com/nl-en/Car&/span&&span class=&invisible&&eers&/span&&span class=&ellipsis&&&/span&&/a&&p&欧洲其他地方的实习:&/p&&a href=&http://link.zhihu.com/?target=https%3A//phd.pages.ist.ac.at/internships/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-c0be8ab8ea78a7fbdcb5b2_180x120.jpg& data-image-width=&369& data-image-height=&240& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Internships Overview&/a&&p&我申请过IST这个项目,申请结果超级慢。最后我拿到了法国的offer之后给我发了通知,然后告诉我录取率只有2.5%不到。可惜,offer来的太迟,我已经答应了法国那边。&/p&&a href=&http://link.zhihu.com/?target=https%3A//www.inria.fr/en& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic2.zhimg.com/v2-ee8c8bbea8d_180x120.jpg& data-image-width=&260& data-image-height=&195& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&inria.fr/en&/span&&span class=&invisible&&&/span&&/a&&p&&a href=&http://link.zhihu.com/?target=https%3A//www.inria.fr/en& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Inria - Inventors for the digital world&/a&&/p&&a href=&http://link.zhihu.com/?target=https%3A//www.inria.fr/en& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic2.zhimg.com/v2-ee8c8bbea8d_180x120.jpg& data-image-width=&260& data-image-height=&195& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Inria - Inventors for the digital world&/a&&a href=&http://link.zhihu.com/?target=https%3A//research.fb.com/category/facebook-ai-research-fair/& data-draft-node=&block& data-draft-type=&link-card& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&research.fb.com/categor&/span&&span class=&invisible&&y/facebook-ai-research-fair/&/span&&span class=&ellipsis&&&/span&&/a&&a href=&http://link.zhihu.com/?target=https%3A//deepmind.com/& data-draft-node=&block& data-draft-type=&link-card& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&deepmind.com/&/span&&span class=&invisible&&&/span&&/a&&hr&&p&最后,欧盟有一个项目&/p&&a href=&http://link.zhihu.com/?target=http%3A//www.ru.nl/io/english/students/outgoing-exchange/grants/erasmus-best-grant-programme-studying-internships/%23h2f8ed145-0f15-491e6ab262& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-ddabba913b8de2f0x120.jpg& data-image-width=&200& data-image-height=&129& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Erasmus+: best grant programme for studying and internships in Europe&/a&&p&&br&&/p&&p&祝各位好运。我有空再来更新这篇文章。&/p&&hr&&p&如果有需要让我针对性的给你建议,请咨询我。我很乐意给你耐心解答:&/p&&a href=&https://www.zhihu.com/zhi/people/927424& data-draft-node=&block& data-draft-type=&link-card& class=&internal&&帅帅&/a&&p&&/p&
首先,我要给大家打一个预防针。荷兰的实习工资都很一般。大家如果要飞上天的实习工资,请往美国或者英国看。忘记荷兰。首先,我要给大家打一个预防针。荷兰的实习工资都很一般。大家如果要飞上天的实习工资,请往美国或者英国看。忘记…
复试共有两天,第一天笔试,第二天面试。第一天参加笔试,笔试分为英语笔试跟专业课笔试。英语笔试主要考两方面的内容, 英语听力 英语翻译。英语听力一般就是某一年6级听力的一套题目,所以你们可以把近10年或者近15年所有的6级听力原文看一遍,这个工作量很大,所以你们也直接看题目背答案。至于英语翻译我认为基本没法准备 ,因为题目一般是一大段文字,中译英和英译中,你们也知道翻译能力不可能在短短1个月的时间就增强很多。而且去年翻译的题目很奇怪,中译英和英译中的两段文字互为答案,当时考试的时候也是很懵逼!&br&&br&然后就是专业课的笔试了,其实内容以及考试的题目类型知识点基本上与初试的专业课试题差不多,所以你们还是要把初试的内容复习好,再做一做别人总结的一些复试题目。去年的时候考了一到超纲的题目,绝大多数人都不会,因为绝大多数的考生也仅仅把那四本书学得比较透,所以一旦出现你完全没有见过的题目或者知识点,不用慌,你要自信!你最帅!啊不,跑题了 你要相信别人也不会,要做的就是把你所能想到相关的知识都写上去就行了。&br&&br&第二天面试,同样也分为英语面试跟专业课面试。这两个哪个在前哪个在后都有可能,到时候有个名单,轮着来。大家最开始是一起坐在一个大教室里面,然后就会有人根据名单来喊人过去,第一个人进去了,第二个人就在门外等,等第一个人面试完了从里面出来,第二个人就进去,然后再从大教室里面叫第三个人在门外等。等待的时刻让我们心中默念自己是最牛逼的。&br&&br&先讲讲英语面试,英语面试是2个人老师,正常敲门进去就可以了,之后老师会先让你读一个短文,读完之后老师会就这个短文的内容问你几个问题。问完问题之后一般是自我介绍,也有可能有的老师会跳过这个环节,不过你还是要准备自我介绍稿。自我介绍完了之后老师会就你自我介绍里面的一些内容来跟你聊一下天,或者跟你的自我介绍无关,用English扯一会儿,聊完之后英语面试就结束了。记得要Thank you professors!&br&英语口语面试准备1分钟左右的自我介绍就可以了。然后是读小短文,这个可以拿一些6级听力的小短文来练习读一下,当然也可以关注一下新闻报道。主要考察的还是口语的发音,朗读的语调,以及对文章的理解。这个可以在准备复试的这段时间多加练习。&br&专业课的面试一般是有三个老师,当然那个面试的教室做的可能有很多老师,但是他们会轮流休息,每个考生一般是三个老师来问问题。首先还是正常敲门进去,坐之前可以说一声:“各位老师好”,然后老师会让你坐下。坐下之后一般就是开始自我介绍,说出你的故事!自我介绍完了之后老师会让你去他们坐的桌子上抽一个签,抽好之后把签给老师,自己回到坐位,然后老师打开那个签,上面是个数字,然后老师那有张问题表,对应数字就找到你抽中的专业课问题了。这里说一下,面试的专业课问题是有可能抽到《抽样》《国民经济核算》这两本书的问题的,如果抽到了,不幸的是你实在不会,那就实事求是的跟老师说,我们这届老师是能让你重新抽一个问题。如果点子太背,两次抽中的题目都不会,那老师也不会为难你,老师就会开始跟你聊天,问一问他们感兴趣的问题(当然两次都回答不上来,成绩还是会受到一定影响,不过如果你扯淡扯得好,成绩也不会太差,所以即使问题没回答好,千万不能慌,一定要保持自信,面试还包括综合素质评分的)。正常情况下,你抽了第一个问题,一般不会太难,回答出来之后,老师会深入挖掘这个问题让你继续回答,就这样一问一答直到你抗不住了为止。&br&&br&最后回答不出来没关系,能回答出来2到3个问题就已经很不错了。我当时被问的第一个问题就很简单,线性回归的假设有哪些,回答完了后老师就继续深究,问的越来越深,然后我就GG了。总之这个过程一定要保持自信,盐哥当时也算是超常发挥了,不知道哪来的莫名的自信,从始至终没有慌,说话较有条理,所以最后复试的成绩也很不错,复试第三,哈哈。问题问完之后老师就会跟你聊一下其他的东西了,比如你本科的学习,你自己的兴趣爱好,研究生想读的方向等等都可能会被问到,这个我个人感觉就是心中稍微准备一下,到时候回答为什么这样的问题回答个三点,让老师听起来逻辑很不错有条理就好了。&br&大概复试的经验就是这些了,希望能对你有所帮助。&br&可以关注微博ruc_烤盐哥
复试共有两天,第一天笔试,第二天面试。第一天参加笔试,笔试分为英语笔试跟专业课笔试。英语笔试主要考两方面的内容, 英语听力 英语翻译。英语听力一般就是某一年6级听力的一套题目,所以你们可以把近10年或者近15年所有的6级听力原文看一遍,这个工作量…
&figure&&img src=&https://pic3.zhimg.com/v2-8bfdf6ccf337fed78b046_b.jpg& data-rawwidth=&1727& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1727& data-original=&https://pic3.zhimg.com/v2-8bfdf6ccf337fed78b046_r.jpg&&&/figure&&blockquote&&p&&em&在本教程中,作者对现代机器学习算法进行了简要梳理。虽然类似的总结有很多,但是它们都没有真正解释清楚每个算法在实践中的好坏,而这正是本文希望完成的。因此本文力图基于实践中的经验,讨论每个算法的优缺点。文末给出了这些算法的具体实现细节。&/em&&br&&/p&&/blockquote&&p&对机器学习算法进行分类不是一件容易的事情,总的来看,有如下几种方式:生成与判别、参数与非参数、监督与非监督等等。&/p&&p&然而,就实践经验来看,这些都不是实战过程中最有效的分类算法的方式。因为对于应用机器学习而言,开发者一般会在脑海中有一个最终目标,比如预测一个结果或是对你的观察进行分类。&/p&&p&因此,我们想介绍另一种对算法进行分类的路数,其基于机器学习任务来分类。&br&&/p&&p&&strong&没有免费午餐定理&/strong&&/p&&p&在机器学习中,有个定理被称为「没有免费的午餐」。简而言之,就是说没有一个算法可以完美解决所有问题,而且这对于监督学习(即对预测的建模)而言尤其如此。&/p&&p&举个例子,你不能说神经网络就一定任何时候都比决策树优秀,反过来也是。这其中存在很多影响因素,比如你数据集的规模和结构。&figure&&img src=&https://pic2.zhimg.com/v2-49725ebe793e4c9c86bfdcb_b.jpg& data-rawwidth=&486& data-rawheight=&305& class=&origin_image zh-lightbox-thumb& width=&486& data-original=&https://pic2.zhimg.com/v2-49725ebe793e4c9c86bfdcb_r.jpg&&&/figure&&/p&&p&所以,当你使用一个固定的数据测试集来评估性能,挑选最适合算法时,你应该针对你的问题尝试多种不同的算法。&/p&&p&当然,你所使用的算法必须要适合于你试图解决的问题,这也就有了如何选择正确的机器学习任务这一问题。做个类比,如果你需要打扫你的房子,你可能会用吸尘器、扫帚或者是拖把,但是你绝不会掏出一把铲子然后开始挖地。&/p&&br&&p&&strong&机器学习任务&/strong&&/p&&p&在本次梳理中,我们将涵盖目前「三大」最常见机器学习任务:&/p&&ol&&li&&p&回归方法&/p&&/li&&li&&p&分类方法&/p&&/li&&li&&p&聚类方法&/p&&/li&&/ol&&br&&p&&strong&说明:&/strong&&/p&&ul&&li&&p&本文的梳理不会涵盖具体领域的问题,比如自然语言处理。&/p&&/li&&li&&p&本文也不会对每个算法都进行梳理。因为现有太多算法,而且新的算法也层出不穷。然而,这份清单将向读者展现对每个任务而言目前具有代表性的算法概览。&/p&&/li&&/ul&&br&&p&&strong&1、回归方法&/strong&&/p&&p&回归方法是一种对数值型连续随机变量进行预测和建模的监督学习算法。使用案例一般包括房价预测、股票走势或测试成绩等连续变化的案例。&/p&&p&回归任务的特点是标注的数据集具有数值型的目标变量。也就是说,每一个观察样本都有一个数值型的标注真值以监督算法。&/p&&br&&p&&strong&1.1 线性回归(正则化)&/strong&&/p&&p&线性回归是处理回归任务最常用的算法之一。该算法的形式十分简单,它期望使用一个超平面拟合数据集(只有两个变量的时候就是一条直线)。如果数据集中的变量存在线性关系,那么其就能拟合地非常好。&figure&&img src=&https://pic2.zhimg.com/v2-00cbc6a831d5b0f099b16d9d75ee2942_b.jpg& data-rawwidth=&596& data-rawheight=&416& class=&origin_image zh-lightbox-thumb& width=&596& data-original=&https://pic2.zhimg.com/v2-00cbc6a831d5b0f099b16d9d75ee2942_r.jpg&&&/figure&&/p&&p&在实践中,简单的线性回归通常被使用正则化的回归方法(LASSO、Ridge 和 Elastic-Net)所代替。正则化其实就是一种对过多回归系数采取惩罚以减少过拟合风险的技术。当然,我们还得确定惩罚强度以让模型在欠拟合和过拟合之间达到平衡。&/p&&ul&&li&&p&优点:线性回归的理解与解释都十分直观,并且还能通过正则化来降低过拟合的风险。另外,线性模型很容易使用随机梯度下降和新数据更新模型权重。&/p&&/li&&li&&p&缺点:线性回归在变量是非线性关系的时候表现很差。并且其也不够灵活以捕捉更复杂的模式,添加正确的交互项或使用多项式很困难并需要大量时间。&br&&/p&&/li&&li&&p&Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/linear_model.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1.1. Generalized Linear Models&/a& &/p&&/li&&li&&p&R 实现:&a href=&https://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/glmnet/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CRAN - Package glmnet&/a& &/p&&/li&&/ul&&br&&p&&strong&1.2 回归树(集成方法)&/strong&&/p&&p&回归树(决策树的一种)通过将数据集重复分割为不同的分支而实现分层学习,分割的标准是最大化每一次分离的信息增益。这种分支结构让回归树很自然地学习到非线性关系。&figure&&img src=&https://pic3.zhimg.com/v2-3a4a1f0b624ab39cef697e2c2cdfa991_b.jpg& data-rawwidth=&601& data-rawheight=&556& class=&origin_image zh-lightbox-thumb& width=&601& data-original=&https://pic3.zhimg.com/v2-3a4a1f0b624ab39cef697e2c2cdfa991_r.jpg&&&/figure&&/p&&p&集成方法,如随机森林(RF)或梯度提升树(GBM)则组合了许多独立训练的树。这种算法的主要思想就是组合多个弱学习算法而成为一种强学习算法,不过这里并不会具体地展开。在实践中 RF 通常很容易有出色的表现,而 GBM 则更难调参,不过通常梯度提升树具有更高的性能上限。&/p&&ul&&li&&p&优点:决策树能学习非线性关系,对异常值也具有很强的鲁棒性。集成学习在实践中表现非常好,其经常赢得许多经典的(非深度学习)机器学习竞赛。&/p&&/li&&li&&p&缺点:无约束的,单棵树很容易过拟合,因为单棵树可以保留分支(不剪枝),并直到其记住了训练数据。集成方法可以削弱这一缺点的影响。&br&&/p&&/li&&li&&p&随机森林 Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/ensemble.html%23random-forests& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1.11. Ensemble methods&/a&&/p&&/li&&li&&p&随机森林 R 实现:&a href=&https://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/randomForest/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CRAN - Package randomForest&/a&&/p&&/li&&li&&p&梯度提升树 Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/ensemble.html%23classification& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1.11. Ensemble methods&/a&&/p&&/li&&li&&p&梯度提升树 R 实现:&a href=&https://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/gbm/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CRAN - Package gbm&/a&&/p&&/li&&/ul&&br&&p&&strong&1.3 深度学习&/strong&&/p&&p&深度学习是指能学习极其复杂模式的多层神经网络。该算法使用在输入层和输出层之间的隐藏层对数据的中间表征建模,这也是其他算法很难学到的部分。&figure&&img src=&https://pic1.zhimg.com/v2-37d657a7f8e26fdf038e_b.jpg& data-rawwidth=&816& data-rawheight=&405& class=&origin_image zh-lightbox-thumb& width=&816& data-original=&https://pic1.zhimg.com/v2-37d657a7f8e26fdf038e_r.jpg&&&/figure&&/p&&p&深度学习还有其他几个重要的机制,如卷积和 drop-out 等,这些机制令该算法能有效地学习到高维数据。然而深度学习相对于其他算法需要更多的数据,因为其有更大数量级的参数需要估计。&/p&&ul&&li&&p&优点:深度学习是目前某些领域最先进的技术,如计算机视觉和语音识别等。深度神经网络在图像、音频和文本等数据上表现优异,并且该算法也很容易对新数据使用反向传播算法更新模型参数。它们的架构(即层级的数量和结构)能够适应于多种问题,并且隐藏层也减少了算法对特征工程的依赖。&/p&&/li&&li&&p&缺点:深度学习算法通常不适合作为通用目的的算法,因为其需要大量的数据。实际上,深度学习通常在经典机器学习问题上并没有集成方法表现得好。另外,其在训练上是计算密集型的,所以这就需要更富经验的人进行调参(即设置架构和超参数)以减少训练时间。&br&&/p&&/li&&li&&p&Python 资源:&a href=&https://link.zhihu.com/?target=https%3A//keras.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Keras Documentation&/a&&/p&&/li&&li&&p&R 资源:&a href=&https://link.zhihu.com/?target=http%3A//mxnet.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&A Scalable Deep Learning Framework&/a& &/p&&/li&&/ul&&br&&p&&strong&1.4 最近邻算法&/strong&&/p&&p&最近邻算法是「基于实例的」,这就意味着其需要保留每一个训练样本观察值。最近邻算法通过搜寻最相似的训练样本来预测新观察样本的值。&/p&&p&而这种算法是内存密集型,对高维数据的处理效果并不是很好,并且还需要高效的距离函数来度量和计算相似度。在实践中,基本上使用正则化的回归或树型集成方法是最好的选择。&/p&&br&&p&&strong&2、分类方法&/strong&&/p&&p&分类方法是一种对离散型随机变量建模或预测的监督学习算法。使用案例包括邮件过滤、金融欺诈和预测雇员异动等输出为类别的任务。&/p&&p&许多回归算法都有与其相对应的分类算法,分类算法通常适用于预测一个类别(或类别的概率)而不是连续的数值。&/p&&br&&p&&strong&2.1 Logistic 回归(正则化)&/strong&&/p&&p&Logistic 回归是与线性回归相对应的一种分类方法,且该算法的基本概念由线性回归推导而出。Logistic 回归通过 Logistic 函数(即 Sigmoid 函数)将预测映射到 0 到 1 中间,因此预测值就可以看成某个类别的概率。&figure&&img src=&https://pic1.zhimg.com/v2-d7f7edc4ac9df4472f61b_b.jpg& data-rawwidth=&596& data-rawheight=&411& class=&origin_image zh-lightbox-thumb& width=&596& data-original=&https://pic1.zhimg.com/v2-d7f7edc4ac9df4472f61b_r.jpg&&&/figure&&/p&&p&该模型仍然还是「线性」的,所以只有在数据是线性可分(即数据可被一个超平面完全分离)时,算法才能有优秀的表现。同样 Logistic 模型能惩罚模型系数而进行正则化。&/p&&ul&&li&&p&优点:输出有很好的概率解释,并且算法也能正则化而避免过拟合。Logistic 模型很容易使用随机梯度下降和新数据更新模型权重。&/p&&/li&&li&&p&缺点:Logistic 回归在多条或非线性决策边界时性能比较差。&br&&/p&&/li&&li&&p&Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/linear_model.html%23logistic-regression& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1.1. Generalized Linear Models&/a&&/p&&/li&&li&&p&R 实现:&a href=&https://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/glmnet/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CRAN - Package glmnet&/a&&/p&&/li&&/ul&&p&&strong&2.2 分类树(集成方法)&/strong&&/p&&p&与回归树相对应的分类算法是分类树。它们通常都是指决策树,或更严谨一点地称之为「分类回归树(CART)」,这也就是非常著名的 CART 的算法。&/p&&p&&em&&figure&&img src=&https://pic4.zhimg.com/v2-f3d134ef081fccd8deeae_b.jpg& data-rawwidth=&465& data-rawheight=&321& class=&origin_image zh-lightbox-thumb& width=&465& data-original=&https://pic4.zhimg.com/v2-f3d134ef081fccd8deeae_r.jpg&&&/figure&简单的随机森林&/em&&/p&&ul&&li&&p&优点:同回归方法一样,分类树的集成方法在实践中同样表现十分优良。它们通常对异常数据具有相当的鲁棒性和可扩展性。因为它的层级结构,分类树的集成方法能很自然地对非线性决策边界建模。&/p&&/li&&li&&p&缺点:不可约束,单棵树趋向于过拟合,使用集成方法可以削弱这一方面的影响。&br&&/p&&/li&&li&&p&随机森林 Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/ensemble.html%23regression& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1.11. Ensemble methods&/a&&/p&&/li&&li&&p&随机森林 R 实现:&a href=&https://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/randomForest/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CRAN - Package randomForest&/a&&/p&&/li&&li&&p&梯度提升树 Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/ensemble.html%23classification& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1.11. Ensemble methods&/a&&/p&&/li&&li&&p&梯度提升树 R 实现:&a href=&https://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/gbm/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CRAN - Package gbm&/a&&/p&&/li&&/ul&&br&&p&&strong&2.3 深度学习&/strong&&/p&&p&深度学习同样很容易适应于分类问题。实际上,深度学习应用地更多的是分类任务,如图像分类等。&/p&&ul&&li&&p&优点:深度学习非常适用于分类音频、文本和图像数据。&/p&&/li&&li&&p&缺点:和回归问题一样,深度神经网络需要大量的数据进行训练,所以其也不是一个通用目的的算法。&br&&/p&&/li&&li&&p&Python 资源:&a href=&https://link.zhihu.com/?target=https%3A//keras.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Keras Documentation&/a&&/p&&/li&&li&&p&R 资源:&a href=&https://link.zhihu.com/?target=http%3A//mxnet.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&A Scalable Deep Learning Framework&/a& &/p&&/li&&/ul&&p&&strong&2.4 支持向量机&/strong&&/p&&p&支持向量机(SVM)可以使用一个称之为核函数的技巧扩展到非线性分类问题,而该算法本质上就是计算两个称之为支持向量的观测数据之间的距离。SVM 算法寻找的决策边界即最大化其与样本间隔的边界,因此支持向量机又称为大间距分类器。&/p&&p&&em&&figure&&img src=&https://pic1.zhimg.com/v2-56bda8e457dc6bd_b.jpg& data-rawwidth=&620& data-rawheight=&282& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&https://pic1.zhimg.com/v2-56bda8e457dc6bd_r.jpg&&&/figure&支持向量机中的核函数采用非线性变换,将非线性问题变换为线性问题&/em&&/p&&p&例如,SVM 使用线性核函数就能得到类似于 logistic 回归的结果,只不过支持向量机因为最大化了间隔而更具鲁棒性。因此,在实践中,SVM 最大的优点就是可以使用非线性核函数对非线性决策边界建模。&/p&&ul&&li&&p&优点:SVM 能对非线性决策边界建模,并且有许多可选的核函数形式。SVM 同样面对过拟合有相当大的鲁棒性,这一点在高维空间中尤其突出。&/p&&/li&&li&&p&缺点:然而,SVM 是内存密集型算法,由于选择正确的核函数是很重要的,所以其很难调参,也不能扩展到较大的数据集中。目前在工业界中,随机森林通常优于支持向量机算法。&br&&/p&&/li&&li&&p&Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/svm.html%23classification& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1.4. Support Vector Machines&/a&&/p&&/li&&li&&p&R 实现:&a href=&https://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/kernlab/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CRAN - Package kernlab&/a&&/p&&/li&&/ul&&br&&p&&strong&2.5 朴素贝叶斯&/strong&&/p&&p&朴素贝叶斯(NB)是一种基于贝叶斯定理和特征条件独立假设的分类方法。本质上朴素贝叶斯模型就是一个概率表,其通过训练数据更新这张表中的概率。为了预测一个新的观察值,朴素贝叶斯算法就是根据样本的特征值在概率表中寻找最大概率的那个类别。&/p&&p&之所以称之为「朴素」,是因为该算法的核心就是特征条件独立性假设(每一个特征之间相互独立),而这一假设在现实世界中基本是不现实的。&/p&&ul&&li&&p&优点:即使条件独立性假设很难成立,但朴素贝叶斯算法在实践中表现出乎意料地好。该算法很容易实现并能随数据集的更新而扩展。&/p&&/li&&li&&p&缺点:因为朴素贝叶斯算法太简单了,所以其也经常被以上列出的分类算法所替代。&br&&/p&&/li&&li&&p&Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/naive_bayes.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1.9. Naive Bayes&/a&&/p&&/li&&li&&p&R 实现:&a href=&https://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/naivebayes/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CRAN - Package naivebayes&/a&&/p&&/li&&/ul&&br&&p&&strong&3、聚类&/strong&&/p&&p&聚类是一种无监督学习任务,该算法基于数据的内部结构寻找观察样本的自然族群(即集群)。使用案例包括细分客户、新闻聚类、文章推荐等。&/p&&p&因为聚类是一种无监督学习(即数据没有标注),并且通常使用数据可视化评价结果。如果存在「正确的回答」(即在训练集中存在预标注的集群),那么分类算法可能更加合适。&/p&&br&&p&&strong&3.1 K 均值聚类&/strong&&/p&&p&K 均值聚类是一种通用目的的算法,聚类的度量基于样本点之间的几何距离(即在坐标平面中的距离)。集群是围绕在聚类中心的族群,而集群呈现出类球状并具有相似的大小。聚类算法是我们推荐给初学者的算法,因为该算法不仅十分简单,而且还足够灵活以面对大多数问题都能给出合理的结果。&figure&&img src=&https://pic3.zhimg.com/v2-4b07ac7d0a2d632fd903_b.jpg& data-rawwidth=&528& data-rawheight=&367& class=&origin_image zh-lightbox-thumb& width=&528& data-original=&https://pic3.zhimg.com/v2-4b07ac7d0a2d632fd903_r.jpg&&&/figure&&/p&&ul&&li&&p&优点:K 均值聚类是最流行的聚类算法,因为该算法足够快速、简单,并且如果你的预处理数据和特征工程十分有效,那么该聚类算法将拥有令人惊叹的灵活性。&/p&&/li&&li&&p&缺点:该算法需要指定集群的数量,而 K 值的选择通常都不是那么容易确定的。另外,如果训练数据中的真实集群并不是类球状的,那么 K 均值聚类会得出一些比较差的集群。&br&&/p&&/li&&li&&p&Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/clustering.html%23k-means& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2.3. Clustering - scikit-learn 0.18.1 documentation&/a&&/p&&/li&&li&&p&R 实现:&a href=&https://link.zhihu.com/?target=https%3A//stat.ethz.ch/R-manual/R-devel/library/stats/html/kmeans.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&K-Means Clustering&/a&&/p&&/li&&/ul&&p&&strong&3.2 Affinity Propagation 聚类&/strong&&/p&&p&AP 聚类算法是一种相对较新的聚类算法,该聚类算法基于两个样本点之间的图形距离(graph distances)确定集群。采用该聚类方法的集群拥有更小和不相等的大小。&/p&&ul&&li&&p&优点:该算法不需要指出明确的集群数量(但是需要指定「sample preference」和「damping」等超参数)。&/p&&/li&&li&&p&缺点:AP 聚类算法主要的缺点就是训练速度比较慢,并需要大量内存,因此也就很难扩展到大数据集中。另外,该算法同样假定潜在的集群是类球状的。&br&&/p&&/li&&li&&p&Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/clustering.html%23affinity-propagation& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2.3. Clustering - scikit-learn 0.18.1 documentation&/a&&/p&&/li&&li&&p&R 实现:&a href=&https://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/apcluster/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CRAN - Package apcluster&/a&&/p&&/li&&/ul&&p&&strong&3.3 层次聚类(Hierarchical / Agglomerative)&/strong&&/p&&p&层次聚类是一系列基于以下概念的聚类算法:&/p&&ol&&li&&p&最开始由一个数据点作为一个集群&/p&&/li&&li&&p&对于每个集群,基于相同的标准合并集群&/p&&/li&&li&&p&重复这一过程直到只留下一个集群,因此就得到了集群的层次结构。&figure&&img src=&https://pic3.zhimg.com/v2-8dffdff06cb7f62b2bb784_b.jpg& data-rawwidth=&799& data-rawheight=&417& class=&origin_image zh-lightbox-thumb& width=&799& data-original=&https://pic3.zhimg.com/v2-8dffdff06cb7f62b2bb784_r.jpg&&&/figure&&/p&&/li&&/ol&&ul&&li&&p&优点:层次聚类最主要的优点是集群不再需要假设为类球形。另外其也可以扩展到大数据集。&/p&&/li&&li&&p&缺点:有点像 K 均值聚类,该算法需要设定集群的数量(即在算法完成后需要保留的层次)。&br&&/p&&/li&&li&&p&Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/clustering.html%23hierarchical-clustering& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2.3. Clustering - scikit-learn 0.18.1 documentation&/a&&/p&&/li&&li&&p&R 实现:&a href=&https://link.zhihu.com/?target=https%3A//stat.ethz.ch/R-manual/R-devel/library/stats/html/hclust.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hierarchical Clustering&/a&&/p&&/li&&/ul&&p&&strong&3.4 DBSCAN&/strong&&/p&&p&DBSCAN 是一个基于密度的算法,它将样本点的密集区域组成一个集群。最近还有一项被称为 HDBSCAN 的新进展,它允许改变密度集群。&/p&&ul&&li&&p&优点:DBSCAN 不需要假设集群为球状,并且它的性能是可扩展的。此外,它不需要每个点都被分配到一个集群中,这降低了集群的异常数据。&/p&&/li&&li&&p&缺点:用户必须要调整「epsilon」和「min_sample」这两个定义了集群密度的超参数。DBSCAN 对这些超参数非常敏感。&br&&/p&&/li&&li&&p&Python 实现:&a href=&https://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/clustering.html%23dbscan& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2.3. Clustering - scikit-learn 0.18.1 documentation&/a&&/p&&/li&&li&&p&R 实现:&a href=&https://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/dbscan/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CRAN - Package dbscan&/a&&/p&&/li&&/ul&&br&&p&&strong&结语&/strong&&/p&&p&本文从回归问题、分类问题和聚类问题三个角度下初步了解了各个算法的优缺点,也基本了解了那些算法到底是什么。但以上每一个算法都有更多的概念和细节没有展现出来,我们不能知道它们的损失函数是什么、训练目标是什么、权重更新策略是什么等等一些列问题。因此我们希望能从机器之心历来文章中搜寻一些,为有兴趣的读者提供这些算法的具体细节。&/p&&p&线性回归:&/p&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D1%26sn%3Dc26b56e320e8abab053ad24bd73e52b6%26chksm%3D871b24b0b06cada6da34fd3a0240acbcbd9bebbscene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&初学 TensorFlow 机器学习:如何实现线性回归?(附练习题)&/a&&p&&&/p&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D3%26sn%3D4baa7a25cdecd742eb82fe%26chksm%3D871b15a4b06c9cb23f0c112b3bf74de38fddf53c13b736684fd3ded%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&从头开始:用 Python 实现带随机梯度下降的线性回归&/a&&p&决策树(集成方法):&/p&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D3%26sn%3D53a95b9ecc269dc0ecd5412%26chksm%3D871bc83d205dcab550d14f2709bbaece0ad913a8d1ebb6f%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&从头开始:用 Python 实现随机森林算法&/a&&p&&&/p&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D4%26sn%3Dcfafe08ac3ccddd%26chksm%3D871bad6279bccdaa9bca%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&从头开始:用 Python 实现决策树算法&/a&&p&支持向量机:&/p&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D2%26sn%3D328ba8aadbc6%26chksm%3D871bf155faf0f1e6d6a62f9d014bcaa85f57abc9f0f9ff0ab0ac608b%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&详解支持向量机(附学习资源)&/a&&p&深度学习:&/p&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D1%26sn%3Dbd8bbf9ead95fd%26chksm%3D871b1e0ab06c971c0bf6accb6f9d108d42f01%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&深度神经网络全面概述:从基本概念到实际模型和硬件基础&/a&&p&&&/p&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D1%26sn%3D712ebcb4db5ba06c9856d%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&深度学习与神经网络全局概览:核心技术的发展历程&/a&&p&聚类算法:&/p&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D1%26sn%3Ddb7b6f92466bdf146ac9bc%26chksm%3D871b1ea8b06c97beec50c7ac984bdab44bd11cfa411fab0e%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&机器理解大数据的秘密:聚类算法深度详解&/a&&p&最后,不论是基本概念还是具体算法,最重要的就是实践。不实践这些算法就永远不能发现哪些地方没有掌握,因此希望本文能有助于各位读者实践自己的算法。&/p&&p&参考内容&a href=&goog_&&elitedatascience&/a&&a href=&https://link.zhihu.com/?target=https%3A//elitedatascience.com/machine-learning-algorithms%23regression& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&elitedatascience.com/ma&/span&&span class=&invisible&&chine-learning-algorithms#regression&/span&&span class=&ellipsis&&&/span&&/a& &b&机器之心编译&/b&&/p&
在本教程中,作者对现代机器学习算法进行了简要梳理。虽然类似的总结有很多,但是它们都没有真正解释清楚每个算法在实践中的好坏,而这正是本文希望完成的。因此本文力图基于实践中的经验,讨论每个算法的优缺点。文末给出了这些算法的具体实现细节。 对机…
&figure&&img src=&https://pic4.zhimg.com/v2-5aba1bacc4f52cc2ae2d4_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic4.zhimg.com/v2-5aba1bacc4f52cc2ae2d4_r.jpg&&&/figure&&p&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-aa6badc2ebd_b.jpg& data-rawwidth=&654& data-rawheight=&297& class=&origin_image zh-lightbox-thumb& width=&654& data-original=&https://pic2.zhimg.com/v2-aa6badc2ebd_r.jpg&&&/figure&&p&&b&本章概要&/b&:前面一章我们学习了如果不确定变量是否为正态分布下的假设检验,本章的内容为在因变量不是正态分布下的线性回归。&/p&&p&例如:结果变量为类别型或者计数型。&/p&&p&广义线性模型扩展了线性模型框架,它包含非正态因变量分析。&/p&&p&&b&一、广义线性模型和glm()函数&/b&&/p&&p&1、每一种概率分布都有默认的连接函数,标准线性模型也是广义线性模型的一个特例。&/p&&p&2、在分析标准线性模型时lm()连用的许多函数在glm()中都有对应的形式。&/p&&p&3、在如何对模型进行回归诊断时,可以采用与标准线性模型同样的方法。比如:学生化残差值、Cook距离、诊断图。&/p&&p&&b&二、Logistic回归&/b&&/p&&p&1、当使用一系列连续型或类别型变量来预测二值型结果变量时,Logistic回归是个不错的选择。&/p&&p&9个变量对是否有婚外情的关系&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&#加载数据
data(Affairs, package=&AER&)
summary(Affairs)
table(Affairs$affairs)
#创建二值型结果变量
Affairs$ynaffair[Affairs$affairs & 0] &- 1
Affairs$ynaffair[Affairs$affairs == 0] &- 0
Affairs$ynaffair &- factor(Affairs$ynaffair,
levels=c(0,1),
labels=c(&No&,&Yes&))
table(Affairs$ynaffair)
#进行Logistic回归
fit.full &- glm(ynaffair ~ gender + age + yearsmarried + children +
religiousness + education + occupation +rating,
data=Affairs,family=binomial())
summary(fit.full)
# 去除不显著变量重新拟合
fit.reduced &- glm(ynaffair ~ age + yearsmarried + religiousness +
rating, data=Affairs, family=binomial())
summary(fit.reduced)
#比较两次拟合效果
anova(fit.reduced, fit.full, test=&Chisq&)
&/code&&/pre&&/div&&p&通过比较发现去除后的模型与去除前的模型拟合效果一样好。&/p&&p&&b&2、解释模型参数&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&#将对数解释指数化
coef(fit.reduced)
exp(coef(fit.reduced))
&/code&&/pre&&/div&&p&&b&3、评价预测变量对结果概率的影响&/b&&/p&&p&前面建立的模型是为了后面的预测,现在我们利用前面建立的模型进行预测。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&#婚姻评分对婚外情概率的影响
testdata &- data.frame(rating = c(1, 2, 3, 4, 5),
age = mean(Affairs$age),
yearsmarried = mean(Affairs$yearsmarried),
religiousness = mean(Affairs$religiousness))
testdata$prob &- predict(fit.reduced, newdata=testdata, type=&response&)
&/code&&/pre&&/div&&p&利用同样的方法可以预测出其他变量对结果概率的影响。&/p&&p&&b&4、过度离势&/b&&/p&&p&过度离势会导致会导致奇异的标准误检验和不精确的显著性检验,即如果出现过度离势,预测值将不准确。&/p&&p&当出现过度离势时怎么办?如何检验过度离势?&/p&&p&当出现过度离势时,仍可使用Logistic回归,但此时需要将二项分布改为类二项分布。&/p&&p&检验过度离势的方法有两种:1、求残差偏差与残差自由度的比值。2、拟合两次模型,求p值。&/p&&p&&b&5、扩展&/b&&/p&&p&*稳健Logistic回归:当数据出现离群点和强影响点时使用。&/p&&p&*多项分布回归:当响应变量包含两个以上无序类别。&/p&&p&*序数Logistic回归:响应变量是有序类别。&/p&&p&&b&三、泊松回归&/b&&/p&&p&当通过一系列连续型和或类别型变量来预测计数型结果变量时,可选择泊松回归。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&#通过治疗条件、年龄、前八周发病数来预测后八周发病数
data(breslow.dat, package=&robust&)
names(breslow.dat)
summary(breslow.dat[c(6, 7, 8, 10)])
#前八周发病数和前八周发病数与治疗方案的关系
opar &- par(no.readonly=TRUE)
par(mfrow=c(1, 2))
attach(breslow.dat)
hist(sumY, breaks=20, xlab=&Seizure Count&,
main=&Distribution of Seizures&)
boxplot(sumY ~ Trt, xlab=&Treatment&, main=&Group Comparisons&)
fit &- glm(sumY ~ Base + Age + Trt, data=breslow.dat, family=poisson())
summary(fit)
&/code&&/pre&&/div&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-b00f8818869fcf65d885e_b.jpg& data-rawwidth=&609& data-rawheight=&483& class=&origin_image zh-lightbox-thumb& width=&609& data-original=&https://pic2.zhimg.com/v2-b00f8818869fcf65d885e_r.jpg&&&/figure&&p&1、模型参数的解释与Logistic回归相同&/p&&p&2、过度离势&/p&&p&发生离势的原因:1、遗漏某个重要变量。2、可能因为事件相关。&/p&&p&检验过度离势的方法:1、还是用比值。2、使用qcc包。&/p&&p&当出现过度离势的处理方法与Logistic回归方法相同。&/p&&p&3、扩展&/p&&p&*事件段变化的泊松分布:时间段改变。&/p&&p&*零膨胀的泊松回归:预测排除了婚姻忠诚者后的调查对象会发生多少次婚外情。&/p&&p&*稳健泊松回归:出现离群点和强影响点事。&/p&&p&&b&小结&/b&:本章主要探究了分析二值型结果变量的Logistic回归和分析计数型或比率结果变量的泊松回归。&/p&
本章概要:前面一章我们学习了如果不确定变量是否为正态分布下的假设检验,本章的内容为在因变量不是正态分布下的线性回归。例如:结果变量为类别型或者计数型。广义线性模型扩展了线性模型框架,它包含非正态因变量分析。一、广义线性模型和glm()函数1、每…
&figure&&img src=&https://pic4.zhimg.com/v2-44ca4dff2bf2fc_b.jpg& data-rawwidth=&1623& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1623& data-original=&https://pic4.zhimg.com/v2-44ca4dff2bf2fc_r.jpg&&&/figure&&h2&Bootstrap简介&/h2&Bootstrap方法是非常有用的一种统计学上的估计方法,是斯坦福统计系的教授Bradley Efron(我曾有幸去教授办公室约谈了一次)在总结、归纳前人研究成果的基础上提出一种新的非参数统计方法。Bootstrap是一类非参数Monte Carlo方法,其实质是对观测信息进行再抽样,进而对总体的分布特性进行统计推断。&p&因为该方法充分利用了给定的观测信息,不需要模型其他的假设和增加新的观测,并且具有稳健性和效率高的特点。1980年代以来,随着计算机技术被引入到统计实践中来,此方法越来越受欢迎,在机器学习领域应用也很广泛。&/p&&p&首先,Bootstrap通过重抽样,可以避免了Cross-Validation造成的样本减少问题,其次,Bootstrap也可以用于创造数据的随机性。比如,我们所熟知的随机森林算法第一步就是从原始训练数据集中,应用bootstrap方法有放回地随机抽取k个新的自助样本集,并由此构建k棵分类回归树。&/p&&h2&具体讲解&/h2&&p&下面我们用一个例子具体介绍bootstrap的原理和用法:&/p&&p&假设我们有两个金融资产X和Y,我们现在想要合理配置这两个资产,使得其资产组合的风险最小。也就是找到一个&img src=&https://www.zhihu.com/equation?tex=%5Calpha+& alt=&\alpha & eeimg=&1&&,使得&img src=&https://www.zhihu.com/equation?tex=Var%28%5Calpha+X%2B%281-%5Calpha%29Y%29& alt=&Var(\alpha X+(1-\alpha)Y)& eeimg=&1&&最小。这个问题几十年前马尔可维茨已经在其投资组合理论里给出了解答,最优的&img src=&https://www.zhihu.com/equation?tex=%5Calpha& alt=&\alpha& eeimg=&1&&表达式如下:&/p&&p&&figure&&img src=&https://pic3.zhimg.com/v2-c6669ab9febc_b.jpg& data-rawwidth=&1565& data-rawheight=&263& class=&origin_image zh-lightbox-thumb& width=&1565& data-original=&https://pic3.zhimg.com/v2-c6669ab9febc_r.jpg&&&/figure&但是现实生活中实际上我们并不知道&img src=&https://www.zhihu.com/equation?tex=%5Csigma+_X%5E2& alt=&\sigma _X^2& eeimg=&1&&,&img src=&https://www.zhihu.com/equation?tex=%5Csigma_Y%5E2& alt=&\sigma_Y^2& eeimg=&1&&以及&img src=&https://www.zhihu.com/equation?tex=%5Csigma_%7BXY%7D& alt=&\sigma_{XY}& eeimg=&1&&的值,故而只能通过X和Y的一系列样本对其进行估计。并用估计值&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Csigma+_X%5E2%7D& alt=&\hat{\sigma _X^2}& eeimg=&1&&,&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Csigma_Y%5E2%7D& alt=&\hat{\sigma_Y^2}& eeimg=&1&&以及&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Csigma_%7BXY%7D%7D& alt=&\hat{\sigma_{XY}}& eeimg=&1&&代替&img src=&https://www.zhihu.com/equation?tex=%5Csigma+_X%5E2& alt=&\sigma _X^2& eeimg=&1&&,&img src=&https://www.zhihu.com/equation?tex=%5Csigma_Y%5E2& alt=&\sigma_Y^2& eeimg=&1&&以及&img src=&https://www.zhihu.com/equation?tex=%5Csigma_%7BXY%7D& alt=&\sigma_{XY}& eeimg=&1&&插入公式:&/p&&p&&figure&&img src=&https://pic4.zhimg.com/v2-4ef2e5662eeec9f550b4_b.jpg& data-rawwidth=&1368& data-rawheight=&216& class=&origin_image zh-lightbox-thumb& width=&1368& data-original=&https://pic4.zhimg.com/v2-4ef2e5662eeec9f550b4_r.jpg&&&/figure&所以我们唯一的任务就是合理地估计&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Csigma+_X%5E2%7D& alt=&\hat{\sigma _X^2}& eeimg=&1&&,&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Csigma_Y%5E2%7D& alt=&\hat{\sigma_Y^2}& eeimg=&1&&以及&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Csigma_%7BXY%7D%7D& alt=&\hat{\sigma_{XY}}& eeimg=&1&&,传统方法中我们一般会考虑直接使用样本方差(sample variance)去估计&img src=&https://www.zhihu.com/equation?tex=%5Csigma+_X%5E2& alt=&\sigma _X^2& eeimg=&1&&,&img src=&https://www.zhihu.com/equation?tex=%5Csigma_Y%5E2& alt=&\sigma_Y^2& eeimg=&1&&以及&img src=&https://www.zhihu.com/equation?tex=%5Csigma_%7BXY%7D& alt=&\sigma_{XY}& eeimg=&1&&的值,&b&然而自从有了Bootstrap之后,我们有了另一种方法与途径,可以更好地去做估计总体的分布特性,即不仅可以估计&/b&&img src=&https://www.zhihu.com/equation?tex=%5Calpha%0A& alt=&\alpha
& eeimg=&1&&&b&,还可以估计&/b&&img src=&https://www.zhihu.com/equation?tex=%5Calpha%0A& alt=&\alpha
& eeimg=&1&&&b&的方差、中位数等值。&/b&下面就讲讲Bootstrap究竟是如何做到这一点的:&/p&&h2&Bootstrap步骤:&/h2&&p&1. 在原有的样本中通过重抽样抽取一定数量(比如100)的新样本,重抽样(Re-sample)的意思就是有放回的抽取,即一个数据有可以被重复抽取超过一次。&/p&&p&2. 基于产生的新样本,计算我们需要估计的统计量。&/p&&p&在这例子中,我们需要估计的统计量是&img src=&https://www.zhihu.com/equation?tex=%5Calpha%0A& alt=&\alpha
& eeimg=&1&&,那么我们就需要基于新样本的计算样本方差、协方差的值作为&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Csigma+_X%5E2%7D& alt=&\hat{\sigma _X^2}& eeimg=&1&&,&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Csigma_Y%5E2%7D& alt=&\hat{\sigma_Y^2}& eeimg=&1&&以及&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Csigma_%7BXY%7D%7D& alt=&\hat{\sigma_{XY}}& eeimg=&1&&,然后通过上面公式算出一个&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Calpha%7D& alt=&\hat{\alpha}& eeimg=&1&&&/p&&br&3. 重复上述步骤n次(一般是n&1000次)。&p&在这个例子中,通过n次(假设n=1000),我们就可以得到1000个&img src=&https://www.zhihu.com/equation?tex=%5Calpha_i& alt=&\alpha_i& eeimg=&1&&。也就是&img src=&https://www.zhihu.com/equation?tex=%5Calpha_1%2C%5Calpha_2%2C%5Ccdots%2C%5Calpha_%7B1000%7D& alt=&\alpha_1,\alpha_2,\cdots,\alpha_{1000}& eeimg=&1&&。&/p&&p&4. 最后,我们可以计算被估计量的均值和方差(不用关注最后的具体数值,这与原本的样本有关):&br&&/p&&p&&figure&&img src=&https://pic1.zhimg.com/v2-41aa578ffb3a17dd472ca_b.jpg& data-rawwidth=&1436& data-rawheight=&224& class=&origin_image zh-lightbox-thumb& width=&1436& data-original=&https://pic1.zhimg.com/v2-41aa578ffb3a17dd472ca_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-58db1aec0c24e5b0f64c_b.jpg& data-rawwidth=&1547& data-rawheight=&271& class=&origin_image zh-lightbox-thumb& width=&1547& data-original=&https://pic3.zhimg.com/v2-58db1aec0c24e5b0f64c_r.jpg&&&/figure&我们发现,通过Bootstrap方法我们竟然不仅可以估计&img src=&https://www.zhihu.com/equation?tex=%5Calpha& alt=&\alpha& eeimg=&1&&的值( 这点普通方法也可以很容易做到),还可以估计&img src=&https://www.zhihu.com/equation?tex=%5Calpha& alt=&\alpha& eeimg=&1&&的accuracy也就是其Standard Error。这可是只利用原有的样本进行一次估计所做不到的。那么Bootstrap对于分布特性的估计效果究竟如何呢?请看下图:&/p&&p&&figure&&img src=&https://pic3.zhimg.com/v2-21fdd217e43436acb5db_b.jpg& data-rawwidth=&1787& data-rawheight=&677& class=&origin_image zh-lightbox-thumb& width=&1787& data-original=&https://pic3.zhimg.com/v2-21fdd217e43436acb5db_r.jpg&&&/figure&左边是真实的&img src=&https://www.zhihu.com/equation?tex=%5Calpha%0A& alt=&\alpha
& eeimg=&1&&分别,右边则是基于bootstrap方法得到的1000个&img src=&https://www.zhihu.com/equation?tex=%5Calpha%0A& alt=&\alpha
& eeimg=&1&&的分布,可以看到,二者是比较相近的,也就是说Bootstrap有着不错的估计效果。而且当重复次数增多,Bootstrap的估计效果会更好。&/p&&p&不仅是&img src=&https://www.zhihu.com/equation?tex=%5Calpha%0A& alt=&\alpha
& eeimg=&1&&的标准差,如果我们想要估计&img src=&https://www.zhihu.com/equation?tex=%5Calpha%0A& alt=&\alpha
& eeimg=&1&&的中位数、分位数等统计量,也是可以通过Boostrap方法做到的,其整个流程可以用下面一张图诠释:&/p&&br&&figure&&img src=&https://pic1.zhimg.com/v2-f2b47fd46b_b.jpg& data-rawwidth=&1395& data-rawheight=&1295& class=&origin_image zh-lightbox-thumb& width=&1395& data-original=&https://pic1.zhimg.com/v2-f2b47fd46b_r.jpg&&&/figure&本质上,Bootstrap方法,是将一次的估计过程,重复上千次上万次,从而便得到了得到上千个甚至上万个的估计值,于是利用这不止一个的估计值,我们就可以估计&img src=&https://www.zhihu.com/equation?tex=%5Calpha%0A& alt=&\alpha
& eeimg=&1&&均值以外的其他统计量:比如标准差、中位数等。&p&本文部分图片来源:《An Introduction to Statistical Learning with Applications in R》&br&&/p&&h2&说在后面&/h2&&p&关于机器学习的内容还未结束,请持续关注该专栏的后续文章。&/p&&p&更多内容请关注我的专栏:&a href=&https://zhuanlan.zhihu.com/rdatamining& class=&internal&&R Language and Data Mining&/a&&/p&&p&或者关注我的知乎账号:&a href=&https://www.zhihu.com/people/wen-yi-yang-81& class=&internal&&温如&/a&&/p&
Bootstrap简介Bootstrap方法是非常有用的一种统计学上的估计方法,是斯坦福统计系的教授Bradley Efron(我曾有幸去教授办公室约谈了一次)在总结、归纳前人研究成果的基础上提出一种新的非参数统计方法。Bootstrap是一类非参数Monte Carlo方法,其实质是对观…
&figure&&img src=&https://pic1.zhimg.com/v2-e184fe23d9c17e943dd6d22d_b.jpg& data-rawwidth=&900& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&https://pic1.zhimg.com/v2-e184fe23d9c17e943dd6d22d_r.jpg&&&/figure&本节主要总结「数据分析」的「Resampling」重抽样思想,并通过 R 语言实现。&br&&blockquote&有一种东西叫作「传统」,它在很多时候很有用,但会让你思维固化,在新的环境下让你出错。&br&&/blockquote&&p&在总结回归分析和方差分析的时候 &a href=&https://zhuanlan.zhihu.com/p/?refer=mydata& class=&internal&&④R语言之数据分析「初章」&/a&,我总是会在模型的建立之前提到「统计假设」,在模型建立之后进行「假设检验」,原因想必大家都能理解,就是因为这些「统计假设」是我们模型建立思想的基础,是支撑我们模型正确性的「必要条件」。但是,不可否认的是,这些「必要条件」最终会成为我们「数据分析」的局限,让我们对「不满足条件的数据集」束手无策。&/p&&p&本节,我们就来解决这个「必要条件」中的其中一条假设,从特例到普遍。&/p&&br&&p&统计假设中有一条,叫做「假定观测数据抽样自正态分布或者是是其他性质较好的分布」,那么当数据集抽样自「未知分布、混合分布」、样本容量过小或存在离群点时,传统的统计方法所得到的模型可能就会不那么准确,原因之前已经讲过,这个时候「Resampling」 的思想就出现了。它抛弃了分布的理论,而是完全基于同一个样本,在这个样本中多次重复抽样,然后将所有抽样的结果作为总体,将原样本放到其中去检验,判定其显著性。因为需要多次重复抽样,所有它被称为重抽样「Resampling」。&/p&&br&&br&&br&&br&&h2&1. Resampling 的分类&/h2&&br&&p&1.1. 置换检验( permutation test )&/p&&p&这个方法是传统统计方法的创建者 R. A. Fisher 建立的,但是由于这个方法的计算量过大、且计算机技术也未成熟,他最后放弃了这个方法。但是,数十年后的今天,计算机技术的高速发展,这个方法终于能够实现并发挥其价值。&/p&&p&为了更清楚的说明置换检验的思想,我举一个「两总体均值之差」的推断问题:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&现在有两套学习方案 A 和 B,在 10 个受试者中随机抽取 5 个按照方案 A 学习,另外 5 个按照方案 B 学习,在学习完毕后对 10 个受试者进行测试,得到分数如下:
原假设H_{0} :两种方案的总体均值相等 ;备择假设H_{a}:两种方案的总体均值不等
&/code&&/pre&&/div&&p&这种问题,用参数方法来解决你应该是很熟悉的,现在我来解释置换检验的思想是怎样的。置换检验的思想下,由于我们原假设两个方案的总体均值是相等的,那么如果两种方案真的是等价的话,则 10 个受试者的分数的分配应该是任意的。这么讲你可能还是不太理解,其实在原假设成立的前提下,我们把两种方案的总体视为等价的,那么我们同样也可将这两个方案的总体视为同一个总体,这样的话,10 个受试者者的分数在可以在任意位置,而不用在乎这个位置是属于方案 A 还是方案 B。在这样的前提下,我们利用重抽样得到一个「源于已有样本的抽样分布」,再利用 t 统计量在这个「源于已有样本的抽样分布」上判别初始观测数据的显著性,具体步骤如下:&/p&&br&&blockquote&1. 计算初始观测数据的 t 统计量,记为 &img src=&https://www.zhihu.com/equation?tex=t_%7B0%7D& alt=&t_{0}& eeimg=&1&&&br&2. 将初始观测数据的 10 个得分,作为一个「重抽样的总体」,从中抽取 5 个放到 A 组,另五个放到 B 组,并计算此种情况下的 t 统计量&br&3. 重复步骤 2,直到穷尽所有可能。其实就是一个组合问题,一共有 &img src=&https://www.zhihu.com/equation?tex=C_%7B5%7D%5E%7B10%7D+%3D252& alt=&C_{5}^{10} =252& eeimg=&1&& 种可能&br&4. 将 252 种可能的 t 统计量,按照从小到大排序,得到了「源于已有样本的抽样分布」&br&5. 根据 &img src=&https://www.zhihu.com/equation?tex=t_%7B0%7D& alt=&t_{0}& eeimg=&1&& 在此分布中的位置,和我们确定的显著性水平,判别原假设我们可否拒绝&/blockquote&&br&&p&1.2. 交叉验证( Cross validation ) &/p&
&p&在交叉验证的思想中,一个样本被随机的分成两个或 K 个子样本,将其中一个作为验证集,其他 K-1 个子样本组合成训练集,在训练集上获得回归方程,而后在验证集上做出预测,这为一重验证,而后所有子样本轮流充当验证集,如此往复,直至遍历所有可能。这样我们就可以得到 K 个“预测误差”,求其平均值即为所谓的“ CV 值”,所以常说的 CV 值实际上是预测误差期望Err的一个估计值。&/p&&blockquote&交叉验证的思想比较容易理解,也是一种十分符合我们直觉的验证方法,这里就不举例说明了。&br&但值得注意的一点是,K 的取值会影响我们预测的准确性,具体是怎么影响的涉及到“偏误”、“方差”以及“计算效率”的权衡,主要是“偏误”与“计算效率”的权衡,这里就不深究,感兴趣的同学可以看看 &a href=&https://link.zhihu.com/?target=https%3A//cos.name/2015/08/some-basic-ideas-and-methods-of-model-selection/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&「模型选择的一些基本思想和方法」&/a&这篇文章。&br&&br&不过,我们可以粗略的设置 K 的取值:&br&&ol&&li&大样本,5 重交叉验证,对预测误差的估计已经足够准确,这里偏向于增大计算效率&/li&&li&小样本,10重交叉验证,为了得到相对准确的估计,这里考虑损失计算效率&/li&&/ol&&/blockquote&&br&1.3. 刀切法( Jackknife )&p&刀切法的思想,十分适用于分布的分散过宽或者出现异常值的数据,通俗来讲就是「既然我们所拥有的数据都只是样本,都是抽样得到的,那么我们在做推断和估计的时候,扔掉几个观测,看看效果如何。」在刀切法中我们反复的行为就是从样本中选取一个观测,把它抛弃,而后利用剩余的数据做出估计,如此往复,直到每一个观测都被抛弃过一次。根据每次估计的统计量,取均值,而后将这个均值与原样本(没有观测没抛弃)上估计到到的统计量想比较,就可以得到「偏差校正刀切估计值」。我的表述可能你能听懂,但是还理解不深,下面我举例说明。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&因为一个理科生的各科成绩之间可能存在某种相关性,现在我们想用用学生的物理成绩和化学成绩来预测他的数学成绩,现在有 50 个观测:
&/code&&/pre&&/div&&blockquote&刀切法的步骤按如下进行:&br&1. 将第 1 个观测删除&br&2. 将剩余 49 个观测作为训练集,训练得到一个统计量(一般为 R 平方统计量,或者变量的回归系数)&br&3. 在原样本中将下一个观测删除,重复第 2 步&br&4. 重复第 3 步, 直到遍历所有可能,这里一共得到 50 个统计量,并求均值得到&img src=&https://www.zhihu.com/equation?tex=%5Ctheta+_%7B%28.%29%7D+& alt=&\theta _{(.)} & eeimg=&1&&&br&5. 根据原样本( 没有观测被抛弃 )计算统计量得到&img src=&https://www.zhihu.com/equation?tex=%5Ctheta+& alt=&\theta & eeimg=&1&&&br&6. 偏差校正刀切估计值为 &img src=&https://www.zhihu.com/equation?tex=%5Ctheta+_%7Bjack%7D+%3Dn%5Ctheta+-%5Cleft%28+n-1+%5Cright%29+%5Ctheta+_%7B%28.%29%7D+& alt=&\theta _{jack} =n\theta -\left( n-1 \right) \theta _{(.)} & eeimg=&1&&&/blockquote&&br&&p&1.4. Bootstrap&/p&&p&与刀切法相比,Bootstrap 法的重抽样思想更加透彻。刀切法的重抽样次数与观测数量有关,而 Bootstrap 法的抽样次数理论上是没有上限的,将原样本在计算机性能允许的基础上尽可能重复抽样更多次,得到了一个「virtual population 」,从其中我们可以得到统计量的「虚拟潜在分布」,并根据此分布估计置信区间。&/p&&p&举例说明:&/p&&p&现在有一个容量为 10 的样本,均值 20,标准差 2,希望根据样本估计总体均值的置信区间。&/p&&blockquote&按照传统思想,我们可以假设样本分布为正态分布,而后根据正态分布计算总体均值的置信区间。但当样本分布不服从正态分布时,可以利用 Bootstrap 法:&br&1. 有放回地从样本中抽取 10 个观测,并计算其均值(注意由于抽样是有放回的,重抽样得到的样本与原样本虽然容量相同,但是观测不一定相同,因为有的观测可能被多次选择,有的可能一直都不会被选中)&br&2. 重复 1,次数为 2000&br&3. 将 2000 个均值升序排列&br&4. 确定显著性水平,计算得到置信区间(例如:要求 95% 的置信区间,找出 2.5% 和 97.5% 的分位点,其中间部分就为 95% 的置信区间)&/blockquote&&br&&br&&h2&2. R 语言实现重抽样&/h2&&br&&p&2.1. 置换检验&/p&&p&格式:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& function_name( formula , data , distribution = )
# formula 是被检验变量之间的关系, data 是数据框,distribution 指定重抽样的方式
&/code&&/pre&&/div&&p&这里的重抽样方式,除了之前将的按照完全排列组合抽样之外( distribution = &exact& ),为了节省计算机资源,可以选择根据渐进分布抽样( distribution = &asymptotic& ),和&a href=&https://www.zhihu.com/question//answer/& class=&internal&&蒙特卡洛重抽样&/a&( distribution = &approxiamate(B=#)& )# 为重复次数,一般要设定随机种子,以便将来重现。&/p&&br&&p&2.1.1. 两样本和 K 样本的独立性检验( coin 包 )&/p&&ul&&li&两样本独立性的参数检验法( 置换检验 ) &/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& oneway_test(score~treatment,data=mydata,distribution=&exact&)
# 这里表达式 ~ 的两边分别为应变量和分组变量
# 传统为 t.test() 函数
&/code&&/pre&&/div&&/li&&li&两样本独立性的非参数检验法( 置换检验 )&/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& wilcox_test(Prob ~ So ,data=UScrime,
distribution=&exact&)
# 这里表达式 ~ 的两边分别为应变量和分组变量
# 传统为 wilcox.test() 函数
&/code&&/pre&&/div&&/li&&li&K 样本独立性的参数检验法( 置换检验 )&/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& oneway_test(response ~ trt ,data=cholesterol,
distribution=&approxiamate(B=9999)&)# 这里表达式 ~ 的两边分别为应变量和分组变量
# 传统为 单因素方差分析
&/code&&/pre&&/div&&/li&&/ul&&p&2.1.2. 列联表中两分组变量之间的独立性检验( coin 包
)&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& Arthritis &- transform(Arthritis,
Improved=as.factor(as.numeric(Improved)))
& set.seed(1234)
& chisq_test(Treatment~Improved,data=Arthritis,
distribution=approximate(B=9999))
# 这里表达式 ~ 的两边分别为两个分组变量
# 如果使用有序因子,则次函数为线性趋势检验,因此第一行代码将 Improved 转换成无序
&/code&&/pre&&/div&&p&2.1.3. 数值型变量之间的独立性检验( coin 包
)&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& states &- as.data.frame(state.x77)
& set.seed(1234)
& spearman_test(Illiteracy ~ Murder , data=states,
distribution=approximate(B=9999))
# 这里表达式 ~ 的两边分别为两个数值型变量
# coin 包中必须为数据框
&/code&&/pre&&/div&&p&2.1.4. 两样本和 K 样本的相关性检验( coin包 )&/p&&ul&&li&两样本&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& wilcoxsign_test(U1~U2,data=UScrime,distribution=&exact&)
&/code&&/pre&&/div&&/li&&li&K 样本&/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& friedman_test(times ~ methods | block, data = rounding)
&/code&&/pre&&/div&&/li&&/ul&&p&2.1.5. 简单回归和多项式回归( lmPerm 包 )&/p&&ul&&li&简单线性回归(置换检验)&/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& set.seed(1234)
& fit1 &- lmp(weight~height,data = women, perm=&Prob&)
& summary(fit)
# lmp() 函数与 lm() 函数类似,只是多了 perm 参数,其可选值有 Exact、Prob 或SPR
# Exact 根据所有可能的排列组合生成精确检验。Prob 从所有可能的排列中不断抽样,直至估计的标准差在估计的 p 值 0.1 之下,判停准则由可选的 Ca 参数控制。SPR 使用贯序概率比检验来判断何时停止抽样。
观测数大于10,perm=&Exact&将 自动默认转为 perm=&Prob&,因为精确检验只适用于小样本问题。
&/code&&/pre&&/div&&/li&&li&多项式回归(置换检验)&/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& set.seed(1234)
& fit2 &- lmp(weight~height+I(height^2),data=women,perm=&Prob&)
& summary(fit)
&/code&&/pre&&/div&&/li&&/ul&&p&2.1.6. 多元回归(置换检验)&/p&&br&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& set.seed(1234)
& states &- as.data.frame(state.x77)
& fit &- lmp(Murder ~ Population + Illiteracy + Income + Frost,
data=states, perm = &Prob&)
& summary(fit)
&/code&&/pre&&/div&&p&2.1.7. 单因素方差分析和协方差分析&/p&&ul&&li&单因素方差分析(置换检验)&/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& set.seed(1234)
& fit &- aovp(response ~ trt, data = cholesterol, perm=&Prob&)
& summary(fit)
# aovp() 函数与 aov() 函数类似,只是多了 perm 参数,其可选值有 Exact、Prob 或 SPR
&/code&&/pre&&/div&&/li&&li&单因素协方差分析(置换检验)&/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& set.seed(1234)
& fit &- aovp(weight ~ gesttime + dose, data=litter, perm=&Prob&)
& summary(fit)
&/code&&/pre&&/div&&/li&&/ul&&p&2.1.8. 双因素方差分析&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& set.seed(1234)
& fit &- aovp(len~supp*dose, data = ToothGrowth, perm=&Prob&)
& summary(fit)
&/code&&/pre&&/div&&br&&p&2.2. 交叉验证&/p&&p&《 R 语言实战 》中的自编函数 shrinkage ( ) 可以实现 K 重交叉验证,默认为 10 重,可以通过参数 k 修改。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& states &- as.data.frame(state.x77[,c(&Murder&, &Population&, &Illiteracy&, &Income&, &Frost&)])
& fit &- lm(Murder ~ Population + Income + Illiteracy + Frost, data=states)
& shrinkage(fit)
&/code&&/pre&&/div&&p&2.3. 刀切法&/p&&p&《 R 语言实践 》中并未介绍刀切法的实现,可以参考以下代码&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&# 抽样得到样本
& set.seed(1234)
& x &- rnorm(100,0,5)
# 运用刀切法重抽样
& jack &- function(x){
jackknife &- 0
for(i in 1:length(x)){
jackknife[i]=length(x)*var(x)-(length(x)-1)/length(x)*sum(var(x[-i]))
return(jackknife)
# 计算刀切法得到的抽样方差
& mean(jack(x))/length(x)
[1] 24.97106
# 计算抽样方差
[1] 25.22075
&/code&&/pre&&/div&&p&2.4. Bootstrap&/p&&p&格式:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&# Bootstrap 重抽样,并返回统计量
& bootobject &- boot(data=, statistic=, R=, ...)
# data 为原样本,也是我们重抽样的数据来源,可以是向量、矩阵或者数据框
# statistic 为生成 k 个统计量的函数,这个函数的参数中必须包括 indices,indices 参数用于 boot() 对原样本重抽样
# R 为重抽样的次数
# 获取置信区间
& boot.ci(bootobject, conf=, type= )
# bootobject 为存储重抽样结果的对象
# conf 为置信区间的置信度
# type 为置信区间的类型
&/code&&/pre&&/div&&p&2.4.1. 对单个统计量使用自助法&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& #获取 R 平方值的自编函数
& rsq &- function(formula, data, indices){
d &- data[indices,]
fit &- lm(formula, data=d)
return(summary(fit)$r.square)
& #自助抽样
& set.seed(1234)
& results &- boot(data=mtcars, statistic = rsq,
R=1000, formula=mpg~wt+disp)
& #输出 boot 对象
& print(results)
& plot(results)
& #计算置信区间
& boot.ci(results, type=c(&perc&,&bca&))
# type 参数为 perc 时展示的是样本均值,为 bca 时将根据偏差对区间做简单调整
&/code&&/pre&&/div&&p&2.4.2. 多个统计量的自助法&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&& #返回回归系数向量的自编函数
bs &- function(formula, data, indices){
d &- data[indices,]
fit &- lm(formula,data=d)
return(coef(fit))
& #自助抽样
set.seed(1234)
results &- boot(data=mtcars, statistic = bs,
R=1000, formula=mpg~wt+disp)
#输出 boot 对象
print(results)
plot(results,index=2)
#计算置信区间
boot.ci(results,type = &bca&, index=2)
boot.ci(results,type = &bca&, index=3)
# index 参数用于指明需要分析的重抽样所得样本的列
&/code&&/pre&&/div&
本节主要总结「数据分析」的「Resampling」重抽样思想,并通过 R 语言实现。 有一种东西叫作「传统」,它在很多时候很有用,但会让你思维固化,在新的环境下让你出错。 在总结回归分析和方差分析的时候 ,我总是会在模型的建立之…
&p&&b&以下内容来自&a href=&http://link.zhihu.com/?target=http%3A//www.cnblogs.com/pinard/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&刘建平&/a&Pinard-博客园的学习笔记,总结如下:&/b&&/p&&h2&&b&1 交叉验证法&/b&&/h2&&p&&b&交叉验证是在机器学习建立模型和验证模型参数时常用的办法。&/b&交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,&b&某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。&/b& &/p&&p&那么什么时候才需要交叉验证呢?&/p&&p&&b&交叉验证用在数据不是很充足的时候。&/b&&/p&&p&比如在我日常项目里面,对于普通适中问题,如果&b&数据样本量小于一万条&/b&,我们就会采用交叉验证来训练优化选择模型。如果样本大于一万条的话,我们一般随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。&/p&&p&用训练集来训练模型,&/p&&p&用验证集来评估模型预

我要回帖

更多关于 统计学专业 的文章

 

随机推荐