
本期【观视界】邀请到中电福富资深大数据与数据分析专家,同为数字化学会专家顾问 俞如富,坐客“数字化学会”向大家分享有关如何利用“算法”指导生活的尝试与思考的问题。
俞如富
▼
历任3家上市企业的大数据产品经理及数据架构师及部门总监;
现任中电福富资深大数据与数据分析专家;
曾获华为优秀培训交付讲师奖;
拥有10年以上的大数据与数据库产品研发与管理的经验,13年以上技术公开课与内训课经验,授课200以上场次,受训学生达2万人以上。
大家好,今天我跟大家谈的话题主要是利用“算法”指导生活,运用关键指标量化和数字化来辅助生活里的决策的一种尝试和思考。

*图片来源网络
听到“算法”(Algorithm),许多人立刻就条件反射觉得就只能跟计算机有关,开口能说几个算法名词就被抬到技术水平高、很牛掰的位置,比如NP完全问题、贪心算法、摩尔算法、模拟退火(SA)等,能说出来或懂得一些算法的就会被不熟悉算法技术的人觉得很牛。
其实算法并非是计算机专有,还涉及到了微积分、线性代数、离散数学、概率论、博弈论、逻辑思维等方面的知识。尤瓦尔•赫拉利在《未来简史》一书中也写道:“算法指的是进行计算、解决问题、做出决定的一套有条理的步骤。人类有99%的决定,包括关于配偶、事业和住处的重要抉择,都是由各种进化而成的算法来处理"。
我们今天分享的“算法”就是指适合于普通大众应用,并结合了数字化辅助决策来解决问题的方法和步骤。利用算法思路可以帮我们理顺许多生活中的需求和问题,比如:怎么选择最合适自己的对象,如何购买最合适自己的房子,为何结婚费用越高的家庭越容易离婚等等。
算法或隐或现的影响着我们的选择,但我们准备好相应的心智模式了吗?例如,您有想过自己买房可以利用算法来进行合理的优化选择么?

*图片来源网络
下面我介绍个别发生在我身上的例子,在2015年5月初,股市疯狂涨到4000多点的时候,我就选择退出股市,进而买房投资。一方面是谨慎使然,另一方面也是借助算法思维决策,又多少学过零和游戏的规则,即在竞争环境下,一方的收益必然意味着另一方的损失。这让我规避了这波股市疯狂暴跌。大家都认为自己赚到钱,这本身的思考逻辑是错的,只是纸面富贵,只有当你卖了股票后永远不再参与这种零和游戏才算赚了。股市的博弈的统计结果数据也是:一赚,二平,七亏,要在零和游戏里赚钱,就是要克服人的贪婪本性,真正赚到钱的都是不随大众的投资方式,毕竟20%甚至更少的人掌握了80%及以上的财富。
由此,我就退出了那波疯狂股市,为自己在楼市赚了第一桶金,并在2016,2017年也陆续做了更好的投资资源配置。买房的时候,也不是凭自我感觉,别人怎么说,我就怎么做。我做了关键指标的量化和数据评估,就是评估什么样的房子有价值,如何量化指标?万一房子跌了我怎么确保不亏本。于是我在那时买的房子要求:一是市中心,二是租金尽可能覆盖利息,因为租金跟月供如果基本持平哪怕是抵过利息,那意味着抗跌性强,而且还考虑其他关键指标,如房子的地段、交通教育及医疗配套、价格、结构、朝向、房龄等。我给每项指标制定一个阈值分数,满足什么条件多少分,得出最高分的就是自己想要的房子,再结合自己的资金杠杆和月供能力,当然买房有时也得借势(如:政策、舆论、银行利率等),这个也是作为辅助参考指标考虑。
如果当前是买方市场,房子基本你可深度砍价,只要不过分到极点,别人都会同意,我还遇到有的卖房人,真的就是为了卖房去炒股,你给他砍价15-20%,他都愿意接受,因为他急着加杠杆进股市梦想着一天就可以赚50%以上收益。现在回想起来,自己的投资收益,一半是侥幸的收获,一半是自己借助了基本的算法让我保持了理性思考, 当然不同时期,你买房的指标阈值、思考的重点需要跟着变化,现在买房,要考虑的因子和变量就要更多了。
不管是普通买第一套房的还是投资房子的人,其实都可以借助算法来辅助决策,让决策更有理性,更有数据支撑,让你的决定不再是觉得一切都是命运的安排。比如对于市场上随机出现房子应该选择怎样的购买策略?有没有其他简单易行的可参考的方式来选择呢?数学家给出了一个解决问题的数字---37%,这个数字是数学家们根据随机选择优化模型算出来的,现在人们把这个办法叫做“37%规则”。
生活中利用37%法则,用现成的数学理论给出最优解。举个例子,一个人一辈子不知道可以结实多少异性,如果一个女青年从18岁开始谈恋爱,而且计划在40岁之前结束单身,那么根据37%法则,在26岁她就应该结束观察期,26.1岁之后随时果断出手,如果之后新结交的对象比之前所有约会对象都优秀或者差不多一样好的男人,就建议立刻拿下,跟他结婚。

