商业案例研究分析方法法与案例;哪儿有psid的?哪个好玩

当前位置:
【译文】如何开始你的商业分析生涯
发布时间:&&
文章分类:&&
每一次参与商业分析论坛或者和学生互动的时候,他们经常问这样两个典型而且被多次解释的问题:我是一个本科生(或者别的学历),而我很希望能从事分析行业,而我应该怎么做呢?或者我想在分析行业干一番大事或打算转行到分析行业,那我又该怎么办呢?而且,我在我的邮箱或社交媒体上收到的留言也是问同样的问题。为了能给这些人一个最好的答案,我认为最好还是写一篇文章然后给每个人一个入门的平台。这门学科本身的研究范围就比较广,所以我会给大家提供一份能够执行且关注特殊子主题的概要,然后在后面的文章会提到。在探讨如何构建你的分析职业工作之前,首先让我们快速的提及一下我们为什么要构建我们的分析生涯。为什么要构建一个商业分析生涯?分析,是一个需求量呈指数增长的行业。随着越来越多的数据可以以数字形式展现出来,而更加智能、快速和基于数据的决策是目前唯一增长的需求。因此,我用下列的这几个事实来阐述一下我的论点:根据哈佛商业评论期刊(2012年10月),数据科学家将是21世纪最吸引人的工作。根据麦肯锡全球研究所在2011年5月的报道指出:在2018年的时候,美国将会面临14万到19万分析行业人才的短缺,同时也将面临150万善于使用大数据进行有效决策的管理人员和分析人员的短缺。想象一下这在全球将是一个多大的数目…….我知道分析行业将来会有一个飞速的发展,但是我不知道从何入手?对于一个新手来说,寻找一个最好的方法入手从事分析行业是比较难的,原因如下:1.在行业还在初期发展阶段,我们很难得到一个很合适的指导。2.“分析”或者“商业分析”都是使用比较密切的术语,这使得人们很难理解和欣赏这些角色。3.这里很少有一个框架或前人已经很好的运用的方法你可以从中借鉴,随后能顺利的进入这个行业。当第一个因素随着时间推移而有所改善,以及我已经在这里写了一篇文章来阐述第二个原因后,这篇文章则侧重于讲述第三个原因。两个构建你的事业的方法:就像很多其它行业的技能那样,这里有两个方法可以帮助你构建或者进入商业分析生涯:方法1:受雇一家愿意帮你进行职业或者公司内部的基本技能培训的公司。这些都会用到想要进行DNA分析的公司的决策上。而这种更好的途径从长远的角度来说,需要金钱和时间的投入(尤其在这里公司被没有提供一个系统的培训)。有些公司很擅长使用尖端的分析方法(尤其在印度),这些公司如下:技术领导者:如Google,Facebook和Linkedin。银行、金融服务和保险公司(BFSI):如Capitol One、American Express、ICICI和HDFC。电信公司:Idea、Vadafone、Airtel分析机构:Factual、Mu-Sigma、Absulutedata、ZS Associate我计划在接下来的几周时间里面会写一篇文章,教大家如何准备好面试分析行业的工作。如果你已经要面应聘这些公司并且准备面试的话,记得关注我们的动态。其中,一个可行的办法就是进这些公司谋求一份实习工作。所以,如果你有一个2到6个月的假期,可以尝试一下去那些公司当一名实习生。方法2:获取与商业分析相关的证书。这些证书可以给你提供相应的技能,但是不能补偿你所欠缺的工作经验。以下几个观点提供了一些可行的技能培训(在印度):l
如果你有一定的工作经验,这里有各种由顶尖的学术机构的相关人员授课的相关课程,而我在之前的文章中已经提到很多相关的细节供大家参考。如果你有与这个专业相关所需的经验及资源,我会推荐你到ISB听一些相关课程。对于新手来说,这里有一些由SAS培训机构,Jigsaw学术(在线),ADSA分析培训机构提供的相关认证课程。当你上完这些认证课程以后,这可以让你增加被一些最好的公司录用的机会。 我还有别的可以做吗?这里还有一些特殊的途径可以帮助你开始你的分析生涯,这里一些小小的步骤可以帮助你提升对分析行业的认知。以下是其中的一些必要步骤:持续阅读与这个行业相关的信息:保持关注这个行业的相关信息,可以通过读博客和社区上的文章来理解相关的内容。、 kaushik.net等相关的一些网站可以帮助你更新和持续关注这个行业的动态。参加一些业界的论坛:这里有各种行业的论坛、会议和协商会议,而且只要你有机会都可以参加,并且可以了解相关的行业最新动态。SAS论坛(每年举办一次)是会见一些最顶尖的业内人士的地方。SAS印度论坛和全球论坛的视频和活动都有可能在网上找得到。尝试找一份实习工作:参加实习工作可以帮助你很好的开始你的分析行业生涯。他们会在你决定要接下这份工作之前给你提供一些工作的类似,而且雇主还会在没有进行一些重大投资之前获得对你的相关评估。联系相关人士:由于当今这个行业的规模不是很大,有很多人直接是相互认识的。所以,你需要找一些你要和他联系和沟通的相关业内人士。他们是你最好的信息来源。可以在网上找一些训练材料来看:谷歌给谷歌学术提供了一些免费的训练材料。这里有各种网站提供了你可以免费获取并参加的基础课程。一些大学的一些课程可以让所有人进行收看,并且你要买多少课程都不做限制。书籍:阅读一些写的比较好的专业书籍如Scoring Point(可在特易购购买)。The new Science of retailing、The Signal和 The Noise 都是值得推荐你们去看的书。如果你还找到其它有用的资源可以帮助你学习这个学科的知识的话,欢迎你把它们添加到留言板。翻译:品言
审核:陆勤原文链接:/blog/2013/07/start-career-business-analytics/PPV课原创翻译文章,转自请注明出处和译者!1、回复“数据分析师”查看数据分析师系列文章2、回复“案例”查看大数据案例系列文章3、回复“征信”查看相关征信的系列文章4、回复“可视化”查看可视化专题系列文章5、回复“SPPS”查看SPSS系列文章6、回复“答案”查看hadoop面试题题目及答案7、回复“爱情”查看大数据与爱情的故事8、回复“笑话”查看大数据系列笑话9、回复“大数据1、大数据2、大数据3、大数据4”查看大数据历史机遇连载</p
本文永久链接:/category/news/954854.html
声明:本文转载于网络,由网友提交收录,文章内容为原作者独立观点,不代表本站立场!如需收录/删除,请联系本站小编 QQ:
最新文章:文章推荐:
热门推荐热门文章
本周热门文章推荐
猜你喜欢最新文章&p&作为互联网营销从业者的我,在开始什么也不太懂,当然也是一个超级菜鸟了。直到我有一天在网上看到了它:&a href=&///?target=http%3A///course/31/play%3Futm_source%3DZhiHu%26utm_medium%3DHuiDa%26utm_campaign%3Dzhihu0529hq& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数据分析篇2:数据分析帮你实际解决的10个问题&i class=&icon-external&&&/i&&/a&,我才知道原来数据分析对于网站的运营,乃至是对于整个营销流程来说,都是非常关键的一环。没有数据分析,就没有反馈,营销效果就不能得到评估,当然也就更加无法知道这次的营销好在哪,差在哪,也就没有任何可以对整个营销流程做进一步调整优化的可能了。&/p&&br&&p&&b&那么,作为一个超级菜鸟,该怎么学习数据分析呢?&/b&&/p&&br&&p&既然是学习,那当然是先掌握基本的数据分析知识。我是互联网营销从业者。就以互联网营销当中要用到的数据分析来为题主解答一下。&/p&&br&&p&首先,我们先来认识一下最常见的数据分析工具。基本上很多企业做常用的就两种:国内百度的&b&百度统计&/b&,以及国外Google的&b&Google Analytics(GA)&/b&。而通过对比使用,我们发现GA的数据统计更加的准确,而且实现的功能也更加齐全。&/p&&br&&p&因此,接下来,我就以GA作为讲解,按以下讲解的步骤,大家就可以一边学习,一边自己练习,然后就可以直接用在自己的工作中,这样更有实际意义一些。这样也算是不会浪费大家的时间来看我的这篇文章。&/p&&br&&p&&b&好了,大家可以先去喝口水,下面就进入我们的干货环节。&/b&&/p&&br&&p&学习分成3个阶段:0基础水平(毛都不会)、略懂皮毛(能监测到转化率)、中级水平(会制作你自己的自定义报告)。&/p&&br&&p&知道你只看文字理解起来费尽,往后翻,每个知识点都给你做截图示例了,我现在有一种深深的老妈子赶脚。&/p&&br&&p&&b&第一阶段:零基础水平&/b&&/p&&br&&p&你至少得需要了解GA的工作原理,如果你的网站,没有设置过监测链接,你至少知道如何跟你的工程师说“帮我把监测代码部署到前端页面”,以及如何设置一个你自己的监测链接,涉及到的知识点如下:&/p&&br&&p&【1】了解GA的工作原理
&/p&&br&&p&很简单,一个网站是由N多个页面组成的,一个页面是由N多行代码写出来的,当用户访问你的网站时,浏览器就在:加-载-代-码!所以GA会给你的网站生成一段代码,当工程师同学把这段代码放到你的网站页面时,用户来浏览你的网站,先加载了你的监测代码,这时候用户的信息就留下了,你开始可以看到数据了。&/p&&br&&p&找到网站的跟踪代码,如图:&/p&&img src=&/3f97c4f09faac76ad67dec71eace1a30_b.png& data-rawwidth=&1528& data-rawheight=&642& class=&origin_image zh-lightbox-thumb& width=&1528& data-original=&/3f97c4f09faac76ad67dec71eace1a30_r.png&&&p&【2】学会设置一条监测链接
&/p&&br&&p&设置检测链接不用多解释了,就是把一条正常的链接,加上可被GA识别的监测。&/p&&br&&p&比如踏浪实操教学网站中的一个课程页面作为我的监测目标链接,原来的链接是这样的:&img src=&/995b199a9b933b09e5aaa8_b.png& data-rawwidth=&609& data-rawheight=&36& class=&origin_image zh-lightbox-thumb& width=&609& data-original=&/995b199a9b933b09e5aaa8_r.png&&这就是一个正常的、没有加监测的网址。&/p&&br&&p&而对这个目标链接加了监测就是酱紫的,如下图所示:&br&&/p&&img src=&/b3fbfe2bdf1dac4d7c6547c_b.png& data-rawwidth=&902& data-rawheight=&189& class=&origin_image zh-lightbox-thumb& width=&902& data-original=&/b3fbfe2bdf1dac4d7c6547c_r.png&&&p&大家看到了,这里面source,也就是来源,是ZhiHu,因为我选择在知乎上进行推广,这里面medium,也就是媒介,是HuiDa,就是我设置的,意思就是通过回答知乎网友的问题进行推广,这里面广告系列名称campaign,你需要写一个你能看懂的规则,我在这儿写的是zhihu0529hq,后面那个0529就是日期,hq是本人的名字首字母,便于以后方便做自定义报表进行数据分析。&/p&&br&&p&至于在哪里制作你的监测链接,附上网址构建器地址(注意,因为是Google的数据分析工具,所以需要翻墙后才能使用,如果需要翻墙工具的话,可以在下面评论留言):&a href=&///?target=https%3A///analytics/answer/Fhl%3Dzh-Hans%26ref_topic%3D1727148& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/anal&/span&&span class=&invisible&&ytics/answer/1033867?hl=zh-Hans&ref_topic=1727148&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&再给大家找个例子,借一下&a href=&/people/suwenge& class=&internal&&苏文阁&/a&同学的数据给大家看一下:&img src=&/0a8dc34c2fd681eb1d3c926ae50892cf_b.png& data-rawwidth=&794& data-rawheight=&452& class=&origin_image zh-lightbox-thumb& width=&794& data-original=&/0a8dc34c2fd681eb1d3c926ae50892cf_r.png&&&p&【3】查看监测报告
&/p&&br&&p&阅读数据报告不多说,提3点吧。&/p&&br&&p&第一,在GA里面的菜单栏,选择查看【来源/媒介】,再加上你的时间维度,可以看到一段时间内的全部流量来源。&/p&&br&&p&第二,你设置过的监测链接的这些数据,比如,你在微博发布了一条内容,附上了加了监测的链接,你要查看这次微博的引流效果,这时候你需要在【广告系列】查看你的数据。&/p&&br&&p&第三,GA提供了很多数据筛选器,比如你要看一天内各个时段的用户行为,就是用对用的数据筛选器。&/p&&br&&p&从广告系列里面看设置了监测的数据,如图:&/p&&img src=&/9dadcb41f43ddbbfee66f58_b.png& data-rawwidth=&1267& data-rawheight=&587& class=&origin_image zh-lightbox-thumb& width=&1267& data-original=&/9dadcb41f43ddbbfee66f58_r.png&&&br&&p&ok,到这里你已经学会制作监测链接,并且能看到数据了。&/p&&br&&p&你可以意识到,这意味着你可以开始算真实流量的获取成本了。&br&&/p&&br&&p&之前总是关注微博转发评论数,微信阅读数的同学,可以醒醒了。现在你可以看到真实的渠道引流效果,然后做一个小学除法,你就知道你花钱了多少钱,带来了多少个真实流量,每个流量你花了多少钱。&br&&/p&&br&&p&零基础水平的你,已经有一点料去跟别人吹吹牛逼了对吧。&br&&/p&&br&&p&&b&第二阶段:略懂皮毛&/b&&/p&&br&&p&ok,你现在已经学会怎么设置监测链接,但是你还不知道流量来了之后,转化率到底怎么样,第二阶段你要学会这些,包括对提高转化率有帮助的一些功能。&/p&&br&&p&【4】监测目标达成结果(goal)
&/p&&br&&p&举例,当用户付款成功后,会来到一个/success的页面,你可以把这个页面作为目标(goal)。这样你就能知道,【有多少人】,【通过什么广告】,【最终完成了付款】,你在百度通过竞价排名投放了一个广告,花了200块钱,带来100个流量,带来一个转化,也就是1%的转化率,你的产品单价是2000,也就是说,你花了200块,挣到2000块(没刨除成本,仅仅举例),所以你才知道,对应的这个SEM百度创意,是划算的,所以你继续增加投放。这就是goal给你带来的数据意义。&/p&&br&&p&如图:&/p&&img src=&/5e9efeb01cb9efc995cb_b.png& data-rawwidth=&1313& data-rawheight=&701& class=&origin_image zh-lightbox-thumb& width=&1313& data-original=&/5e9efeb01cb9efc995cb_r.png&&&br&&p&【5】知道用户用什么浏览器或设备浏览你的网站,用户是什么地区&/p&&br&&p&你可以通过GA知道网站访客使用什么设备,以此来调整宣传内容,举例,你在微博投放了一个广告,你放上了一条链接,这条链接来到了一个制作精美的网页。但是一直用户停留时间很短。你巨费解,这时候你用上了GA,你吃惊的发现,70%的用户是手机访问你的网站,而是你的网站,在移动端根本没有适配,你现在整个人都不好了对不对。&/p&&br&&p&还要注意的是,不管你投放百度竞价,还是其他媒体,在投放过程中,都涉及到一个【投放维度】的选择,地域是一个重要的维度,一个适合一线城市的产品,投放到农村,这事儿就不好玩了,所以你需要通过数据,清楚地知道你的访客都是什么地方的人。&/p&&br&&p&浏览器:&/p&&img src=&/d53e0d366b16ec4e83af47_b.png& data-rawwidth=&1308& data-rawheight=&676& class=&origin_image zh-lightbox-thumb& width=&1308& data-original=&/d53e0d366b16ec4e83af47_r.png&&&p&城市:&/p&&img src=&/a1e5c8bfefa47d0f4c48b8f2b4945ac4_b.png& data-rawwidth=&1325& data-rawheight=&662& class=&origin_image zh-lightbox-thumb& width=&1325& data-original=&/a1e5c8bfefa47d0f4c48b8f2b4945ac4_r.png&&&br&&p&【6】实时了解用户行为
&br&&/p&&br&&p&这个很容易理解,就是实时看到你的网站有多少访客,有多少是新访客,多少是老访客,大家都在分别看什么页面,这个功能对于一个大的营销活动来说,实时观察用户行为,很有必要。&/p&&br&&p&如图:&/p&&img src=&/daae3be3c0f_b.png& data-rawwidth=&1318& data-rawheight=&606& class=&origin_image zh-lightbox-thumb& width=&1318& data-original=&/daae3be3c0f_r.png&&&br&&p&【7】了解用户喜欢在你的网站上做什么
&/p&&br&&p&了解用户行为,既属于营销问题,也属于产品问题。针对营销人员,当制作了一个营销的着陆页面时,需要根据数据调优页面,针对产品人员,就需要对整个网站、或者APP产品进行基于用户行为的产品调整。&/p&&br&&p&如图:&/p&&img src=&/9ee03bcd871a0ecf6f84e9b6a44a6d24_b.png& data-rawwidth=&1525& data-rawheight=&694& class=&origin_image zh-lightbox-thumb& width=&1525& data-original=&/9ee03bcd871a0ecf6f84e9b6a44a6d24_r.png&&&br&&p&【8】知道用户达到你的网站目标之前,都做了什么(行为流)
&/p&&br&&p&哇,这个相当重要。不管你是做一个电商网站,还是做一个社区网站,都有自己的目标。以电商网站为例,显然目标是付费,那么这时候,清楚的了解付费用户在付费之前都做了什么,非常重要,因为这意味着你可以在网站产品、营销内容上做调整,把用户最希望看到的页面呈现给他。&/p&&br&&p&如图:&/p&&img src=&/eec2a85bdbaeb0f0e8b64b1_b.png& data-rawwidth=&1527& data-rawheight=&689& class=&origin_image zh-lightbox-thumb& width=&1527& data-original=&/eec2a85bdbaeb0f0e8b64b1_r.png&&&br&&p&&b&第三阶段:中级水平&/b&&/p&&br&&p&这时候GA给到你的模板工具已经满足不了你的需求了,随着数据量越来越大,你开始需要自定义数据报表,简单理解,就是你在微博天天都发内容,回收了很多数据,但是你总不能每天数据自己去做加法来看整个渠道的数据情况吧,所以我们制作自定义报表,通过正则表达式,来把自己需要的数据筛选出来。&/p&&br&&p&【9】制作自定义报表
&/p&&br&&p&举例,你分别在2天,发布了3条微博链接,分别设置的监测规则为:1008weibo1、1008weibo2和 1009weibo1。我们发现这些监测规则的格式是统一的,所以我们可以把统一的规则,通过正则表达式筛选出来,在计算机的眼里,这个规则是【4位数字】+【weibo全拼】+【1位数字】&/p&&br&&p&如图:&/p&&img src=&/3f8f051c062f6a7f249d4_b.png& data-rawwidth=&1346& data-rawheight=&637& class=&origin_image zh-lightbox-thumb& width=&1346& data-original=&/3f8f051c062f6a7f249d4_r.png&&&br&&p&OK,希望通过我以上的讲解,你能够边学边用,掌握以上九点之后,你就已经算是一个中级的数据分析人员了。相信会对你的网站运营工作带去很多意想不到的帮助。&/p&&br&&p&另外,你想详细学习数据分析,并且希望还有经验丰富的老师在实战中指导你,让你零基础都能掌握的话,良心推荐踏浪100【&a href=&///?target=http%3A///%3Futm_source%3DZhiHu%26utm_medium%3DHuiDa%26utm_campaign%3Dshouye0529hq& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&专注学习互联网营销知识&i class=&icon-external&&&/i&&/a&】,它让我系统性的认识到了互联网营销,而数据分析又是互联网营销中的重要一环,这个平台帮助了我,我想它也能帮助到你。&/p&
作为互联网营销从业者的我,在开始什么也不太懂,当然也是一个超级菜鸟了。直到我有一天在网上看到了它:,我才知道原来数据分析对于网站的运营,乃至是对于整个营销流程来说,都是非常关键的一环。没有数据分…
先看看为什么要从 Mobile First(移动第一)转向 AI First (人工智能第一)&br&&br&&b&首先,是时候调整 Mobile First的战略了。&/b&&br&&br&根据KPCB女王的报告,移动互联网用户增速已经首次放缓&br&&blockquote&- 全球智能手机用户数比上年增长21%,去年增长31%,增速放缓;在经过5年高增长后,2015年全球智能手机出货量增长10%,去年增长28%&/blockquote&移动互联网从硬件到工具再到内容,整个移动互联网产业链都非常成熟了,大的创新的机会已经很少了。&br&&br&而个人跟踪硅谷公司的新产品的体会也是,移动互联网让人眼前一亮的产品基本很少了,而移动设备的硬件发展至今也是大同小异了,没有大的突破。&br&&br&&b&接下来看看AI现在和未来的市场有多大&/b&&br&&br&&b&先看看AI 当前有哪些应用场景&/b&&br&&br&人工智能技术服务人类已经很久了,好的人工智能技术使用的时候往往让我们察觉不到它的存在。&br&比如搜索就是Information Retrieval的应用,推荐系统也是人工智能的应用。&br&&br&必须要承认,现在AI的发展还是非常早期阶段,很多技术其实并不成熟,但是AI某些细分领域的商业化已经可以做起来了。&br&&br&目前在人工智能领域,相对成熟的领域(可以应用于工业界),主要有知识图谱、自然语言处理、翻译、语音识别、图像识别等。&br&&br&&img src=&/715ae19f7e4e43e186d8c2d2b54a87da_b.jpg& data-rawwidth=&640& data-rawheight=&325& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/715ae19f7e4e43e186d8c2d2b54a87da_r.jpg&&&br&其中任何单一个方面的应用都可以有非常大的想象空间:&br&&br&比如语音识别,这是一块技术很成熟,但是应用的前景依旧是一片蓝海。&br&语音作为认为一种非常自然的交互方式,在可穿戴设备、医疗领域、智能家居、教育领域等方面有大量的应用场景,比如出门问问的ticwear。&br&&br&而百度语音的使用的飞速增长也可以佐证这一点。&br&&img src=&/fbaabef78e55_b.jpg& data-rawwidth=&630& data-rawheight=&472& class=&origin_image zh-lightbox-thumb& width=&630& data-original=&/fbaabef78e55_r.jpg&&&br&再说说知识图谱,把知识图谱应用细分领域,比如地产、电子商务、金融,实际上国内外都已经有公司在做这个事情了,每一块都是很大的市场。比如美国的AlphaSense,国内的文因互联。&br&&br&图像识别也是一个潜在应用广泛的领域,目前的广泛应用的有光学字符识别(Optical Character Recognition)、人脸识别等,这也是一个万亿级别的市场。&br&&br&把多种人工智能技术结合在一起的想象空间更大,典型的例子Google Assistant。&br&&br&&b&那么未来AI First 有哪些应用场景?&br&&/b&&br&未来随着AI技术的成熟、数据的积累以及智能设备的普及,AI在很多领域会有大的爆发。&br&&br&简单的例子,如果自然语音处理技术继续成熟,conversation UI(会话式UI)极有可能取代APP成为下一代服务的入口,这是一个可能可以颠覆搜索引擎和APP的应用场景。&br&&br&&img src=&/64a5f21298fca7599bf1_b.png& data-rawwidth=&362& data-rawheight=&194& class=&content_image& width=&362&&&br&&br&但是人工智能在无人驾驶、个人智能助理、家庭机器人、智能专家系统未来都将会成熟起来,前景广阔。&br&&br&人类总是&strong&讨厌重复而低效的任务,&/strong&AI未来能够有大的发展的原因是AI至少能够在很多领域上超越人类从而&b&帮助人类提升生活质量&/b&,比如计算机视觉结合传感器能够比人看的更远更深更准确,机器翻译(未来)能够超越大部分人的翻译能力,无人驾驶的安全性也超越人类(参考&a href=&/question//answer/& class=&internal&&自动驾驶问题很多,未来前景如何? &/a&),机器能够在理性层面上超越人类是毫无问题的。&br&&br&&b&再来看看谷歌AI First 有哪些优势?&/b&&br&&br&实际上谷歌在上述领域都非常有优势,一方面积累了大量的用户数据,另一方面在深度学习、知识图谱、自然语言处理、翻译、语音识别、图像识别都积累了很长时间,有强大的人才储备和技术储备。&br&&br&&b&AI First是Mobile First的延续&/b&&br&&br&人工智能并不是魔术,人工智能的应用本质是基于大量数据建立模型然后应用。&br&移动设备的大量普及很大程度上推动了人工智能的应用。最简单的例子就是语音,有了手机,语音的使用更加方便和广泛(参见百度语音的使用数据)。&br&&br&AI First是Mobile First的延续,因为的背后的基本逻辑是计算的普适化,大量的智能设备(包括移动智能设备)和传感器出现在日常生活中。&b&AI First的背后是未来几十年会是包括移动设备在内的智能设备的大量普及。&/b&&br&&br&&b&对比谷歌和苹果在“AI First”和&Mobile First&上的优劣&/b&&br&&br&这次秋季发布会上,“站在硬件和软件的交叉路口”反复出现,软硬结合将是未来的趋势,硬件用于获得数据是服务的载体,而软件则是人工智能层面/数据层面。&br&&br&谷歌在硬件上一直有短板,但是在云服务/数据上很有优势,所以他们在补齐短板,发布了这么多智能设备。而苹果则一直在硬件产品上有优势,但是在云上比较有劣势。科技评论家Ben Thompson曾经担忧随着硬件的微缩化(比如随着语音接口的发展,设备硬件的交互会变成语音接口),苹果在硬件的优势会消失,参考&a href=&///?target=https%3A///2016/beyond-the-iphone/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Beyond the iPhone&i class=&icon-external&&&/i&&/a&。&br&&br&个人的感觉是人工智能的本质是“服务”,硬件只是服务的载体,最好的人工智能服务会变得成为“隐形”的服务、云端的服务,而硬件也会微缩化,从这点上,Google会比苹果有优势。&br&&br&另一个角度可能就是开发和封闭性角度来分析,“服务”时代谷歌的开放性策略看起来似乎更有优势,可以产生竞争和多元化的生态,更容易有完善的各种服务,毕竟没有哪家公司是全能的,如果要说封闭式系统有哪些优势,可能隐私的保护依旧还会是苹果体系的优势,但如同前面所说,在语音接口等逐步取代硬件UI的情况下,苹果的用户体验的体验优势会被弱化甚至可以忽略不计。&br&&br&当然苹果作为软硬结合的王者,他们也会成为重要山头。
先看看为什么要从 Mobile First(移动第一)转向 AI First (人工智能第一) 首先,是时候调整 Mobile First的战略了。 根据KPCB女王的报告,移动互联网用户增速已经首次放缓 - 全球智能手机用户数比上年增长21%,去年增长31%,增速放缓;在经过5年高增长后…
目前有很多工具,在线就可以完成!这里有一些感觉还不错的可视化工具,可以看一下:&br&&br&1、&strong&Tableau&/strong&&br&&img src=&/55e727d4e128edc502185_b.jpg& data-rawwidth=&1270& data-rawheight=&526& class=&origin_image zh-lightbox-thumb& width=&1270& data-original=&/55e727d4e128edc502185_r.jpg&&&br&&br&Tableau 是一款企业级的大数据可视化工具。Tableau 可以让你轻松创建图形,表格和地图。 它不仅提供了PC桌面版,还提供了服务器解决方案,可以让您在线生成可视化报告。服务器解决方案可以提供了云托管服务。Tableau的客户包括巴克莱银行,Pandora和Citrix等企业。&br&&br&2、&strong&ChartBlocks&/strong&&br&&img src=&/409ecd33cfe2f7eaae5f6edac7ff2cff_b.jpg& data-rawwidth=&801& data-rawheight=&399& class=&origin_image zh-lightbox-thumb& width=&801& data-original=&/409ecd33cfe2f7eaae5f6edac7ff2cff_r.jpg&&&br&&br&ChartBlocks是一个易于使用在线工具,它无需编码,便能从电子表格,数据库中构建可视化图表。整个过程可以在图表向导的指导下完成。您的图表将在HTML5的框架下使用强大的JavaScript库D3.js创建图表。你的图表是响应式的,并且可以和任何的屏幕尺寸及设备兼容。 您还可以将图表嵌入任何网页中,分享在Twitter和Facebook上。&br&&br&3、&strong&Datawrapper&/strong&&br&&img src=&/cb9bcc88d90a55b60048e_b.jpg& data-rawwidth=&1100& data-rawheight=&369& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&/cb9bcc88d90a55b60048e_r.jpg&&&br&Datawrapper是一款专注于新闻和出版的可视化工具。华盛顿邮报,卫报,华尔街日报和Twitter等媒体都使用了这一工具。Datawrapper非常容易使用,不需要任何编程基础。你只需要上传你的数据,便能轻松地创建和发布图表,甚至是地图。Datawrapper提供了众多的自定义布局及地图模板。&br&&br&4、&strong&Plotly&/strong&&br&&img src=&/fffd5dc60a7c_b.jpg& data-rawwidth=&800& data-rawheight=&407& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/fffd5dc60a7c_r.jpg&&&br&&br&Plotly帮助你在短短几分钟内,从简单的电子表格中开始创建漂亮的图表。Plotly已经为谷歌、美国空军和纽约大学等机构所使用。 Plotly是一个非常人性化的网络工具,让你在几分钟内启动。如果你的团队希望为JavaScript和Python等编程语言提供一个API接口的话,Plotly是一款非常人性化的工具。&br&&br&5、&strong& RAW&/strong&&br&&img src=&/17bb67ef6d5b58fbbcf13e514dd586b3_b.jpg& data-rawwidth=&1100& data-rawheight=&654& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&/17bb67ef6d5b58fbbcf13e514dd586b3_r.jpg&&&br&RAW弥补了很多工具在电子表格和矢量图形(SVG)之间的缺失环节。你的大数据可以来自MicrosoftExcel中,谷歌文档或是一个简单的逗号分隔的列表。它最厉害的功能是可以很容易地导出可视化结果,因为它和Adobe Illustrator,Sketch 和Inkscape是相容的。&br&&br&&br&6、&strong&&a href=&///?target=http%3A//Visual.ly& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&Visual.ly&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/strong&&br&&img src=&/ba44f14875aeabae303f8d_b.jpg& data-rawwidth=&800& data-rawheight=&591& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/ba44f14875aeabae303f8d_r.jpg&&&br&&a href=&///?target=http%3A//Visual.ly& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&Visual.ly&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&是一个可视化的内容服务。它提供专门的大数据可视化的服务,用户包括了VISA,耐克,Twitter,福特和国家地理等。如果你想完全外包可视化文件给第三方。你可以使用非常简化的在线流程:你只需描述你的项目,服务团队将在项目的整个持续时间内和你在一起。 &a href=&///?target=http%3A//Visual.ly& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&Visual.ly&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&给您发送所有项目关键点的邮件通知,也将让你不断给出反馈。&br&&br&&strong&7. D3.js&/strong&&br&&img src=&/f1fb79b69aaf64b9577a1_b.jpg& data-rawwidth=&942& data-rawheight=&592& class=&origin_image zh-lightbox-thumb& width=&942& data-original=&/f1fb79b69aaf64b9577a1_r.jpg&&&br&毋容置疑D3.js是最好的数据可视化工具库。D3.js运行在JavaScript上,并使用HTML,CSS和SVG。 D3.js是开源工具,使用数据驱动的方式创建漂亮的网页。 D3.js可实现实时交互。这个库非常强大和前沿,所以它带有没有预置图表也不支持IE9。&br&&br&&br&8、&strong&NVD3&/strong&&br&&img src=&/09cce0af1c4b3e377ffbee2_b.jpg& data-rawwidth=&799& data-rawheight=&408& class=&origin_image zh-lightbox-thumb& width=&799& data-original=&/09cce0af1c4b3e377ffbee2_r.jpg&&&br&NVD3运行在d3.js之上, 它可建立可重用的图表组件。该项目的目标是保持所有的图表整洁和可定制性。 NVD3是d3.js之上的简单的接口,保持了d3.js的所有强大功能。 NVD3由Novus Partners前端工程师开发和使其保持了图表技术洞察力。&br&&br&9、&strong&Google Charts&/strong&&br&&img src=&/71a78a0d8417ddf03208_b.jpg& data-rawwidth=&1100& data-rawheight=&496& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&/71a78a0d8417ddf03208_r.jpg&&&br&Google Charts 以HTML5和SVG为基础,充分考虑了跨浏览器的兼容性,并通过VML支持旧版本的IE浏览器。所有您将创建的图表是交互式的,有的还可缩放。Google Charts是非常人性化和他们的网站拥有一个非常好的,全面的模板库,你可以从中找到所需模板。&br&&br&&br&10、&strong&Highcharts&/strong&&br&&img src=&/905ba90350d8aab859c247b366f72fcd_b.jpg& data-rawwidth=&1100& data-rawheight=&693& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&/905ba90350d8aab859c247b366f72fcd_r.jpg&&&br&Highcharts是一个JavaScript API与jQuery的集成,全球最大的100家公司中有61家正在使用它。图表使用SVG格式,并使用VML支持旧版浏览器。它提供了两个专门的图表类型:Highstock和Highmaps,并且还配备了一系列的插件。你可以免费使用它,而如果你想建立付费的应用,只须支付少量牌照费用。此外,你还可以使用Highcharts云服务。&br&&br&11、&strong&Chart.js&/strong&&br&&img src=&/390aad06bb62a2a6bc774_b.jpg& data-rawwidth=&883& data-rawheight=&488& class=&origin_image zh-lightbox-thumb& width=&883& data-original=&/390aad06bb62a2a6bc774_r.jpg&&&br&对于一个小项目的图表,chart.js是一个很好的选择。开源,只有11KB大小,这使得它快速且易于使用,它支持多种图表类型: 饼图,线性图和雷达图等。&br&&br&12、&strong&Leaflet&/strong&&br&&img src=&/b6bd427cfdf1f498e8f43_b.png& data-rawwidth=&800& data-rawheight=&547& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/b6bd427cfdf1f498e8f43_r.png&&&br&你是否专注于专业的大数据解决方案?无需饼图和条形图?Leafleft 基于Open Street Map数据,使用HTML5 / CSS3绘制互动式可视化图。您可以使用他们的扩展插件库添加热点图(heatmaps)和动画标记。 Leaflet 是开源和只有33 KB大小。
目前有很多工具,在线就可以完成!这里有一些感觉还不错的可视化工具,可以看一下: 1、Tableau Tableau 是一款企业级的大数据可视化工具。Tableau 可以让你轻松创建图形,表格和地图。 它不仅提供了PC桌面版,还提供了服务器解决方案,可以让您在线生成可…
不知道是不是伸手党……题主问的是“教育”相关,那我就不提教育方面。&br&&br&风投和券商不同,只需要关注&b&产业现状和趋势、商业模式、投资机会&/b&,重点并不在于业务或公司做缜密的剖析或数据记录。引用各种产业报告数据,更是没有价值。&br&&br&比如说我们去年年中开始了解传媒影视领域,从当时公开的统计数据和海量报告中大致可以窥探出&b&产业情况&/b&:&br&&br&&ul&&li&电视方面&br&&/li&&/ul&&p&1、传统广电正在转变化全媒体机构&/p&&p&2、播出机构走向网络平台化、社交化运营&/p&&br&&p&从国际上看,在传媒行业,围绕核心主业,以3~5年为一个周期,开展产业链纵向和横向的并购活动,是国际一流传媒集团迅速壮大的通行做法。&/p&&br&&p&上市公司甚多,包括:欢瑞世纪、海润影视、派格文化、克顿影视、光线传媒、唐人影视、高格文化等。&/p&&p&电视剧公司的机会在于电视剧无论在日韩美还是中国都是占据电视荧屏最主要的内容门类,市场很大。优秀的电视剧会积累粘性很强的粉丝群体,电视剧和制作公司本身成为品牌,成为一个门类内容的代表,最典型的例子就是《爱情公寓》。之后走的发展道路几乎都是造IP的路径,依赖粉丝群体来进行授权衍生、开发游戏等互联网的商业模式。&/p&&br&&p&目前节目制作领域普遍采用的模式是对赌收视率,即电视台和节目方签订协议。电视台与制片方在积木购买保底价的基础上,协定一定点的收视率,如果播出效果达到或突破协定收视点数,则相应给予高于保底价的价格回报;如果播出效果未能达到协定收视点数,则相应降低购买价格。对赌的结果也会影响节目方的广告分成收入。节目制作领域,外包制作市场有300亿人民币市场规模。&br&&/p&&p&优秀的电视节目制作公司需要具备3个核心能力:&/p&&ul&&li&节目制作能力(其中包括资金、创意、制作等)&br&&/li&&li&广告招商能力(优秀的节目制作公司由于采用对赌收视率的模式,广告商都是自己找来的,意味着自己拥有广告主资源)&br&&/li&&li&电视台进入能力(即电视台的人脉关系,采购关系,能够让电视台买你的节目)&br&&/li&&/ul&&p&中小型的节目制作公司门槛并不高,但是要做最优秀的公司这3个能力缺一不可。节目制作公司的毛利比较低,而且制作领域比较透明,基本在20%左右,净利润在10%左右。&/p&&p&全国具有节目制作资质的单位在7248家,电视台有4000家。节目制作领域的市场份额是比较分散的,还没有大型的节目制作方出现。&/p&&br&&p&无论在电视剧领域还是节目制作领域,中国传统文化都是很好的内容门类。传统文化相关门类的内容可以很好地形成群众基础、更容易传播和扩散、在精神文化方面更有中国特色、政策上也会更被鼓励。目前较流行的一些节目都是以传统文化为根基的,内容化主要依赖优秀的策划能力,节目形式和内涵如何同内容相结合是这个领域最主要需要解决的问题。&/p&&br&&p&……&/p&&br&&br&依次可以对其他方面进行分析,比如:&br&&ul&&li&电影方面&br&&/li&&/ul&院线是好渠道,但是本身不是好生意。研究院线的收入和成本投入就可以发现。……&br&&ul&&li&网络视频方面&br&&/li&&/ul&在网络视频行业,发现大量的节目开始逆向进入电视频道。……&br&&ul&&li&动画方面&br&&/li&&/ul&老品牌的IP品牌粉丝是儿童,票房驱动力较弱,票房在4000万-7000万之间,甚至可以低到3000万,尽管制作精良程度已经非常优秀。行业关键还在于如何调动粉丝,如何驱动忠诚粉丝以外的那些边缘粉丝上。《秦时明月》的票房约为6000万元,以平均一张电影票40元计算,大概动员了150万人次观影,这说明其实粉丝并没有被充分调动起来。……&br&&br&&ul&&li&……&br&&/li&&/ul&&br&&br&然后,就是&b&商业模式&/b&的整理。&br&&br&以影视为例,先建立通用结构:&br&&img src=&/7d65fa71eaf945beb78f7c_b.jpg& data-rawwidth=&1004& data-rawheight=&490& class=&origin_image zh-lightbox-thumb& width=&1004& data-original=&/7d65fa71eaf945beb78f7c_r.jpg&&&img src=&/db4a0b674fa63a378ddeb9c_b.jpg& data-rawwidth=&1030& data-rawheight=&458& class=&origin_image zh-lightbox-thumb& width=&1030& data-original=&/db4a0b674fa63a378ddeb9c_r.jpg&&……&br&&br&再找案例做细节分析,如华谊:&br&&img src=&/f2d7fb4baff83b4d7cfc1d7b8e828aa0_b.jpg& data-rawwidth=&996& data-rawheight=&614& class=&origin_image zh-lightbox-thumb& width=&996& data-original=&/f2d7fb4baff83b4d7cfc1d7b8e828aa0_r.jpg&&&img src=&/7f6fbde194b3a8f0a3f4fe_b.jpg& data-rawwidth=&996& data-rawheight=&626& class=&origin_image zh-lightbox-thumb& width=&996& data-original=&/7f6fbde194b3a8f0a3f4fe_r.jpg&&&img src=&/eca7b4e194bc1e6a207e_b.jpg& data-rawwidth=&484& data-rawheight=&396& class=&origin_image zh-lightbox-thumb& width=&484& data-original=&/eca7b4e194bc1e6a207e_r.jpg&&……&br&&br&分析商业模式不只是为了找到成本结构、利润结构、分工结构,更主要是为了将来可以给目标公司迅速归类和定位。&br&&br&举个动画片的例子。投资产业片和非产业片公司有不同侧重。产业片与非产业片是动画公司最最重要的不同:产业片以下游企业衍生品的市场化为核心,将动画片内容创作运营一体化,动画片创作时期就与下游企业紧密沟通,以下游企业的衍生品需求为主要元素,动画片是下游衍生品的广告。非产业片先以创意为核心,创造出深入人心的动漫形象;在此基础上再做衍生品。投资前者看变现,投资后者看推广。&br&&br&分析商业模式另一个作用是掌握产业的核心点,还拿动画片来说,主要成本是人工,而控制人工成本的关键是“在规定的时间内完成非标准化的工作”,这需要做到流水线式的制作过程:公司将制作过程拆解,标准化到岗位,引入自行开发的管理系统,以考核每个岗位的业绩结果,这样生产周期较短,交片及时;自行开发插件,使得动作、表情等简单工时能够通过计算机自动生成;使用好的平台进行渲染制作,提高GPU渲染功能的性能,使效率提高,等等。&br&&br&最后一步是寻找投资机会。这一步没有技巧,就是尽可能看足够多的项目。2C的同事,去年上半年不到4个月时间里,一共用过产品500多个,其中深度了解(见面或者电话)项目将近100个,最后投资了5个。领域涉及家庭社交、运动体育社区、美丽社区、美食社区、宠物社区、视频音频社区、医疗健康社区、同性恋社区、陌生人社交……&br&&br&最后的分析报告很长,而且也不适合分享,再说也过去一年没有时效性了。&br&&br&&br&&b&以上只是简单描述,实际上有很多梳理和思考的环节,这些往往不是能教会的,就更不用指望看一个回答就能提升水平。&/b&
不知道是不是伸手党……题主问的是“教育”相关,那我就不提教育方面。 风投和券商不同,只需要关注产业现状和趋势、商业模式、投资机会,重点并不在于业务或公司做缜密的剖析或数据记录。引用各种产业报告数据,更是没有价值。 比如说我们去年年中开始了解…
我面试过5-6家互联网公司的数据挖掘和分析、机器学习相关职位的工程师。被问到下面一些问题。&br&&br&SVM的原理,SVM里面的核&br&K-means,如何用hadoop实现k-means&br&naive bayes和logistic regression的区别&br&LDA的原理和推导&br&做广告点击率预测,用哪些数据什么算法&br&推荐系统的算法中最近邻和矩阵分解各自适用场景&br&用户流失率预测怎么做(游戏公司的数据挖掘都喜欢问这个)&br&一个游戏的设计过程中该收集什么数据&br&如何从登陆日志中挖掘尽可能多的信息&br&&br&这些问题我回答的情况,分几种。一种是在面试官的提示下,算是勉强完成了答案。一种是在面试官的提示下,答了一点但是答得不够好。一种是面试官不提示也没有反馈,我回答了但是我不知道回答得怎样。&br&&br&我非常后悔的一点是我现在才想起来总结。有一个题是游戏玩家流失率预测,我被问过两次。但是每次我都说是个分类问题。最近我突然想起来去网上查了下,有两个点,数据不平衡问题和时间序列分析。我网上查到是一个大学教授和人人游戏合作的课题。我然后查了下这个老师的publication。没发现相关的论文。可能公司不让发表吧。&br&&br&这些问题的特点是很基础很简单,因为实际中很少用复杂的算法,复杂的算法不好控制,而且理论要求高。另一个特点是注重考查实际工程能力,我经常被问到自己实现了哪些算法。还有的问题很契合实际。&br&&br&我觉得如果现在再给我准备的机会。我会准备下面几点。&br&首先是计算机基础知识和算法,这些都是会正常考察的。有些公司考的少,有些公司正常考察。&br&针对机器学习这部分,需要理论扎实,还需要自己动手实现代码。另外hadoop,mpi,最近比较火的spark,应该都是加分项。另一个是接触下实际的数据分析系统。我在学校里面看的论文,都是讲算法的多,讲应用系统的少。这个可以靠之前的实习,也可以看些比较实用的论文。&br&&br&&br&PS 我是题主,自问自答下。&br&PS2 我面试的都是国内互联网公司和游戏公司。
我面试过5-6家互联网公司的数据挖掘和分析、机器学习相关职位的工程师。被问到下面一些问题。 SVM的原理,SVM里面的核 K-means,如何用hadoop实现k-means naive bayes和logistic regression的区别 LDA的原理和推导 做广告点击率预测,用哪些数据什么算法 推…
个人感觉国内可能还比较少,可以看下Julie Steele的&a href=&///?target=http%3A///subject/6439420/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数据可视化之美 (豆瓣)&i class=&icon-external&&&/i&&/a&,里面有一些经典案例的介绍,可作入门;&br&另外向怡宁翻译的&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&鲜活的数据 (豆瓣)&i class=&icon-external&&&/i&&/a&也值得一看,关键是介绍了数据可视化处理的具体过程,而且向怡宁翻译的书一向通俗易懂,他翻译的有关交互设计的&a href=&///?target=http%3A///subject/3118374/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&就这么简单 (豆瓣)&i class=&icon-external&&&/i&&/a&其实也是一本和信息设计有关系的书籍,行文风趣,作为入门比较合适。&br&另外涂子沛的&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&大数据 (豆瓣)&i class=&icon-external&&&/i&&/a&也值得一看,虽然这里介绍的主要是时代发展和大背景,但也有一章专门涉及数据可视化处理。&br&&br&2013年6月时,浙大的陈为老师出了本数据可视化的教材,算是在国内第一本数据可视化教材,并系统地把数据可视化相关都做了梳理,看到有人也提到了这全彩略贵的书,&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数据可视化 (豆瓣)&i class=&icon-external&&&/i&&/a&;如果嫌贵,可以买这本教材:&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数据可视化的基本原理与方法 (豆瓣)&i class=&icon-external&&&/i&&/a&,都是陈为的书,内容基本一样,入门是够了。&br&&br&国外的能推荐的多些,&br&&a href=&///?target=http%3A//en.wikipedia.org/wiki/Edward_Tufte& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Edward Tufte&i class=&icon-external&&&/i&&/a&不用说了,有人说他的书是“信息设计的圣经”,他的&a href=&///?target=http%3A///subject/1316642/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Visual Display of Quantitative Information (豆瓣)&i class=&icon-external&&&/i&&/a&应该是入门必看了,公认的开山之作。不过目前还没有中译本,看完基本上可以了解数据可视化的前世今生了;&br&他还有一个华人学生,在美国报社工作,专门负责数据图表的设计制作,也出了一本相关的书,很棒,Dona M.Wong,她写的书现在已经有中译本了:&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&最简单的图形与最复杂的信息 (豆瓣)&i class=&icon-external&&&/i&&/a&
主要侧重于对数据图表的修饰、完善,讲解了一些处理数据图表的基本原则,实操性很强。&br&Edward R.Tufte的其他书:&br&&a href=&///?target=http%3A///subject/1438332/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Visual Explanations (豆瓣)&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A///subject/1916758/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Beautiful Evidence (豆瓣)&i class=&icon-external&&&/i&&/a& 都可以在网上找到pdf全本。&br&另外除了书,还推荐一个国外老头:&a href=&///?target=http%3A//en.wikipedia.org/wiki/Hans_Rosling& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hans Rosling&i class=&icon-external&&&/i&&/a&,他是瑞典卡罗琳学院全球公共卫生教授,有关他利用数据可视化显示200多个国家200年来的人均寿命和经济发展的ted视频非常火,真是数据可视化的魅力,他的其他视频也很棒(&a href=&///?target=http%3A///search%3Fcat%3Dss_all%26q%3DHans%2BRosling& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TED | Search&i class=&icon-external&&&/i&&/a&),本人非常幽默,由他主持的BBC纪录片[BBC:统计学的快乐]也值得一看,这些都是初步了解数据可视化的好材料。&br&&br&总之,个人感觉数据可视化除了具有优秀的美术功底外,统计学知识也是重要部分,毕竟数据的展现和设计都是建立在对数据的获取、清洗、处理、挖掘的基础上的。
个人感觉国内可能还比较少,可以看下Julie Steele的,里面有一些经典案例的介绍,可作入门; 另外向怡宁翻译的也值得一看,关键是介绍了数据可视化处理的具体过程,而且向怡宁翻译的书一向通俗易懂,他翻译的有关交…
谢邀。终于得空来更新一下&br&&br&从商业分析说起吧。关注过不少知乎上类似的问题和回答,发现个较严重的问题:大多数人对商业分析这个行业的认知并不准确。具体说来&b&商业分析有两种&/b&:&br&&br&1. Business analysis. 应属于&b&传统商科&/b&,主要是任务是对公司整个运营的流程、业务的开展等方面的分析。比如发现新的商业需求、提出/改善某些商业问题的解决方案。它可能包括公司组织上的变更,业务流程的改善,策略性的规划,政策的制定和提高。这个领域需要一定的数据分析,一方面因为公司发展前期一般主要靠业务的扩展,会涉及一些销售业绩等类似的数据分析。另一方面,大数据时代嘛,很多公司都觉得好像应该顺应潮流掺和一把。但总的来说还是business analysis为主。即定性为主导,数据分析(一般较简单)为辅助。这也是大多数答主所提到的。要在这个领域成长为专业人才,一般会选择MBA,MBA课程一般也会包含一定的相关课程,但很简单。&br&&br&2. Business analytics. 这才是真正的&b&新兴学科&/b&。翻译上都叫商业分析,但内容却差很多,所以特意用英文区分开来。这个行业的&b&核心就是数据分析,&/b&而且是高深的技术、模型和算法。通过对数据的深度分析、挖掘来研究公司以往的业绩,对行业市场潜在的商业信息的搜索等。目的是获取那些通过定性分析和简单的定量分析根本无法获得的insights。这个领域逐渐得到了学术界、业界和政府的高度重视:学术界,从纽约大学13年开始开设business analytics的硕士专业以来,全球各大高校纷纷增设相关专业,并且学费直逼MBA,在金钱至上的资本主义国家,高学费往往是高收入和良好职业发展的风向标。业界,更不用说了,BAT都在开设这一类的部门,阿里巴巴去年跟今年就从名校挖了一些这个领域的教授,百度更是把斯坦福大牛Andrew Ng请了来。政府,就我知道的,新加坡和澳洲政府直接拨款赞助开设business analytics部门的公司。&br&&br&说完基本概念,回到题主问题。仔细读过问题描述后,我相信题主感兴趣的应该是business analytics吧(不是的话,就请忽略以下吧)。那再深入一点讲一下&b&相关的技能&/b&。题主是统计本科生,很好!哈哈!我是统计博士,现在在纽约一家投资管理公司做类似的工作,同事不乏一些计算机、自动控制、信号处理等数据分析相关的领域的博士。总体来说business analytics无疑是个交叉学科,包括数学(统计)、计算机和商学(经济学、市场营销,博弈论等等)。&b&统计类&/b&的方法占据了数据分析学科的首要地位(主要是回归模型)。可以说如果把统计方法全部拿走,数据科学基本就支离破碎不成体系了。然后是&b&计算机&/b&(包括机器学习、模式识别、图像处理等一类的领域),基于一些应用层面的需求,计算机领域提出了一些新颖的思路和模型。值得一提的是,这些东西又吸引了统计学家的关注,他们把同样的问题又用统计学方法做了出来。再结合一些传统的回归模型,统计学出现了新的分支:统计学习。最后是&b&商学类&/b&,现阶段来说比重最小,不过其中一些思路也是值得借鉴的,比如博弈论。一些专门的business analytics硕士会结合商业应用来讲统计和计算机方法。&br&&br&&b&实际的商业分析案例&/b&(当然是business analytics)。简单说几个吧:1.&b&生存模型&/b&,生物统计最常用的模型,研究疾病的愈合、死亡时间之类的问题,可以用以测试某些药品、治疗手段是否有效。应用到商业中,比如公司对特定人群投放广告,他们通过不同的渠道点击观看,那么需要多久的时间他们才会决定购买?我们定义:消费者不购买=‘活着’,一旦消费即为‘死亡’。接下来的任务就是研究哪个渠道的广告/哪种组合的广告最为有效。2.&b&聚类问题&/b&,公司投放过大量广告,做过促销。然后大量消费者前来购买,到底哪些真的看过上述宣传呢?如果这个都不知道如何分析哪个渠道或者哪些渠道的组合最有效?聚类分析就是解决这一类问题的。3.&b&贝叶斯方法&/b&,不知你可了解过贝叶斯分析?是统计/机器学习领域很火的方向。主要应用是在建模时候可以把人为的观点融合进模型中去。使得定性和定量分析的结果结合起来。这一点很是受在business analysis领域做数据分析的人的欢迎。除此外还有很多,就不一一说了。&br&&br&最后说到你的近况。本科背景还是弱了点,想要接触上述类型的工作,你需要更进一步。并且想吃的开最好也不要限制在统计学领域,毕竟读一个偏应用的学科,学会从应用角度考虑问题对于职业发展更有好处。升学的话可以考虑data analytics/business analytics的硕士专业。不过,如果觉得学费太高的话,其实统计硕士也是个不错的选择。自学的话,coursera上也有很多不错的课程。至于R/Python/SAS嘛,能会一个就够了。数据分析级别的编程,会一个,别的看个把礼拜就能上手。&br&&br&最后的最后,分享一个链接:&a href=&///?target=http%3A////graduate-programs-in-big-data-and-data-science/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Graduate Programs in Big Data Analytics and Data Science&i class=&icon-external&&&/i&&/a&。里面列举了全世界各地高校开设的数据分析类的研究生专业、各种收费的/不收费的在线课程。&br&&br&与题主共勉!
谢邀。终于得空来更新一下 从商业分析说起吧。关注过不少知乎上类似的问题和回答,发现个较严重的问题:大多数人对商业分析这个行业的认知并不准确。具体说来商业分析有两种: 1. Business analysis. 应属于传统商科,主要是任务是对公司整个运营的流程、业…
&br&&/b&最近,因为一些原因,自己需要做一个小范围的XGBoost的实现层面的分享,于是干脆就整理了一下相关的资料,串接出了这份report,也算跟这里的问题相关,算是从一个更偏算法实现的角度,提供一份参考资料吧。&br&这份report从建模原理、单机实现、分布式实现这几个角度展开。
&br&在切入到细节之前,特别提一下,对于有过GBDT算法实现经验的同学(与我有过直接connection的同学,至少有将四位同学都有过直接实现GBDT算法的经验)来说,这份report可能不会有太多新意,这更多是一个技术细节的梳理,一来用作技术分享的素材,二来也是顺便整理一下自己对这个问题的理解,因为自己实际上并没有亲自动手实现过分布式的GBDT算法,所以希望借这个机会也来梳理一下相关的知识体系。&br&本文基于XGBoost官网代码[12],commit是b3c9e6a0db0a7ebb26e3ef。
&br&&br&&b&2.建模原理
&br&&/b&我个人的理解,从算法实现的角度,把握一个机器学习算法的关键点有两个,一个是loss function的理解(包括对特征X/标签Y配对的建模,以及基于X/Y配对建模的loss function的设计,前者应用于inference,后者应用于training,而前者又是后者的组成部分),另一个是对求解过程的把握。这两个点串接在一起构成了算法实现的主框架。具体到XGBoost,也不出其外。
&br&XGBoost的loss function可以拆解为两个部分,第一部分是X/Y配对的建模,第二部分是基于X/Y建模的loss function的设计。
&br&2.1. X/Y建模
&br&作为GBDT算法的具体实现,XGBoost代表了Tree Model的一个特例(boosting tree v.s. bagging tree),基本的思想用下图描述起来会更为直观:
&br&&img src=&/cfd5ee9f250_b.png& data-rawwidth=&350& data-rawheight=&164& class=&content_image& width=&350&&&br&如果从形式化的角度来观察,则可以描述如下:
&br&&br&&img src=&///equation?tex=h%28%5Cwidehat+y%7C%5Cvec+x%29+%3D+%5Csum_%7Bi%3D1%7D%5EK+f_i%28%5Cvec+x%29%3B+f_i+%5Cin+F%2C+F+%3D+%5C%7Bf%28%5Cvec+x%29+%3D+w_%7Bq%28%5Cvec+x%29%7D%5C%7D+%28q%3A+%5Cvec+x+%5Cto+T%2C+w+%5Cin+R%5ET%29& alt=&h(\widehat y|\vec x) = \sum_{i=1}^K f_i(\vec x); f_i \in F, F = \{f(\vec x) = w_{q(\vec x)}\} (q: \vec x \to T, w \in R^T)& eeimg=&1&&&br&其中F代表一个泛函,表征决策树的函数空间,K表示构成GBDT模型的Tree的个数,T表示一个决策树的叶子结点的数目, w是一个向量。&br&看到上面X/Y的建模方式,也许我们会有一个疑问:上面的建模方式输出的会是一个浮点标量,这种建模方式,对于Regression Problem拟合得很自然,但是对于classification问题,怎样将浮点标量与离散分类问题联系起来呢?&br&理解这个问题,实际上,可以通过Logistic Regression分类模型来获得启发。&br&我们知道,LR模型的建模形式,输出的也会是一个浮点数,这个浮点数又是怎样跟离散分类问题(分类面)联系起来的呢?实际上,从广义线性模型[13]的角度,待学习的分类面建模的实际上是Logit[3],Logit本身是是由LR预测的浮点数结合建模目标满足Bernoulli分布来表征的,数学形式如下:
&br&&img src=&///equation?tex=%5Cwidehat+y+%3D+%5Cvec+w+%5Cvec+x+%3D+log%28%5Cfrac+%7Bp%7D+%7B1+-+p%7D%29%0A& alt=&\widehat y = \vec w \vec x = log(\frac {p} {1 - p})
& eeimg=&1&&&br&对上面这个式子做一下数学变换,能够得出下面的形式:
&br&&img src=&///equation?tex=p+%3D+%5Cfrac+%7B1%7D%7B1+%2B+exp%28-%5Cvec+w+%5Cvec+x%29%7D+%3D+%5Cfrac+%7B1%7D+%7B1+%2B+exp%28-%5Cwidehat+y%29%7D%0A& alt=&p = \frac {1}{1 + exp(-\vec w \vec x)} = \frac {1} {1 + exp(-\widehat y)}
& eeimg=&1&&&br&这样一来,我们实际上将模型的浮点预测值与离散分类问题建立起了联系。
&br&相同的建模技巧套用到GBDT里,也就找到了树模型的浮点预测值与离散分类问题的联系:
&br&&img src=&///equation?tex=p+%3D+%5Cfrac+%7B1%7D%7B1+%2B+exp%28-%5Csum_%7Bi%3D1%7D%5EK+f_i%28%5Cvec+x%29%29%7D+%3D+%5Cfrac+%7B1%7D+%7B1+%2B+exp%28-%5Cwidehat+y%29%7D%0A& alt=&p = \frac {1}{1 + exp(-\sum_{i=1}^K f_i(\vec x))} = \frac {1} {1 + exp(-\widehat y)}
& eeimg=&1&&&br&考虑到GBDT应用于分类问题的建模更为tricky一些,所以后续关于loss function以及实现的讨论都会基于GBDT在分类问题上的展开,后续不再赘述。 &br&&br&2.2. Loss Function设计
&br&分类问题的典型Loss建模方式是基于极大似然估计,具体到每个样本上,实际上就是典型的二项分布概率建模式[1]:
&br&&img src=&///equation?tex=l_%7Borg%7D%28y_i%2C%5Cvec+x_i%29+%3D+%28%5Cfrac+%7B1%7D+%7B+1+%2B+exp%28-%5Cwidehat+y_i%29+%7D%29%5E%7By_i%7D+%281-+%5Cfrac+%7B1%7D+%7B+1+%2B+exp%28-%5Cwidehat+y_i%29+%7D%29%5E%7B1+-+y_i%7D%3B+%5Cwidehat+y_i+%3D+%5Csum_%7Bj%3D1%7D%5EK+f_j%28%5Cvec+x_i%29%0A& alt=&l_{org}(y_i,\vec x_i) = (\frac {1} { 1 + exp(-\widehat y_i) })^{y_i} (1- \frac {1} { 1 + exp(-\widehat y_i) })^{1 - y_i}; \widehat y_i = \sum_{j=1}^K f_j(\vec x_i)
& eeimg=&1&&&br&经典的极大似然估计是基于每个样本的概率连乘,这种形式不利于求解,所以,通常会通过取对数来将连乘变为连加,将指数变为乘法,所以会有下面的形式:
&br&&img src=&///equation?tex=l_%7Blog%7D%28y_i%2C+%5Cvec+x_i%29+%3D+log%28l_%7Borg%7D%28y_i%2C+%5Cvec+x_i%29%29+%3D+-y_ilog%281+%2B+exp%28-%5Cwidehat+y_i%29%29+-+%281-y_i%29log%281+%2B+exp%28%5Cwidehat+y_i%29%29%0A& alt=&l_{log}(y_i, \vec x_i) = log(l_{org}(y_i, \vec x_i)) = -y_ilog(1 + exp(-\widehat y_i)) - (1-y_i)log(1 + exp(\widehat y_i))
& eeimg=&1&&&br&再考虑到loss function的数值含义是最优点对应于最小值点,所以,对似然估计取一下负数,即得到最终的loss形式,这也是经典的logistic loss[2]:
&br&&img src=&///equation?tex=l%28y_i%2C+%5Cvec+x_i%29+%3D+-l_%7Blog%7D%28y_i%2C+%5Cvec+x_i%29+%3D+y_ilog%281+%2B+exp%28-%5Cwidehat+y_i%29%29+%2B+%281-y_i%29log%281+%2B+exp%28%5Cwidehat+y_i%29%29%0A& alt=&l(y_i, \vec x_i) = -l_{log}(y_i, \vec x_i) = y_ilog(1 + exp(-\widehat y_i)) + (1-y_i)log(1 + exp(\widehat y_i))
& eeimg=&1&&&br&有了每个样本的Loss,样本全集上的Loss形式也就不难构造出来:&br&&img src=&///equation?tex=L+%3D%5Csum_%7Bi%3D1%7D%5E%7BN%7Dl%28y_i%2C+%5Cvec+x_i%29%0A& alt=&L =\sum_{i=1}^{N}l(y_i, \vec x_i)
& eeimg=&1&&&br&&br&2.3. 求解算法
&br&GBDT的求解算法,具体到每颗树来说,其实就是不断地寻找分割点(split point),将样本集进行分割,初始情况下,所有样本都处于一个结点(即根结点),随着树的分裂过程的展开,样本会
&br&分配到分裂开的子结点上。分割点的选择通过枚举训练样本集上的特征值来完成,分割点的选择依据则是减少Loss。
&br&给定一组样本,实际上存在指数规模的分割方式,所以这是一个NP-Hard的问题,实际的求解算法也没有办法在多项式时间内完成求解,而是采用一种基于贪心原则的启发式方法来完成求解。 也就是说,在选取分割点的时候,只考虑当前树结构到下一步树结构的loss变化的最优值,不考虑树分裂的多个步骤之间的最优值,这是典型的greedy的策略。
&br&在XGBoost的实现, 为了便于求解,对loss function基于Taylor Expansion进行了变换:
&br&&img src=&///equation?tex=l_k%28y_i%2C+%5Cvec+x_i%29+%3D+l%28y_i%2C++F_%7Bk-1%7D%28%5Cvec+x_i%29+%2B+f_k%28%5Cvec+x_i%29%29+%5Csimeq+l%28y_i%2C+F_%7Bk-1%7D%28%5Cvec+x_i%29%29+%2B+%5Cfrac+%7B%5Cpartial+l%28y_i%2C+F_%7Bk-1%7D%28%5Cvec+x_i%29%29%7D+%7B%5Cpartial+F_%7Bk-1%7D%28%5Cvec+x_i%29%7D+f_k%28%5Cvec+x_i%29+%2B+%5Cfrac%7B1%7D%7B2%7D%5Cfrac+%7B%5Cpartial%5E2+l%28y_i%2C+F_%7Bk-1%7D%28%5Cvec+x_i%29%29%7D+%7B%5Cpartial+F_%7Bk-1%7D%28%5Cvec+x_i%29%5E2%7D+f_k%5E2%28%5Cvec+x_i%29%3B+%0A& alt=&l_k(y_i, \vec x_i) = l(y_i,
F_{k-1}(\vec x_i) + f_k(\vec x_i)) \simeq l(y_i, F_{k-1}(\vec x_i)) + \frac {\partial l(y_i, F_{k-1}(\vec x_i))} {\partial F_{k-1}(\vec x_i)} f_k(\vec x_i) + \frac{1}{2}\frac {\partial^2 l(y_i, F_{k-1}(\vec x_i))} {\partial F_{k-1}(\vec x_i)^2} f_k^2(\vec x_i);
& eeimg=&1&&&br&&img src=&///equation?tex=F_%7Bk-1%7D%28%5Cvec+x_i%29+%3D+%5Csum_%7Bj%3D1%7D%5E%7Bk-1%7D+f_%7Bj%7D%28%5Cvec+x_i%29%0A& alt=&F_{k-1}(\vec x_i) = \sum_{j=1}^{k-1} f_{j}(\vec x_i)
& eeimg=&1&&&br&在变换完之后的形式里,
&img src=&///equation?tex=f_k%28%5Cvec+x%29%0A& alt=&f_k(\vec x)
& eeimg=&1&&就是为了优化loss function,待更新优化的变量(这里的变量是一个广义的描述)。&br&上面的loss function是针对一个样本而言的,所以,对于样本全集来说,loss function的形式是:
&br&&img src=&///equation?tex=L_k%28%5Cvec+Y%2C+%5Cmathcal+X%29+%3D+%5Csum_%7Bi%3D1%7D%5EN+l_k%28y_i%2C+%5Cvec+%7Bx_i%7D%29+%3D+%5Csum_%7Bi%3D1%7D%5EN+l%28y_i%2C+F_%7Bk-1%7D%28%5Cvec+%7Bx_i%7D%29%29+%2B+g_i+f_k%28%5Cvec+%7Bx_i%7D%29+%2B+%5Cfrac+%7B1%7D%7B2%7D+h_i+f_k%5E2%28%5Cvec+%7Bx_i%7D%29%3B%0A& alt=&L_k(\vec Y, \mathcal X) = \sum_{i=1}^N l_k(y_i, \vec {x_i}) = \sum_{i=1}^N l(y_i, F_{k-1}(\vec {x_i})) + g_i f_k(\vec {x_i}) + \frac {1}{2} h_i f_k^2(\vec {x_i});
& eeimg=&1&&&br&&img src=&///equation?tex=g_i+%3D+%5Cfrac+%7B%5Cpartial+l%28y_i%2C+F_%7Bk-1%7D%28%5Cvec+x_i%29%29%7D+%7B%5Cpartial+F_%7Bk-1%7D%28%5Cvec+x_i%29%7D%2C+h_i%3D%5Cfrac+%7B%5Cpartial%5E2+l%28y_i%2C+F_%7Bk-1%7D%28%5Cvec+x_i%29%29%7D+%7B%5Cpartial+F_%7Bk-1%7D%28%5Cvec+x_i%29%5E2%7D+%0A& alt=&g_i = \frac {\partial l(y_i, F_{k-1}(\vec x_i))} {\partial F_{k-1}(\vec x_i)}, h_i=\frac {\partial^2 l(y_i, F_{k-1}(\vec x_i))} {\partial F_{k-1}(\vec x_i)^2}
& eeimg=&1&&&br&对这个loss function进行优化的过程,实际上就是对第k个树结构进行分裂,找到启发式的最优树结构的过程。而每次分裂,对应于将属于一个叶结点(初始情况下只有一个叶结点,即根结点)下的训练样本分配到分裂出的两个新叶结点上,每个叶结点上的训练样本都会对应一个模型学出的概率值,而loss function本身满足样本之间的累加特性,所以,可以通过将分裂前的叶结点上样本的loss function和与分裂之后的两个新叶结点上的样本的loss function之和进行对比,从而找到可用的分裂特征以及特征分裂点。&br&而每个叶结点上都会附著一个weight,这个weight会用于对落在这个叶结点上的样本打分使用,所以叶结点weight的赋值,也会影响到loss function的变化。基于这种考虑,也许将loss function从样本维度转移到叶结点维度也许更为自然,于是就有了下面的形式:
&br&&img src=&///equation?tex=%5Cbegin%7Balign%7D%0AL_k%28%5Cvec+Y%2C+%5Cmathcal+X%29+%26%3D+%5Csum_%7Bi%3D1%7D%5EN+l_k%28y_i%2C+%5Cvec+%7Bx_i%7D%29+++++%5C%5C%0A%26%3D+%5Csum_%7Bi%3D1%7D%5ET+%5Csum_%7Bj%3D1%7D%5En+%28l%28y_j%2C+F_%7Bk-1%7D%28%5Cvec+%7Bx_j%7D%29%29+%2B+g_j+f_k%28%5Cvec+%7Bx_j%7D%29++%2B+%5Cfrac%7B1%7D%7B2%7D+h_j+f_k%5E2%28%5Cvec+%7Bx_j%7D%29%29+++++%5C%5C%0A%26%3D+%5Csum_%7Bi%3D1%7D%5ET+%5Csum_%7Bj%3D1%7D%5En+%28l%28y_j%2C+F_%7Bk-1%7D%28%5Cvec+%7Bx_j%7D%29%29+%2B+g_j+w_i++%2B+%5Cfrac%7B1%7D%7B2%7D+h_j+w_i%5E2%29+++++%5C%5C%0A%26%3D+%5Csum_%7Bi%3D1%7D%5ET++%28%5Csum_%7Bj%3D1%7D%5Enl%28y_j%2C+F_%7Bk-1%7D%28%5Cvec+%7Bx_j%7D%29%29+%2B+w_i+%5Csum_%7Bj%3D1%7D%5En+g_j+++%2B+%5Cfrac%7B1%7D%7B2%7D+w_i%5E2+%5Csum_%7Bj%3D1%7D%5En+h_j+%29+%0A%5Cend%7Balign%7D%0A& alt=&\begin{align}
L_k(\vec Y, \mathcal X) &= \sum_{i=1}^N l_k(y_i, \vec {x_i})
&= \sum_{i=1}^T \sum_{j=1}^n (l(y_j, F_{k-1}(\vec {x_j})) + g_j f_k(\vec {x_j})
+ \frac{1}{2} h_j f_k^2(\vec {x_j}))
&= \sum_{i=1}^T \sum_{j=1}^n (l(y_j, F_{k-1}(\vec {x_j})) + g_j w_i
+ \frac{1}{2} h_j w_i^2)
&= \sum_{i=1}^T
(\sum_{j=1}^nl(y_j, F_{k-1}(\vec {x_j})) + w_i \sum_{j=1}^n g_j
+ \frac{1}{2} w_i^2 \sum_{j=1}^n h_j )
\end{align}
& eeimg=&1&&&br&上面的loss function,本质上是一个包含T(T对应于Tree当前的叶子结点的个数)个自变量的二次函数,这也是一个convex function,所以,可以通过求函数极值点的方式获得最优解析解(偏导数为0的点对应于极值点),其形如下:
&br&&img src=&///equation?tex=w_i%5E%7Bopt%7D+%3D+-%5Cfrac%7B%5Csum_%7Bj%3D1%7D%5En+g_j%7D+%7B%5Csum_%7Bj%3D1%7D%5En+h_j%7D%0A& alt=&w_i^{opt} = -\frac{\sum_{j=1}^n g_j} {\sum_{j=1}^n h_j}
& eeimg=&1&&&br&现在,我们可以把求解过程串接梳理一下: &br&&br&
I. 对loss function进行二阶Taylor Expansion,展开以后的形式里,当前待学习的Tree是变量,需要进行优化求解。
II. Tree的优化过程,包括两个环节:
I). 枚举每个叶结点上的特征潜在的分裂点
II). 对每个潜在的分裂点,计算如果以这个分裂点对叶结点进行分割以后,分割前和分割后的loss function的变化情况。&br&因为Loss Function满足累积性(对MLE取log的好处),并且每个叶结点对应的weight的求取是独立于其他叶结点的(只跟落在这个叶结点上的样本有关),所以,不同叶结点上的loss function满足单调累加性,只要保证每个叶结点上的样本累积loss function最小化,整体样本集的loss function也就最小化了。&br&而给定一个叶结点,可以通过求取解析解计算出这个叶结点上样本集的loss function最小值。 &br&&br&有了上面的两个环节,就可以找出基于当前树结构,最优的分裂点,完成Tree结构的优化。
&br&这就是完整的求解思路。有了这个求解思路的介绍,我们就可以切入到具体实现细节了。
&br&注意,实际的求解过程中,为了避免过拟合,会在Loss Function加入对叶结点weight以及叶结点个数的正则项,所以具体的优化细节会有微调,不过这已经不再影响问题的本质,所以此处不再展开介绍。
&br&&br&&b&3.单机实现
&br&&/b&有了2里对XGBoost算法原理的介绍,不难推敲出单机的实现细节。实际上,对XGBoost的源码进行走读分析之后,能够看到下面的主流程:
&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&n&&cli_main&/span&&span class=&p&&.&/span&&span class=&nl&&cc&/span&&span class=&p&&:&/span&
&span class=&n&&main&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&CLIRunTask&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&CLITrain&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&DMatrix&/span&&span class=&o&&::&/span&&span class=&n&&Load&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&learner&/span& &span class=&o&&=&/span& &span class=&n&&Learner&/span&&span class=&o&&::&/span&&span class=&n&&Create&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&learner&/span&&span class=&o&&-&&/span&&span class=&n&&Configure&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&learner&/span&&span class=&o&&-&&/span&&span class=&n&&InitModel&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span& &span class=&n&&i&/span& &span class=&o&&&&/span& &span class=&n&&param&/span&&span class=&p&&.&/span&&span class=&n&&num_round&/span&&span class=&p&&;&/span& &span class=&o&&++&/span&&span class=&n&&i&/span&&span class=&p&&)&/span&
&span class=&o&&-&&/span& &span class=&n&&learner&/span&&span class=&o&&-&&/span&&span class=&n&&UpdateOneIter&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&learner&/span&&span class=&o&&-&&/span&&span class=&n&&Save&/span&&span class=&p&&()&/span&
&span class=&n&&learner&/span&&span class=&p&&.&/span&&span class=&nl&&cc&/span&&span class=&p&&:&/span&
&span class=&n&&Create&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&k&&new&/span& &span class=&n&&LearnerImpl&/span&&span class=&p&&()&/span&
&span class=&n&&Configure&/span&&span class=&p&&()&/span&
&span class=&n&&InitModel&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&LazyInitModel&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&obj_&/span& &span class=&o&&=&/span& &span class=&n&&ObjFunction&/span&&span class=&o&&::&/span&&span class=&n&&Create&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&objective&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&
&span class=&n&&Create&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&SoftmaxMultiClassObj&/span&&span class=&p&&(&/span&&span class=&n&&multiclass_obj&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&
&span class=&n&&LambdaRankObj&/span&&span class=&p&&(&/span&&span class=&n&&rank_obj&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&
&span class=&n&&RegLossObj&/span&&span class=&p&&(&/span&&span class=&n&&regression_obj&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&
&span class=&n&&PoissonRegression&/span&&span class=&p&&(&/span&&span class=&n&&regression_obj&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&
&span class=&o&&-&&/span& &span class=&n&&gbm_&/span& &span class=&o&&=&/span& &span class=&n&&GradientBooster&/span&&span class=&o&&::&/span&&span class=&n&&Create&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&gbm&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&
&span class=&n&&Create&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&GBTree&/span&&span class=&p&&(&/span&&span class=&n&&gbtree&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&
&span class=&n&&GBLinear&/span&&span class=&p&&(&/span&&span class=&n&&gblinear&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&
&span class=&o&&-&&/span& &span class=&n&&obj_&/span&&span class=&o&&-&&/span&&span class=&n&&Configure&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&gbm_&/span&&span class=&o&&-&&/span&&span class=&n&&Configure&/span&&span class=&p&&()&/span&
&span class=&n&&UpdateOneIter&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&PredictRaw&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&obj_&/span&&span class=&o&&-&&/span&&span class=&n&&GetGradient&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&gbm_&/span&&span class=&o&&-&&/span&&span class=&n&&DoBoost&/span&&span class=&p&&()&/span&
&span class=&n&&gbtree&/span&&span class=&p&&.&/span&&span class=&nl&&cc&/span&&span class=&p&&:&/span&
&span class=&n&&Configure&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&up&/span& &span class=&n&&in&/span& &span class=&n&&updaters&/span&&span class=&p&&)&/span&
&span class=&o&&-&&/span& &span class=&n&&up&/span&&span class=&o&&-&&/span&&span class=&n&&Init&/span&&span class=&p&&()&/span&
&span class=&n&&DoBoost&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&BoostNewTrees&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&new_tree&/span& &span class=&o&&=&/span& &span class=&k&&new&/span& &span class=&n&&RegTree&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&up&/span& &span class=&n&&in&/span& &span class=&n&&updaters&/span&&span class=&p&&)&/span&
&span class=&o&&-&&/span& &span class=&n&&up&/span&&span class=&o&&-&&/span&&span class=&n&&Update&/span&&span class=&p&&(&/span&&span class=&n&&new_tree&/span&&span class=&p&&)&/span&
&span class=&n&&tree_updater&/span&&span class=&p&&.&/span&&span class=&nl&&cc&/span&&span class=&p&&:&/span&
&span class=&n&&Create&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&ColMaker&/span&&span class=&o&&/&/span&&span class=&n&&DistColMaker&/span&&span class=&p&&(&/span&&span class=&n&&updater_colmaker&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&
&span class=&n&&SketchMaker&/span&&span class=&p&&(&/span&&span class=&n&&updater_skmaker&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&
&span class=&n&&TreeRefresher&/span&&span class=&p&&(&/span&&span class=&n&&updater_refresh&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&
&span class=&n&&TreePruner&/span&&span class=&p&&(&/span&&span class=&n&&updater_prune&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&
&span class=&n&&HistMaker&/span&&span class=&o&&/&/span&&span class=&n&&CQHistMaker&/span&&span class=&o&&/&/span&
&span class=&n&&GlobalProposalHistMaker&/span&&span class=&o&&/&/span&
&span class=&n&&QuantileHistMaker&/span&&span class=&p&&(&/span&&span class=&n&&updater_histmaker&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&
&span class=&n&&TreeSyncher&/span&&span class=&p&&(&/span&&span class=&n&&updater_sync&/span&&span class=&p&&.&/span&&span class=&n&&cc&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&br&从上面的代码主流程可以看到,在XGBoost的实现中,对算法进行了模块化的拆解,几个重要的部分分别是:
I. ObjFunction:对应于不同的Loss Function,可以完成一阶和二阶导数的计算。
II. GradientBooster:用于管理Boost方法生成的Model,注意,这里的Booster Model既可以对应于线性Booster Model,也可以对应于Tree Booster Model。
III. Updater:用于建树,根据具体的建树策略不同,也会有多种Updater。比如,在XGBoost里为了性能优化,既提供了单机多线程并行加速,也支持多机分布式加速。也就提供了若干种不同的并行建树的updater实现,按并行策略的不同,包括: &br&
I). inter-feature exact parallelism (特征级精确并行)&br&
II). inter-feature approximate parallelism(特征级近似并行,基于特征分bin计算,减少了枚举所有特征分裂点的开销)&br&
III). intra-feature parallelism (特征内并行)&br&
IV). inter-node parallelism
(多机并行)&br&
此外,为了避免overfit,还提供了一个用于对树进行剪枝的updater(TreePruner),以及一个用于在分布式场景下完成结点模型参数信息通信的updater(TreeSyncher),这样设计,关于建树的主要操作都可以通过Updater链的方式串接起来,比较一致干净,算是Decorator设计模式[4]的一种应用。
&br&XGBoost的实现中,最重要的就是建树环节,而建树对应的代码中,最主要的也是Updater的实现。所以我们会以Updater的实现作为介绍的入手点。
&br&以ColMaker(单机版的inter-feature parallelism,实现了精确建树的策略)为例,其建树操作大致如下:
&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&n&&updater_colmaker&/span&&span class=&p&&.&/span&&span class=&nl&&cc&/span&&span class=&p&&:&/span&
&span class=&n&&ColMaker&/span&&span class=&o&&::&/span&&span class=&n&&Update&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&Builder&/span& &span class=&n&&builder&/span&&span class=&p&&;&/span&
&span class=&o&&-&&/span& &span class=&n&&builder&/span&&span class=&p&&.&/span&&span class=&n&&Update&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&InitData&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&InitNewNode&/span&&span class=&p&&()&/span& &span class=&c1&&// 为可用于split的树结点(即叶子结点,初始情况下只有一个&/span&
&span class=&c1&&// 叶结点,也就是根结点) 计算统计量,包括gain/weight等&/span&
&span class=&o&&-&&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&depth&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span& &span class=&n&&depth&/span& &span class=&o&&&&/span& &span class=&err&&树的最大深度&/span&&span class=&p&&;&/span& &span class=&o&&++&/span&&span class=&n&&depth&/span&&span class=&p&&)&/span&
&span class=&o&&-&&/span& &span class=&n&&FindSplit&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&each&/span& &span class=&n&&feature&/span&&span class=&p&&)&/span& &span class=&c1&&// 通过OpenMP获取&/span&
&span class=&c1&&// inter-feature parallelism&/span&
&span class=&o&&-&&/span& &span class=&n&&UpdateSolution&/span&&span class=&p&&()&/span&
&span class=&o&&-&&/span& &span class=&n&&EnumerateSplit&/span&&span class=&p&&()&/span&
&span class=&c1&&// 每个执行线程处理一个特征,&/span&
&span class=&c1&&// 选出每个特征的&/span&
&span class=&c1&&// 最优split point&/span&
&span class=&o&&-&&/span& &span class=&n&&ParallelFindSplit&/span&&span class=&p&&()&/span&
&span class=&c1&&// 多个执行线程同时处理一个特征,选出该特征&/span&
&span class=&c1&&//的最优 &/span&
&span class=&c1&&// 在每个线程里汇总各个线程内分配到的数据样&/span&
&spa

我要回帖

更多关于 商业模式 分析方法 的文章

 

随机推荐