*图片来源网络
37%规则并不是说你一定可以针对某个选择都能达到最好,比如一定能选到最好的房子,选到最好的对象,选到最赚钱的股票,我们生活里有许多东西都是有这种说法:过了这个村就没了这个点,你要不要?在假定市场上的房子、交往对象等都是随机出现的时候,那使用37%规则是你作为一个理性的人在这个不确定的世界中所能做的最佳的决策策略,那么你就可以无怨无悔,没有那么多纠结和痛苦了。根据37%的法则能让你买到一个足够好的房子,找到足够好的对象让自己不后悔,也更容易成功,这也是随机选择优化的最佳方案。

*图片来源网络
利用算法的另外一种思考方式是机器学习,通过利用收集的数据,假设近期你了解了出售的房子信息一共有100套,那么要收集的数据包括了这些房子的具体的位置、挂出价格、交通状况、朝向、房龄,同类房子最近成交价,物业,装修程度,卖家态度及最后的成交价格及成交后半年内的房价变化等关键指标数据,把这些数据放入数据模型中,目标是找出一套规律来,指导未来你自己要选择什么样的房子投资或换房最有价值,以后最容易快速出售变现,你现在的买点,必须是你将来抛售或换房时的卖点。不同的模型给出的规律会不同,比如有的模型结果很简单,直接告诉你市区的老破大,房龄在20年以内的,只要价格比市场价低5~10%就可以入手;有的规则会很复杂,会需要综合考虑关键指标的每个阈值标准差,通过计算得到最高分的就是值得购买的房子。考虑到一般人不可能一辈子只住一套房子,或者买房子能一步到位,因此一定会涉及到换房,在当今换房成本非常高(中介费一般2-3个点,各种税费至少3个点以上)怎么买,怎么卖是个体力活(因需要花很多时间和精力学习和选择性看房收集数据信息),也是个技术活(因还要对收集的各种资讯做数据分析,进行量化处理,处理多维的复杂数据),只有理性思考,量化数据,结合算法思维,才是对得起自己的投入,毕竟这笔投入有可能是自己半辈子或大几年的收入积累,而且谁都不希望等到自己要换房或急需要钱卖掉自己房子时,却卖不出去或是卖房亏到吐血。

*图片来源网络
当然算法不能指导所有的工作和生活,面对不确定的世界,你心中要有自己的思考和解决问题的模式,要有一定的算法格局,用数据去支撑你人生的决策,就能避免迷茫,也能加大成功概率;但在没有任何计算机算法及数据模型辅助决策依托的情况下,我们就多尝试和冒险,为我们不确定人生留下难忘的精彩!
本次的分享,里面的案例不一定适合所有人,只是我在跳出技术看技术的思维和尝试和历练,如果一定要利用算法来投资,还需要深入认识一个投资理念:别人恐惧的时候,我们要贪婪;别人贪婪的时候,我们要恐惧。这也是投资的基本原则,结合一些数字化的决策和算法思维,让我们在投资和生活里有更多更好的选择和收益。谢谢大家!
-End-
*本文为数字化学会专家顾问俞如富原创稿件
*本文图片来源网络
*稿件所有权归属俞如富所有
如需转载请联系本公众号,并注明出处
1. 到底什么是算法?如何学习算法?算法入门有哪些?
Q1. 主讲人回复:算法的定义可这样描述,指解题方案的准确而完整的描述,是一系列解决问题的清晰的指令,记得是个清晰的指令。算法,代表着用系统的方法描述解决问题的策略机制,也可简单的理解成进行计算,解决问题作出决定的一套有条理的步骤。但我们时常讲到的算法不一定完全是跟计算机相关。
如何学习算法?根据我个人经验,总结了四要素:第一要素,要调起兴趣,明确目标,并多作考虑,如何利用具体某个或多个算法应用的场景,案例,解决了什么问题,你想利用算法做什么,搞清楚算法被研究出来的目的和意义,这样就会让你对后面的学习更有方向和目标,不会什么都学,以至于感觉算法太博大精深;第二要素,要对知识分类,寻找路径,也就是说对知识点进行分类拆解,需要达到的目标,学习的目标,有个知识依赖,要了解学习路径里都有哪些需要准备的知识,在自己没有任何思路的情况下,也可适当借助互联网的一些资源,来寻找适合自己学习的路径图,路径就犹如指南针,不会让自己迷失在知识的海洋里;第三要素,就是选择内容,有了学习路径图,比较选择合适的知识点及案例,在这个过程里面会经常感到困惑,比如说对该知识点的内容和算法之间的联系,要怎样验证。而且在需要的时候研究算法的代码,这样也能加深对算法的理解,这个阶段需要耐心和毅力的坚持;第四要素,就是分享交流,举一反三,最好能有一些输出和分享交流,因为这样的话可加强自己对算法的敏感程度,比如看到某个问题或题目时,就产生以该算法的对应联系,分享输出,这时你需要考虑和准备的就会更多,千百次的输入都不如一次的输出。
算法入门有哪些?我从两个角度来考虑,从学习方式来说,一个刚接触这块的小白,我是建议多去参加或听听业界的会议或一些公司组织的沙龙研讨,去外面长长见识,看看别的公司在用什么在解决什么问题,然后多看经典的书籍,让自己的兴趣和算法知识有一点点的技术底蕴。另一方面是从技术入门来说,要想深入学习算法,开发型的人,一般需要学习一到两种工具,比如python、C语言等,如果你只是纯粹应用型的人,可考虑使用图形界面友好的数据挖掘工具,工具里把一个个常用算法都封装好了,你直接调用就可。当然,实际上还需要对算法的概念,算法的思想,使用方法,程序结构和数据结构略懂最佳。最后,还是要熟悉自身业务,只有熟悉了业务才能更好地用量化的方式,把业务问题定义出来,然后利用算法去解决。
2. 有哪些比较经典的算法案例可以借鉴?
Q2. 主讲人回复: 第一个就是37%法则的一个算法,正文中我也有举到关于该算法的例子,我再举一个例子,比如如果你想面试一个秘书,你希望在应聘里找到最合适最好的人选,但并不知道怎样的人会来面试,所以你不得不一个个轮流面试,你可以随时发offer,但你如果在面试后没有马上给对方发offer,她有可能选择去其它地方工作。那你怎么才能知道眼前这个应聘者是最好的呢,这个也正如我文章里面所提到的一样,比如说如果你要交往异性,你不知道交往的异性里面有多少个会出现,但你如何选择最合适自己,才不会让自己后悔的一个对象呢?算法给出了答案是37%,回归到以上例子,在这里,利用37%法则,给自己设定一个招聘的总时间,前37%的时间里面只面试不做offer的决定,仅收集数据,之后,只要碰到一个比之前所应聘都优秀的人,马上下offer,你能得到最好应聘者的几率也是37%,这是你能获得的最好结果,不要觉得37%的成功率是很低的,这个算法可使用于任何大样本,如果你有100个应聘者,你能获得最好结果的几率其实只有1%,如果有100个应聘者,你的几率只剩下百万分之一,37%已经是一个非常好的数字了。
第二个例子,就是看是搜索引擎的搜索量决定股价的波动。也就是说,这个例子通过特征判断和预测类的算法来得到一些规律。同学们都可能听过蝴蝶效应,一只南美洲热带雨林中的蝴蝶,偶尔煽动了几下翅膀,可以在两周之后引起美国德克萨斯州的一场龙卷风。也就是说,你在互联网上搜索,是否会影响公司股价的波动,那类似这样的一个搜索量,可以针对我们后续的一个数据挖掘,做一些相关的决策性的影响。那后面我大致跟大家介绍一下他是如何实现的。比如说,在互联网搜索量的变化,会显著地影响公司股价的波动和趋势,所谓的投资者,注意利润,理论认为公司在搜索引擎中的搜索量代表了该股票被投资者关注的程度,因此,当一只股票的搜索持续增加,那就说明投资者对股票的关注度提升,从而使得该股票更容易被个人投资者购买,逐步导致股票价格上升,带来正向的股票收益。
3. 有没有更简练的方法区分随机算法和概率算法?
Q3. 主讲人回复:随机算法和概率算法的定义我这里就不多说,我用生活当中最简单的一个一句话来总结一下随机算法跟概率算法的一个区别,随机算法,就类似于我们平常说到的一句话叫作“踩到西瓜皮滑到哪里算哪里”这个是随机,你也不知道这西瓜皮能带你滑多远,但是呢,概率算法是什么呢?概率算法就是你在输入,在这里面有做一个假设,比如说,你假设我滑了两米之后,我就要跳出来,不能说一直滑到底,一直是个未知数,那在这种情况下,你就是滑了一米,你就赶紧自己假设这个条件已经一米啦,我就跳出来,这个时候就要概率算法。
4. 在大数据项目中,如何快速的实现算法模型的训练,使其实现更智能,更聪明?
Q4. 主讲人回复:首先我们要先明白,模型训练的目的到底是什么?一般来说,你要做模型训练,至少需要两个目的,一个目的是优化你在建设过程当中的一些模型,因为优化的流程可能要让你逆推你之前的业务需求是否合理,你之前的数据准备是否满足你的业务需求,那同时,你在建模里面的一些算法和分析方法有没有更合适,更恰当的或者其它规则可替代的能够去左右验证这类的算法和结果。
说到模型训练有什么技巧,这个因人而异,我举例三个场景:第一个场景,如果说你是数据型专家,而且你对于一些数据建模或者你所能准备到的一些数据比较完整,完善,那在这种情况下,你的技巧和策略就体现在数据驱动这样的一个优势上面。那如果你是业务型专家,而针对这一次的数据挖掘,更侧重于说业务相对比较简单,或者业务应用需求非常明确的情况下,那你这个时候不要侧重于说太多的方式、方法,主要是从业务需求这个角度来体现你的优势。
我们大多数的人来讲都需要考虑说,有可能是你提供的数据配有不当的短缺,或者是不是我需要的完全不一定都是我所需要的,那有可能会涉及到业务的比较复杂或者应用需求层次层出不穷,甚至说我在做建模或者是在做一些模型的开发设计的过程里面,都会顺着训练里面针对训练的数据训练的需求,在自己不太确定的情况下,就要边走边看,就要用业务的角度去思考,要用数据的角度去思考,也就是说两边都需要要结合起来,这就是说侧重于从业务的问题为出发点,你还要考虑,你的分析的方法,算法有没有更优化的地方。
5. 有必要针对算法和数据结构做专门的训练吗?
Q5. 主讲人回复:这要根据你自己的需求和目标,假如说你纯粹是应用型方向的,那你其实对于数据结构,算法基本原理,不一定要关注的非常深入,但是多少要懂得一些。如果是研究和开发型,甚至要做一些很多的编码的程序的人员,尤其是做一些数据结构相关工作的,那在这里面的话还是需要做一些专门的学习,具体是否要参加一些培训机构进行训练,那倒未必,因为现在互联网那么发达,只要说你按照我前面提到的四个要素来做一些如何学习算法的方法,我觉得多少还是会有一些帮助的。
6. 学习算法先看算法书还是先刷题好?
Q6. 主讲人回复:不管是先看算法的书,还是先刷题,要看你自己的定位,作为从未知到现在有之来考虑,还是先培养兴趣,先不要说一大堆的算法原理,或者技术上的技巧或理解一些很深奥的内容,这样子很容易就打消你在这方面的热情。
其实刷题本身意义就不大,除非你是为了考试,或者是为了做一些这方面的认证,那如果纯粹是为了工作或者提升,从这方面的兴趣来考虑的话,我还是觉得不要去刷题得好,不要一开始就看一些数据结构与算法等等或者是C语言那些,一下子就要你去掌握一两门开发工具,那这样子算法对于你来讲只会遥不可及,你还是从身边的一些例子,利用算法能解决什么问题,引起自己的兴趣之后再作出一些选择,再去了解一些规律,我觉得这样的学习起来会更有效果。
7. 那算法与程序有什么关系?
Q7. 主讲人回复:算法和程序的关系,在我印象里大学中在学习到数据结构时有提及到这一块,大致是说,程序一般来说也算是个算法,但算法不一定是程序,而程序,往往会等于数据结构加算法,也就是说数据结构与算法要通过程序才能够实现,并由计算机系统来执行,那我想它在这方面的话就是这两个区别和联系了。
算法的话,就可以把它看成是程序的灵魂,因为一个需要实现特定功能的程序,那实现它的算法或者方法,其实有很多种的,你知道方法或者算法的优劣,意味着决定的这个程序的好坏。所以说算法的质量优劣将影响到整个算法以至程序的一个整个效率。
8. 如果已是程序员,有必须掌握哪些算法?
Q8. 主讲人回复:已经是程序员那就跟一般的普通应用型的人事要求是不一样的,那我想至少要掌握五大方向的一些算法,第一方向是排序算法,比如说:快速排序、冒泡排序、堆排序,选择排序,归并排序等;第二方向是查找算法,比如说我们在大学里面有写过的二分查找,线性查找;第三方向就是广度优先,深度优先;第四方向就是动态规划的算法;第五方向就是朴素贝叶斯分类算法。当然,还需要掌握的算法还有很多,只是这个是常用的,或者是必须要掌握的基础方法。
9. 有学习算法相关资料或网站推荐吗?
Q9. 主讲人回复:
书籍类
1.<算法之美> 作者:[美]布莱恩·克里斯汀;[美]汤姆· 格里菲思
2.<数据化决策>作者:[美]道格拉斯 W. 哈伯德(DouglasW. Hubbard)
3. 数据结构与算法 作者:彭军、向毅
网站类:
1. 数字化学会的公众号,会不定期的分享有关“算法”的内容。
2. https://www.zhihu.com/question/19927564 知乎把经典算法合集成一个网页,内容很丰富。
3.还有就是一些技术性的网站: 比如: https://www.csdn.net/ 或http://www.itpub.net/ 等。
针对书籍是建议从第一本到最后一本阅读。第一本说到生活中的许多例子,会让你觉得好玩,第二本会让你掌握如何量化,第三本就是具体程序员的算法知识了,希望可以帮助到你们。
(上下滑动可阅读更多)
如您也想参与栏目线上交流
可关注本公众号回复“入群”
每月一期不同有关数字化知识分享交流
等着您来参与...

欢迎点击“阅读原文”加入数字化学会,成为我们一员!
*本文为数字化学会专家顾问俞如富原创稿件
*本文图片来源网络
*稿件所有权归属俞如富所有
如需转载请联系本公众号,并注明出处