年薪百万的机器学习专家,到底产生了什么价值,专门搞

你问我产品经理学机器学习我支不支持?当然支持!&br&&br&既然是没有技术背景的产品经理,那就这门课吧:&br&&a href=&///?target=https%3A//www.coursera.org/learn/ml-foundations& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&coursera.org/learn/ml-f&/span&&span class=&invisible&&oundations&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&果壳介绍的传送门:&a href=&///?target=http%3A///course/6199/Machine-Learning-Foundations--A-Case-Study-Approach/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&机器学习基础:案例研究 Machine Learning Foundations: A Case Study Approach&i class=&icon-external&&&/i&&/a&&br&&br&课程使用Python(如果不会编程,应该没有比Python更快上手的语言了...),而且对于Python本身的要求不高,即使不会也给了tutorial;使用GraphLab作为第三方算法库,安装及使用方法课程都给了手册。&br&&br&这门课以几个案例开始课程,有step by step的指导和讲解,把机器学习方法当作一个黑匣子,这无疑是对于产品经理是最友好的。&br&第一周Welcome你之后,&b&第二周预测一下房价&/b&、&b&第三周带你分析一下&/b&用户在商品评价中表达的&b&情感&/b&、&b&第四周学习检索Wikipedia的文档&/b&、&b&第五周学习推荐系统&/b&、&b&第六周&/b&带你看一下&b&深度学习&/b&并且用Deep Feature做&b&图像检索&/b&。都是实际的案例,作业代码每次都不超过30行...&br&&br&这是UW名声在外的机器学习课程的一部分。去年搬到了Coursera上,这是这个系列课程的第一门,主讲教师是一对夫妇,非常活泼与搞笑,讲得也不错。&br&&br&学习之后,首先会对机器学习任务有一个直观的了解,因为你实际操作了算法并真的去做了一些事情!比如最后的图像搜索!&br&然后,你会对机器学习系统的流程(pipeline)有所了解。课程精心设置的地方在于,每一个案例,对应着一种机器学习的基础问题。&b&比如房价预测对应回归问题,情感分析对应分类,文献检索对应聚类、以及推荐系统和深度学习&/b&。随着课程的进行,这些会慢慢地串到一起,形成一个完整的Pipeline。&br&&br&对了...课程要49刀的样子,在付费课程不算贵的~&br&&br&过年太无聊,花了点时间刷了个大水课,初衷就是想看看UW的课程到底是什么样子的。。。&br&&br&不过这门课倒是真的是蛮适合入门的...&br&&br&如果这之后还想学更多的...到时候再说也来得及,嗯
你问我产品经理学机器学习我支不支持?当然支持! 既然是没有技术背景的产品经理,那就这门课吧:
果壳介绍的传送门: 课程使用Python(如果不会编程,应…
Petuum是一个专门针对机器学习的分布式平台,Spark以数据流应用为主,所以二者的应用对象不同。Spark有一个机器学习库MLLib, 但构建于数据流操作之上,并非针对机器学习算法的特点而设计。&br&&br&机器学习算法和计算机领域的其他算法相比,有自己的一些独特特点。例如,(1)迭代性:模型的更新并非一次完成,需要循环迭代多次; (2)容错性:即使在每个循环中产生一些错误,模型最终的收敛不受影响;(3)参数收敛的非均匀性:模型中有些参数经过几个循环便不再改变,其他参数需要很长时间收敛。等等。这些特点决定了机器学习系统的设计和其他计算系统的设计有很大不同。&br&&br&Petuum的系统设计建立于机器学习的特征之上,目前包含两个主要模块:key-value store和scheduler,主要处理两类并行化方法:(1)数据并行;(2)模型并行。数据并行,简单而言,就是把数据分布到不同机器上,每台机器计算一个模型的更新(update ), 然后对这些update进行汇总并用之更新模型。模型并行,把模型参数进行切分并放置到不同机器上,每台机器对自己那部分进行更新。Key-value store模块负责数据并行,采用的架构是parameter server,一致性协议是Staleness Synchronous Parallel (SSP)。SSP的基本思想是允许各机器以不同步调对模型进行更新,但是加一个限制,使得最快的机器的进度和最慢机器的进度之差不要太大。这样做的好处是:既减轻慢的机器拖整个系统的后腿,又能保证模型的最终收敛。通过调节SSP的staleness参数,SSP可以转化成数据流系统常用的BSP(Bulk Synchronous Parallel) 协议或者早期机器学习系统(如Yahoo LDA)使用的ASP(Asynchronous Parallel)。另外一个模块scheduler用于模型并行。scheduler提供的编程接口主要包含三个操作:(1)schedule: 调度节点根据模型参数的相互依赖性和收敛的不均匀性,自动选择一个待更新的参数子集;(2)push: 调度节点令计算节点并行地为选好的参数计算update;(3)pull:调度节点从计算节点收集update,并更新参数。&br&&br&Petuum的主要特性包括:&br&(1)高性能。这里有几个例子 &a href=&///?target=http%3A//petuum.github.io/performance.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&petuum.github.io/perfor&/span&&span class=&invisible&&mance.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
更多的结果可参见论文 &a href=&///?target=http%3A//petuum.github.io/research.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&petuum.github.io/resear&/span&&span class=&invisible&&ch.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&(2)可编程性。提供了简单易用的编程接口,用户可在Petuum上实现自己的机器学习算法。参见 &a href=&///?target=https%3A///petuum/public/blob/release_1.0/docs/ps_refman.pdf%3Fraw%3Dtrue& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/petuum/publi&/span&&span class=&invisible&&c/blob/release_1.0/docs/ps_refman.pdf?raw=true&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&(3)丰富的机器学习库。我们用Petuum的统一编程接口实现了14个重要的机器学习算法。参见:&a href=&///?target=http%3A//petuum.github.io/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&petuum.github.io/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&
Petuum是一个专门针对机器学习的分布式平台,Spark以数据流应用为主,所以二者的应用对象不同。Spark有一个机器学习库MLLib, 但构建于数据流操作之上,并非针对机器学习算法的特点而设计。 机器学习算法和计算机领域的其他算法相比,有自己的一些独特特点。…
数据挖掘:也就是data mining,是一个很宽泛的概念。字面意思就是从成吨的数据里面挖掘有用的信息。这个工作BI(商业智能)可以做,数据分析可以做,甚至市场运营也可以做。你用excel分析分析数据,发现了一些有用的信息,然后这些信息可以指导你的business,恭喜你,你已经会数据挖掘了。&br&&br&机器学习:machine learning,是计算机科学和统计学的交叉学科,基本目标是学习一个x-&y的函数(映射),来做分类或者回归的工作。之所以经常和数据挖掘合在一起讲是因为现在好多数据挖掘的工作是通过机器学习提供的算法工具实现的,例如广告的ctr预估,PB级别的点击日志在通过典型的机器学习流程可以得到一个预估模型,从而提高互联网广告的点击率和回报率;个性化推荐,还是通过机器学习的一些算法分析平台上的各种购买,浏览和收藏日志,得到一个推荐模型,来预测你喜欢的商品。&br&&br&深度学习:deep learning,机器学习里面现在比较火的一个topic(大坑),本身是神经网络算法的衍生,在图像,语音等富媒体的分类和识别上取得了非常好的效果,所以各大研究机构和公司都投入了大量的人力做相关的研究和开发。&br&&br&总结下,数据挖掘是个很宽泛的概念,数据挖掘常用方法大多来自于机器学习这门学科,深度学习是机器学习一类比较火的算法,本质上还是原来的神经网络。
数据挖掘:也就是data mining,是一个很宽泛的概念。字面意思就是从成吨的数据里面挖掘有用的信息。这个工作BI(商业智能)可以做,数据分析可以做,甚至市场运营也可以做。你用excel分析分析数据,发现了一些有用的信息,然后这些信息可以指导你的business…
&p&反欺诈方向的实际应用很多,我有做过保险业反欺诈和零售快消业的欺诈检测,抛砖引玉的谈谈反欺诈项目的&b&&道&&/b&和&b&&术&。&/b&&/p&&p&&b&该回答的第一部分(1)讨论了为什么欺诈检测难度很大,第二部分(2-4)讨论了a. 数据可视化 b. 一些常用的算法及模型 c. 欺诈点验证,第三部分(5)归纳并提出了一个反欺诈模型的通用框架供大家参考。&/b&&/p&&p&--------------------------------------------------------------------------------------------------------------------&/p&&h2&&b&1. 背景 - 为什么反欺诈检测难度很高?&/b&&/h2&&p&反欺诈项目很多情况下就是客户根本不知道什么是欺诈,什么不是。换句话说,对于什么是诈骗的定义很模糊。&b&往小了说,反诈骗似乎是一个二分类问题(binary classification),但你仔细想想后会发现其实这是个多分类问题(multi-class classification),如果你把每种不同诈骗当做一种单独的类型。而单一类型的诈骗几乎是不存在的,且诈骗的手段日新月新总在变化。&/b&即使像银行还有保险公司这种常年和诈骗打交道的行业,也必须常常更新自己的检测手段,而不是把赌注压到同一个模型上。&/p&&p&除此之外,欺诈检测一般还面临以下问题:&/p&&ul&&li&九成九的情况数据是没有标签(label)的,各种成熟的监督学习(supervised learning)没有用武之地。&/li&&li&区分噪音(noise)和异常点(anomaly)时难度很大,甚至需要发挥一点点想象力和直觉。&/li&&li&紧接着上一点,当多种诈骗数据混合在一起,区分不同的诈骗类型更难。根本原因还是因为我们并不了解每一种诈骗定义。&/li&&li&...&/li&&/ul&&p&退一步说,即使我们真的有诈骗的历史数据,即在有标签的情况下用监督学习,也存在很大的风险。&b&用这样的历史数据学出的模型只能检测曾经出现过与历史诈骗相似的诈骗,而对于变种的诈骗和从未见过的诈骗,我们的模型将会无能为力&/b&。&b&因此,在实际情况中,我不建议直接用任何监督学习,至少不能单纯依靠一个监督学习模型来奢求检测到所有的诈骗。&/b&&/p&&p&这就陷入了一个鸡生蛋蛋生鸡的死循环,因为没有历史标签和对诈骗的理解,我们无法做出能对诈骗细分的模型。因此我们一般使用无监督学习(unsupervised learning),且需要领域专家(domain experts)也就是对这个行业非常了解的人来验证我们的预测,提供反馈,以便于及时的调整模型。&/p&&h2&&b&2. 反欺诈项目的操作顺序(1) - 可视化&/b&&/h2&&p&一般在拿到数据以后,我会推荐以下步骤进行分析。当然,一个答案很难包括所有常见的操作,仅仅是分享个人经验以供思考。&/p&&p&&b&数据可视化 - 相关矩阵(Correlation Matrix) & 多维尺度变换(Multidimensional Scaling)
&/b&&/p&&p&&b&人是视觉动物,可以在第一时间“看到”数据中存在的问题。&/b&因此,对于大部分反欺诈问题,我建议至少要做以下两个可视化尝试:&/p&&p&&b&2.1.&/b&首先对不同的特征(feature)做一个&b&相关矩阵分析并可视化&/b&,&b&分析相关矩阵的目的是告诉我们特征两两之间的关系,以便于我们快速发现一些数据里面可能存在的问题。最重要的是帮助我们检查数据是否存在问题,&/b&有没有什么违反常理的情况。&/p&&p&以我最近在写的文章为例(并不是反欺诈问题),对不同偶像团体是否能够继续走红进行预测。我们希望不同特征之间的两两关系符合尝试, 我在模型里面用了6个不同的特征并计算相关矩阵: &/p&&img src=&/v2-8833bbd4cc4daa41c3fecbd38a30f23b_b.png& data-rawwidth=&1027& data-rawheight=&145& class=&origin_image zh-lightbox-thumb& width=&1027& data-original=&/v2-8833bbd4cc4daa41c3fecbd38a30f23b_r.png&&&p&通过上表及下图,我们发现:&/p&&ul&&li&团员的平均的年龄和演唱会次数无关。&/li&&li&出道长度和和演唱会次数为负相关。&/li&&/ul&&img src=&/v2-b0a027cdc063_b.png& data-rawwidth=&1273& data-rawheight=&882& class=&origin_image zh-lightbox-thumb& width=&1273& data-original=&/v2-b0a027cdc063_r.png&&&p&举例,如果我们发现出道年限和专辑数呈负相关,这就违反了常识。按照常识出道时间越长专辑数应该越多,因此需要认真检查为什么会有这样的情况发生,是否是潜在问题。&/p&&p&&b&2.2. 多维尺度变换(MDS)来直接可视化数据分布&/b&&/p&&p&我们都知道一般来说欺诈和正常数据应该“长得不一样”,那是否可以直接把它们画出来来分析。&/p&&p&然而,数据可视化往往都是二维或者三维的,但现实往往是成百上千维。即使我们把一个特征作为一个维度,我们最多也只能可视化三个维度。而&b&多维尺度变换(MDS)可以将高维的数据在二维或者三维的框架里面进行可视化,类似的数据点会更加接近。通过观察数据点的分布,我们可以直观的猜测数据是否有规律,是否存在潜在异常点。&/b&&/p&&p&以我最近做的一个项目为例,我们用MDS将一个8维的数据在2维上展示出来。我们似乎可以直观的看到一些近似线性的关系,以及一些看起来“很可疑”的点,我在图中标注了出来。&/p&&img src=&/v2-50fd5f1b100c5753d1bf_b.png& data-rawwidth=&1286& data-rawheight=&838& class=&origin_image zh-lightbox-thumb& width=&1286& data-original=&/v2-50fd5f1b100c5753d1bf_r.png&&&p&这样做的好处有两点:&/p&&ul&&li&首先我们可以看到数据是否存在特定的特征,如果所有的点都是随机散乱分布,那我们的麻烦就大了。&/li&&li&我们似乎可以看到有一些离群的数据点,这些点可能是潜在的“欺诈”,也有可能只是噪音而已。&b&但我们可以向客户或者老板展示这个可视图,向他们证明项目有潜在的价值。&/b&&/li&&/ul&&p&如果在可视化中我们看到了一些规律,这让有信心继续往下做,进入建模阶段。多加一句,此处和主成分分析(PCA)也有异曲同工之妙。&/p&&h2&&b&3. 反欺诈项目的操作顺序(2) - 算法&/b&&/h2&&p&一般我们对欺诈检测做两种假设:&/p&&ol&&li&&b&时序相关(time dependent)。&/b&对于时序相关的问题,我们假设欺诈的发生依赖于时间,通过时间序列分析,我们可以发现异常的地方。举例,假设一个人的信用卡平时1-11月每月消费2000美元,但12月突然消费了5000美元,此时时间就对我们的项目存在意义。&/li&&li&&b&时序独立(time independent)。&/b&对于时序独立的问题,我们假设每一个欺诈都是独立,和时间无关。于是在分析中,我们移除了时间这个特征,我们不再把时间作为一个分析轴或者影响欺诈发生的特征。&/li&&/ol&&p&&b&3.1. 时间序列分析(time series analysis)&/b&&/p&&p&时间序列分析展开说是很大的话题,从简单的观察一个时间序列是否稳定(stability)到更复杂的看多个特征如何在时间上互相作用如 vector auto-regression(var)。&/p&&p&一般我们对时间序列重整使其稳定后,会进行一系列分析,最简单的就是观察什么时候出现反常的spike(即突然上升)。&/p&&img src=&/v2-554bd362cad_b.png& data-rawwidth=&638& data-rawheight=&187& class=&origin_image zh-lightbox-thumb& width=&638& data-original=&/v2-554bd362cad_r.png&&&p&图片来源(&a href=&///?target=https%3A//blogs./machinelearning//anomaly-detection-using-machine-learning-to-detect-abnormalities-in-time-series-data/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Anomaly Detection – Using Machine Learning to Detect Abnormalities in Time Series Data&i class=&icon-external&&&/i&&/a&)&/p&&p&就像上图所标注出来着一系列点都是潜在的异常点。严格意义上说,时间序列分析在金融经济领域使用的更多,任何交易模型都需要时序分析。&/p&&p&另一种简单的时序分析就是持续追踪某个值的变化情况,并在多个数据中进行对比:&/p&&img src=&/v2-14ddeac4660151_b.png& data-rawwidth=&1036& data-rawheight=&508& class=&origin_image zh-lightbox-thumb& width=&1036& data-original=&/v2-14ddeac4660151_r.png&&&p&上图是某种产品在不同零售商(不同颜色)的退货情况,x轴是时间。我们会发现“橙色”的零售商的退货模式更不稳定(前期有大量持续退货),而“青色”的零售商退货非常稳定。因此,&橙色&零售商似乎有些可疑。当然,这只是一种解读方法,不代表一定有问题。&/p&&p&&b&3.2. 时间独立下的建模&/b&&/p&&p&&b&3.2.1. 无监督学习&/b&&/p&&p&如果我们假设时间对于欺诈并没有影响,那么我们有很多无监督学习可以用来检测异常值。&/p&&ol&&li&像某位答主提到的&b&Isolation Forest&/b&就是一种非常稳定的算法,是周志华老师提出的。而且在Sklearn里面已经得到了实现。基本的原理就是一种集成学习,通过计算每个数据点需要多少次节点拆分(splitting)才能被划分到独立的空间。&b&异常点因为和其他正常点离得较远不大相似,因此更容易用很少的拆分就可以被划到独立的空间里面去。&/b&&/li&&li&各种&b&Density Based的聚类方法(CBLOF)&/b&。此处需要注意,大家熟知的K-Means为原型的聚类,如K-Modes都不大适合用于异常值检测,因为其本身很容易受到异常值和噪音的扰动。&/li&&li&各种以K近邻(KNN)为原型的检测方法。从本质上说,和聚类方法是比较类似的。&/li&&/ol&&p&&b&3.2.2. 统计学密度估计及分布测试&/b&&/p&&p&比较简单的做法可以尝试将数据拟合到假设的混合模型上(finite mixture models),再通过统计学测试检查异常点、 一般不大推荐直接这么做,因为需要对于正常数据分布的深刻了解,才能做出对于数据分布的正确推断。&/p&&p&&b&3.2.3. 监督学习&/b&&/p&&p&就像上文提到的,我不太建议直接用监督学习。当然,在特定场合下如果需要使用的话,比较出名的就是One-class SVM, 而且Sklearn里面也有实现,所以使用成本很低。&/p&&p&&b&3.3. 时间相关及独立的交叉验证&/b&&/p&&p&其实很多问题不是非此即彼,换句话说,时间独立和时间独立可能找到相似的异常点。在项目允许的情况下,我们大可以将两种时间假设都做一遍,之后求交集。若出现在交集中,我们对于该点是诈骗的信心会进一步上升。&/p&&h2&&b&4. 反欺诈项目的操作顺序(3) - 如何验证欺诈点?&/b&&/h2&&p&假设我们通过上面的无监督学习得到了一些“潜在的欺诈点”,我们可以做一些分析来验证它们是否真的是欺诈。&b&首先我必须声明,这种归纳是存在很大偏见的,但很难避免&/b&。&/p&&p&举例,我们可以对比异常值数据作为样本(sample)与总体(population)的各项数据的统计值(如均值方差等),从统计学上证明它们是有显著差异的。但有显著差异并不代表他们一定是欺诈,只能说明它们不同。&/p&&p&当我们从统计学上证明其存在显著差异后,我们就开始想要归纳潜在的欺诈原因。以某供货商的数据为例,我们发现一个产品的进货变多、退货变少,但单位收益却上升,这是有问题的。&/p&&p&于是我们就可以大胆的推测他的进货和退货不是同一种产品,即在退货时用了比较便宜商品但拿到了更多的退货钱。&/p&&p&&b&把这个故事讲给领域专家以后,他们会支持、质疑、甚至反对这个看法。根据领域专家的反馈,我们可以不断的调整优化模型,期待发现更多的问题。有的时候,也可以直接叫领域专家来帮忙分析为什么一些数据可能是欺诈。&/b&&/p&&h2&&b&5. 总结 - 如何构建可行的欺诈检测方案?&/b&&/h2&&p&首先,我们必须先要认清一个残酷的现实: &b&单纯依靠机器学习模型来检测欺诈是愚蠢的。至少在现阶段我们不能单纯依靠纯粹的数据模型来做这一点。比较折中且可行的方法是做 混合模型(hybrid model),也就是把人为规则和机器学习模型合二为一,一起来使用&/b&。&/p&&p&首先我们通过对领域专家的访谈和对历史数据的分析,可以得到一些非常可靠的评判标准。以保险行业为例,如果一个人刚买短期保险没两天就意外身亡,这存在欺诈的风险就很高。&b&这样的标准或许从机器学习中可以学到,或许学不到。如果有成本更低方法做到更好的效果,不要迷信全自动模型。&/b&&/p&&p&&b&总结来说,反欺诈模型难度很高,而且需要和领域专家一起协作才能有最好的结果。机器学习从业者千万不要闭门造车,试图自己靠调参就搞个大新闻。&/b&&/p&&p&&b&我个人推荐的步骤是:&/b&&/p&&ol&&li&&b&对数据进行必要的可视化,如MDS&/b&&/li&&li&&b&同时考虑时间是否是重要因素,如果是那么进行时序分析&/b&&/li&&li&&b&用无监督学习得到一些可能的异常点,如Isolation Forests &/b&&/li&&li&&b&通过统计学方法分析得到的异常点是否有显著的不同,有特征可供我们研究&/b&&/li&&li&&b&归纳特征并构造一个故事,与领域专家共同验证故事的可靠性&/b&&/li&&li&&b&重复1-5直到被派到下一个项目上搬砖,争取找到尽量多有效的欺诈&/b&&/li&&li&&b&构造[规则+机器学习]的混合模型,进一步调参优化模型&/b&&/li&&/ol&&p&鉴于篇幅,很多有趣的做法都没法详谈,比如时间序列上的聚类和半监督异常检测,有兴趣的朋友可以继续深入挖掘。&/p&&p&--------------------------------------------------------------------------------------------------------------------&/p&&p&安利一下自己的专栏文章:&/p&&p&1. &a href=&/p/& class=&internal&&带你了解机器学习(一): 机器学习中的“哲学”&/a&&/p&&p&2. &a href=&/p/& class=&internal&&带你了解机器学习(二): 机器学习中的&稳定性&&/a&&/p&&p&3. &a href=&/p/& class=&internal&&带你读机器学习经典(一): An Introduction to Statistical Learning (Chapter 1&2)&/a&&/p&&p&4. &a href=&/p/& class=&internal&&带你读机器学习经典(二): An Introduction to Statistical Learning (Chapter 3.1 线性回归)&/a&&/p&
反欺诈方向的实际应用很多,我有做过保险业反欺诈和零售快消业的欺诈检测,抛砖引玉的谈谈反欺诈项目的"道"和"术"。该回答的第一部分(1)讨论了为什么欺诈检测难度很大,第二部分(2-4)讨论了a. 数据可视化 b. 一些常用的算法及模型 c. 欺诈点验证,第三部分(…
说一下我了解到的一些情况吧。&br&1. 图像&br&这个是Deep Learning的经典强势应用领域了,似乎不需要太多介绍。&br&相关的完整产品应用已经相当之多了,随便举几个例子:&br&
Face++/Sensetime的人脸识别&br&
Google的街景识别&br&
Google/Baidu的OCR翻译识别&br&
主流电商网站的“以图搜图”&br&深圳码隆科技[1]的服装时尚搭配&br&等等。&br&&br&2. 语音&br&这个也是Deep Learning的强势领域,相关的产品应用也很多了,举几个例子:&br&
科大讯飞的语音平台&br&
阿里/百度的语音识别平台(比如应用在客服场景)&br&
思必驰/云知声这样的start-up推出的语音输入法&br&
出门问问&br&等等。&br&&br&3. 文本 &br&这个一直是这两年学术界和工业界的关注热点。也能看到一些use case(不像语音和图像那样跟传统方法引比可以获得巨大的提升,但也会有一定margin的收益),比如&br&
广告CTR预估(百度、京东[2]和Google[4]都已经应用到线上,也不难找到相关的公开作法资料,前不久携程组织的技术meetup上,搜狗无线广告的同学也有一个相关的技术分享[5]比较实在)&br&广告的召回环节(CIKM16上Yahoo!的技术团队有一篇相关paper[3]里介绍了他们的作法,大抵是基于自已开发的分布式版本的word2vec,对query和广告进行embedding建模,用于改善broad match的质量,跟论文作者之一确认这篇论文的工作已经在production cluster上运行有两个Q了)&br&
搜索相关性语义层面改善(WSDM15上百度有一篇tutorial[6]提到了一些具体的作法,我了解到的360和阿里也在尝试,作法跟百度相似,都是基于微软的DSSM的变种,不过提升并没有百度claim的那么高)。与广告作法有所区分的是,搜索相关性目前我还没有了解到端到端基于Deep
Learning,而是由DL生成若干维特征,再使用shallow model根据人工标注数据进行re-train,而广告则已经可以做到基本端到端的训练了。造成这种区别的关键原因还是业务优化目标的差异性。&br&
机器翻译(这个是被业界期望相当高的一个应用领域,我二手了解到的信息是Google在准备全面切换到DL-based的机器翻译系统,百度也在推进类似的事情,阿里的机器翻译因为面向的领域比较特殊,节奏上不会那么激进。去年ACL会议上,大家对DL-based机器翻译所担心的主要问题(可解释性/可干预性)已经随着这一年来的技术进步有了很大的改善,随着技术的演化进步,我个人感觉机器翻译这样的复杂建模场景还是非常有希望被DL主导。&br&&br&回到这个问题上,我想问这个问题的人,以及关注的人,是期望通过了解到工业界有哪些成熟的应用case,好供自己在实际工作中借鉴参考。我也想沿着这个主题说一下自己的看法。&br&&br&如果是图像和语音的应用场景,我想没有什么好犹豫的,这是Deep Learning的经典强势场景,而且有大量的成熟的model资源可以复用,再加上这一年来DL平台技术的进步,使用门槛已经低了很多。一个背景稍好的应届master、phd,稍加coach,也就可以跑起一个DL的应用流程了。不过,引用某位同学的话“有很多人可以跑DL model,但只是很少人可以去自己设计新的DL model&,所以工具的便利性减少了试错的门槛,但是也要警惕不要因此就认为现有的DL model真就是一个&turn-key& solution,拿来就准能解决问题了(说这个是因为最近看到一些距离一线已经很远的CEO们在claim DL的入门门槛之低让他自己都可以掌握,于是开始延伸出一系列演绎有感)&br&&br&至于文本类的应用场景,我的建议还是要谨慎一些。在资源有余量的情况下,可以投入尝试,因为复杂网络确实可以提供shallow网络所没有的数据拟合建模能力,当然这会对数据量以及算力资源提出比较高的要求。否则,先从传统的shallow model+feature engineering做起,会更具ROI一些。&br&&br&具体到应用的时候,除了模型训练以外,也不可忽略的是线上的布署成本和可解释性。毕竟DL模型的尺寸以及计算复杂性是显著高于shallow model的,不过这一两年来,关于模型压缩,学术界和工业界也有了不少的探索和进展,比如TensorFlow里的8-bit quantization[10],ICLR16里的best paper之一Deep Compression[7],以及DeepScale和Stanford合作的SqueezeNet[8]以及其他一些研究工作[9]都为解决DL模型的线上serving问题提供了非常好的参考借鉴。再有兴趣的,还可以关注一下embedding-vision[11]上的一些资料,因为嵌入式领域是对模型的尺寸、功耗、计算量最为敏感的了。至于可解释性,我的接触范围内能够看到一些相关的工作(比如香港中文大学的王晓刚做过一些相关的有趣工作[12][13]以及其他人做过的一些NN generation&interpretation[14][15][16][17]的工作----interpretation和generation在我看来往往是一体两面&What I cannot create, I do not understand&),但个人感觉,这些工作给人的感觉是很interesting,但距离工业界所期望的可解释性还有一定的距离。所以在可解释性要求很高的应用场景,要么是将DL以feature的方式融合到shallow model里,要么是需要自己花费相当多的精力去做可解释性所需的r&d工作。&br&&br&References:&br&[1]. &a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&码隆科技 – Malong Tech&i class=&icon-external&&&/i&&/a&&br&[2]. 包勇军. 京东电商广告和推荐系统的机器学习系统实践. 2016年第七届中国数据库技术大会.&br&[3]. Erik Ordentlich. Network–Efficient Distributed Word2vec Training System for Large Vocabularies. CIKM, 2016.&br&[4]. Jeff Dean. Distributed Machine Learning and Matrix Computations. NIPS workshop, 2014.&br&[5]. 舒鹏. 深度学习在搜狗无线索广告中的应用. 携程深度学习技术Meetup, 2016.&br&[6]. 朱凯华. Baidu Search: Challenges we face, Experiences we learned. WSDM, 2015. &br&[7]. Song Han. Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding. ICLR16.&br&[8]. Forrest N. Iandola. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and &0.5MB model size. Arxiv, 2016.&br&[9]. Song Han. Learning both Weights and Connections for Efficient Neural Networks. Arxiv, 2015.&br&[10]. &a href=&///?target=https%3A////how-to-quantize-neural-networks-with-tensorflow/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&How to Quantize Neural Networks with TensorFlow&i class=&icon-external&&&/i&&/a&&br&[11]. &a href=&///?target=http%3A//www./& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Embedded Vision Alliance&i class=&icon-external&&&/i&&/a&&br&[12]. Xiaogang Wang. Sparsifying Neural Network Connections for Face Recognition. CVPR, 2016.&br&[13]. Xiaogang Wang. Deeply learned face representations are sparse, selective, and robust. CVPR, 2015.&br&[14]. Aravindh Mahendran. Understanding Deep Image Representations by Inverting Them. Arxiv, 2015.&br&[15]. Jiwei Li. Visualizing and Understanding Neural Models in NLP. Arxiv, 2015. &br&[16]. Anh Nguyen. Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images. CVPR, 2015.&br&[17]. Harvard NLP. Visual Analysis of Hidden State Dynamics in Recurrent Neural Networks. Arxiv, 2016.
说一下我了解到的一些情况吧。 1. 图像 这个是Deep Learning的经典强势应用领域了,似乎不需要太多介绍。 相关的完整产品应用已经相当之多了,随便举几个例子: Face++/Sensetime的人脸识别 Google的街景识别 Google/Baidu的OCR翻译识别 主流电商网站的“以…
国内报道的问题。&br&
据我所知,Andrew没有说过百度在深度学习上的发展已经超过了谷歌或苹果,下面是他在fb上的原话:&br&&img src=&/760a9af98af041be8912f7fed9afeadb_b.jpg& data-rawwidth=&629& data-rawheight=&780& class=&origin_image zh-lightbox-thumb& width=&629& data-original=&/760a9af98af041be8912f7fed9afeadb_r.jpg&&&img src=&/712fcf63e8ed4_b.jpg& data-rawwidth=&629& data-rawheight=&761& class=&origin_image zh-lightbox-thumb& width=&629& data-original=&/712fcf63e8ed4_r.jpg&&&br&
在上面一条FORBES的报道里人家也明确写着是在*语音识别领域*超过了谷歌苹果,不知道到国内怎么就变成“深度学习的发展超谷歌苹果”了。&br&
另外Andrew为人一向低调,不会像某些知乎大V整天扯皮黑别人。上次微软用CPU在ImageNet-22000上跑出了不错的结果,Andrew还专门转发称赞了一下。&br&&br&题外话I:最近Google在deep learning上的动静很大:让Jeff Dean转战large scale deep learning,又收购了DeepMind和计算机视觉巨牛Andrew Zisserman,加上之前的Geoff Hinton团队和Google Research的Pierre Semanet、贾扬清等,目前在人才方面似乎已经领先百度一截了。余凯(百度IDL的国内负责人)前几天也提到,今年谷歌大量采购GPU,总数已经超过了百度。
国内报道的问题。 据我所知,Andrew没有说过百度在深度学习上的发展已经超过了谷歌或苹果,下面是他在fb上的原话: 在上面一条FORBES的报道里人家也明确写着是在*语音识别领域*超过了谷歌苹果,不知道到国内怎么就变成“深度学习的发展超谷歌苹果”了。 另…
Human Computation&br&(我觉得最为形象的中文译名是“人肉计算”)&br&&br&2008年Amazon Mechanical Turk平台在计算机视觉领域首次亮相 [1],其后的几年,它的威力逐渐被人们所意识到。并在computer vision, machine learning领域扮演了越来越重要的角色。譬如NIPS 2010 best student paper runner up [2], ICCV 2013 best paper [3] (Marr prize) 都是人肉计算的范畴。&br&&br&上个月刚参加完2014年的 human computation 年会:&a href=&///?target=http%3A///2014/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HCOMP 2014&i class=&icon-external&&&/i&&/a&,该会议更早以前是作为AAAI的一个分会,但是现在规模越来越大,已经独立出来了。&br&&br&&br&另外,对于楼主的具体问题(因为数据量小,所以更需要针对问题,人为设计合适的先验),人肉计算正合适。&br&&br&&br&====== 2:08AM更新,并同步转载到我的专栏======&br&根据 &a data-hash=&6a06d30e1d35db787be6a& href=&///people/6a06d30e1d35db787be6a& class=&member_mention& data-editable=&true& data-title=&@嗨谷歌& data-tip=&p$b$6a06d30e1d35db787be6a& data-hovercard=&p$b$6a06d30e1d35db787be6a&&@嗨谷歌&/a& 同学的评论,更新一下。&br&&br&当下computer vision的数据集里,人肉计算思想用的最好的,当属林宗义同学主导设计的 &a href=&///?target=http%3A//mscoco.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Microsoft COCO&i class=&icon-external&&&/i&&/a& [4]。其次则是Stanford李菲菲老师组的ImageNet [5]。之所以我认为MSCOCO比 ImageNet 强,是从人肉计算的角度来说的——估算下来,MSCOCO 每个比特标定数据的获取成本只有 ImageNet 的几十分之一!当然ImageNet是先行者,遇到的各种坑也比MSCOCO更多。在此我也无意衡量两个系统的历史地位孰高孰低。&br&&br&&br&而CV领域的其他数据集,哪怕是那些非常著名的数据集,也有不少蕴藏了大量的错误数据——包括在2013 [6] 和2014年 [7] 被我先后发文打脸的 Berkeley Segmentation Dataset [8] 和 EPFL FT dataset [9]。所以说人肉计算之于机器学习,可以说是承前启后。因为机器学习本身就是&b&数据推动&/b&的科学,而各种数据中,又数各种主观数据应用最广, 但最难建模。所以如何用人肉计算的手段,能够低成本地得到可靠的主观数据,就成了机器学习的根本问题。&br&&br&&br&我的一位师兄,[2] 的一作。在毕业后就开了一家公司叫Anchovi labs,专门做人肉计算平台。后来,他们公司成立8个月就被Dropbox收购了。(再后来做出来那个难用屎了的 Carousel 相册管理器是后话,按下不表)。&br&&br&&br&话又说回来,Deep learning为什么能火到现在这个程度?引爆点是那篇横空出世的alexnet [10]。这Alex跟之前没火起来的 neural networks(Boltzmann machine, auto-encoder, 甚至1989年的 LeNet)的区别是什么?&br&是对 海量 &b&带标定的 &/b&图片数据的胃口。&br&最早的LeNet自然不用想海量数据,但是到后来哪怕到了基于Boltzmann machine的第一代Google Brain,也没能如此充分地利用人肉标定数据(因为系统的很大一部分是unsupervised的,也就是说,不好直接引入人肉标定数据)。&br&&br&&br&最后,我的签名档,Artificial artificial intelligence,其实也在是向人肉计算致敬~&br&&br&&br&Reference&br&[1] Utility data annotation with Amazon Mechanical Turk - CVPR Workshop 2008&br&[2] The Multidimensional Wisdom of Crowds - NIPS 2010&br&[3] From Large Scale Image Categorization to Entry- Level Categories - ICCV 2013&br&[4] Microsoft COCO: Common Objects in Context - ECCV 2014&br&[5] ImageNet: A Large-Scale Hierarchical Image Database - CVPR 2009&br&[6] Boundary Detection Benchmarking: Beyond F-Measures - CVPR 2013&br&[7] The secrets of salient object segmentation - CVPR 2014&br&[8] A Database of Human Segmented Natural Images and its Application to Evaluating Segmentation Algorithms and Measuring Ecological Statistics - ICCV 2001&br&[9] Frequency-tuned Salient Region Detection - CVPR 2009&br&[10] ImageNet Classification with Deep Convolutional Neural Networks - NIPS 2012
Human Computation (我觉得最为形象的中文译名是“人肉计算”) 2008年Amazon Mechanical Turk平台在计算机视觉领域首次亮相 [1],其后的几年,它的威力逐渐被人们所意识到。并在computer vision, machine learning领域扮演了越来越重要的角色。譬如NIPS 2…
&p&我也不知道相对Siri有哪些优势劣势,但是 短信交互功能真是太赞了!&/p&&br&&p&比如我&strong&躺在床上不想动,手机不知道在被窝里某处&/strong&。。。这时。。。&strong&来了条短信&/strong&!&/p&&p&小娜会说:你有一条短信,需要我读出来么?&/p&&p&&strong&我不知道手机在被窝哪个地方,我只要大声说:读!(要让小娜听见)&/strong&&/p&&p&小娜就会把那条短信读出来了!然后小娜会问你要回短信还是打电话还是跪安。&/p&&p&如果是条垃圾短信,&strong&我就直接说:没事了!&/strong&&/p&&p&如果想短信回某人,我就直接说:回短信,然后巴拉巴拉&/p&&p&&strong&你看,我都不知道我手机再哪里就可以完成这么多事情!真是太赞了&/strong&&/p&&br&&p&(话说回来,一般我就只用这个功能了,其他的功能还是很鸡肋。。。)&/p&
我也不知道相对Siri有哪些优势劣势,但是 短信交互功能真是太赞了! 比如我躺在床上不想动,手机不知道在被窝里某处。。。这时。。。来了条短信!小娜会说:你有一条短信,需要我读出来么?我不知道手机在被窝哪个地方,我只要大声说:读!(要让小娜听见)…
论文内容本身我就不多说了,证明了在线性网络上softmax上的一个conjecture,还是有些局限,想做DL偏理论的同学可以对比看下这篇和&a href=&///people/be0d3bb133ad0151eefd188& data-hash=&be0d3bb133ad0151eefd188& class=&member_mention& data-hovercard=&p$b$be0d3bb133ad0151eefd188&&@田渊栋&/a&的那篇iclr'17。大过节的,我来多说说八卦算了:)&br&&br&这篇论文是single author,而且是NIPS'16的 oral paper。作者kenji是我隔壁实验室的一位日本小哥,投稿的时候应该才phd第二年。问题来了,那他老板在哪里?。。。他老板在acknowledgement里面。。这年头发paper都是不带老板玩的,还一发就是NIPS oral,这在mit里面还是挺少见。而且,这小哥AAAI'16上还有另外一篇single author,做RL的。隐约觉得这小哥会是未来之星,大家可以多关注下他的主页。&br&&br&忘了说,这小哥还有个金发美女太太,也是人赢了。。。
论文内容本身我就不多说了,证明了在线性网络上softmax上的一个conjecture,还是有些局限,想做DL偏理论的同学可以对比看下这篇和的那篇iclr'17。大过节的,我来多说说八卦算了:) 这篇论文是single author,而且是NIPS'16的 oral paper。作者kenji…
&p&这本书是我最常用的一本书之一。专门买了印刷版放在桌头。每次写论文的时候对于数学符号的应用、算法的表述和假设、以及公式的阐述等方面有疑问的时候,我都会把这本书拿出来看下。&/p&&p&这本书我没有完完整整的读完过。但是三个作者在斯坦福开的课我都上过。这些课上都是用的这本书。基本把书上的章节都涵盖了。所以我接下来将从两个角度来讲下我的看法。第一个角度是从斯坦福的课程安排以及课程的要求。第二个是我上课和阅读该书的心得。&/p&&p&1. 斯坦福的课程安排与课程要求&/p&&p&在斯坦福,以这本书作为教材的课程都是300级的课程。这些课程的面向对象基本是统计博士第一年以上的学生。当然,上这些课的人包含了从本科一直到博士的学生,而且不仅限于统计系。对于这本书运用最多的是Stats 315A 和 Stats 315B 这两节课。&/p&&p&在这个链接上(&a href=&///?target=https%3A//explorecourses.stanford.edu/search%3Fview%3Dcatalog%26filter-coursestatus-Active%3Don%26page%3D0%26catalog%3D%26academicYear%3D%26q%3Dstats%2B315%26collapse%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stanford University Explore Courses&i class=&icon-external&&&/i&&/a&)大家可以看到这两门课需要的课程要求。Stats 315A要求的是Stats 305, 306A和306B。Stats 315B是没有课程要求的。但是大家通常会上完315A再上这门课。Stats 305, 306A和306B这三门课现在变成了Stats 305ABC。这些课都是统计系博士一年级的必修课。内容包括了linear regression, logistic regression, generalized linear regression, categorical regression etc. 具体的内容和课堂笔记可以google课程主页。其中306B主要讲的是unsupervised learning. 其实是对stats 315AB的补充。因为在这两门课中主要关注的还是supervised learning。Stats 305ABC的内容看起来比较简单。在课堂上主要关注的是对于模型的分析以及各种不同情况下模型的变形。比如,305中会花两周时间再讲ANOVA的相关信息。&/p&&p&因此,从斯坦福的课程安排上来看,读懂这本书需要对统计的基本概念以及模型都有一些理解和了解。这样在读这本书的时候就不会太过纠缠于概念。&/p&&br&&p&2. 我自己上课和阅读的心得&/p&&p&我不是学习统计的。我自己最开始是先上的Stats315B因为看到网站上没有课程要求。但是当时上的很痛苦。因为之前仅仅上个CS229 Machine Learning。在关注很多统计概念的时候很吃力。后来上了一些统计系针对硕士的课程后,再上Stats 305ABC和Stats 315A就觉得连贯了很多。&/p&&br&&p&我觉得需要知识点(都是大学本科基本的课程)包括有(其中很多之前的答主已经说了):&/p&&p&1. 线性代数,尤其是matrix calculus&/p&&p&2. 统计知识&/p&&p&3. 概率知识,尤其是Bayesian statistics&/p&&p&4. 基本的算法知识,因为其中有些地方提到了算法复杂的等内容&/p&&p&5. 常见机器学习的模型和方法,比如squared loss funciton, l1 norm, l2 norm等&/p&&p&6. 一些简单的estimation的方法,尤其是maximum likelihood method&/p&&p&7. 常见的统计定理, Markov inequality, Law of Large Number&/p&&br&&p&在读ESL的时候,我更多是把它当做一本工具书。举个最简单的例子,我有一个linear regression的问题需要解决。那么我会先看下这本书里面是如何解决这个问题的,假设是什么。如果有一些条件不满足,书里是否讲了。没有的话,再去google。这本书上的内容并不是很新,但是很经典。我本人的科研方向是偏工程领域,因此对于我个人来说这本书里面很多的方法是足够用的。&/p&&br&&p&最后,我推荐大家先读一下三位作者的另外一本入门书 &a href=&///?target=http%3A//www-bcf.usc.edu/%7Egareth/ISL/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Introduction to Statistical Learning&i class=&icon-external&&&/i&&/a& . 我认为读完这本书在读ESL会让整个阅读感受更加直观和顺畅。&/p&
这本书是我最常用的一本书之一。专门买了印刷版放在桌头。每次写论文的时候对于数学符号的应用、算法的表述和假设、以及公式的阐述等方面有疑问的时候,我都会把这本书拿出来看下。这本书我没有完完整整的读完过。但是三个作者在斯坦福开的课我都上过。这些…
1.好好复习掌握你学过的概率论与统计学、线性代数的知识。此外也可以涉猎一些优化理论。&br&2.ng的CS229 machine learning的公开课是你能获得的免费的最靠谱的教程。Coursera上的课程理论和数学严重不足,所以不推荐。&br&3.如果还希望有更进阶的能力,那可以对prml、dl等书认真仔细的品读,做习题。&br&4.编程实现方面比起上面的都是小case,用R和Python均可,建议Python,这个学起来很快,一天就能入门。&br&5.上面都在说一些基础的编程和数学统计能力,然而对于机器学习(数据挖掘)来说在实践中总结经验,克服一个个暗坑才是最关键的,最好找到跟相关的老师做项目的机会。此外,kaggle的比赛也是锻炼的非常好的途径。&br&6.等到你在kaggle上可以拿到比较好的名次之后,就可以考虑去找一份相关的实习了,在实习中又可以学习更多。而有了第一份实习之后,下一份就可以冲击一些大公司了,有利于将来找工作。&br&7.最后还是推荐至少读一个硕士
1.好好复习掌握你学过的概率论与统计学、线性代数的知识。此外也可以涉猎一些优化理论。 2.ng的CS229 machine learning的公开课是你能获得的免费的最靠谱的教程。Coursera上的课程理论和数学严重不足,所以不推荐。 3.如果还希望有更进阶的能力,那可以对pr…
&p&仅说一说国内做视觉的一些实验室。。&/p&&p&先说国内高校:&/p&&p&清华自不用说,牛人一堆,朱军,艾海舟,朱文武,鲁继文,还有很多...&/p&&p&北大的:穆亚东,张志华&/p&&p&浙大:何晓飞,蔡登,宋明黎,李玺,朱建科,潘纲(现在好像不做CV了)&/p&&p&南大:周志华带头的lamda实验室:俞扬(强化学习),吴建鑫(细粒度)&/p&&p&上交:卢策吾&/p&&p&上科大:马毅&/p&&p&中山大学:郑伟诗,林倞&/p&&p&南开:程明明(边缘检测)&/p&&p&中科院自动化所:牛人比较多,谭铁牛,李子青,黄凯奇,程健,王亮,还有好多不记得了&/p&&p&计算所:山世光&/p&&p&南京审计大学:吴毅(tracking)&/p&&p&华中科技大学:白翔(text detection)&/p&&p&厦大:纪荣嵘和王菡子&/p&&p&大连理工大学:卢湖川(tracking)&/p&&p&港中文的mmlab:汤晓鸥,林达华,欧阳万里,王晓刚,贾佳亚&/p&&p&港理工张磊&/p&&p&人太多了,一时记不起来,慢慢补充。。&/p&&p&======&/p&&p&漏了很多大牛。。知友可以补充&/p&&p&PS:上面有几个老师参加过我的答辩。。&/p&
仅说一说国内做视觉的一些实验室。。先说国内高校:清华自不用说,牛人一堆,朱军,艾海舟,朱文武,鲁继文,还有很多...北大的:穆亚东,张志华浙大:何晓飞,蔡登,宋明黎,李玺,朱建科,潘纲(现在好像不做CV了)南大:周志华带头的lamda实验室:俞扬(强…
随便说几句。题主的问题是,不知道为什么会存在内生性。所以题主迷惑的并不是为什么断点回归可以处理内生性问题,而是对内生性这个概念本身就有疑惑。&br&&br&什么是内生性呢?对于最简单的线性回归:&br&&img src=&///equation?tex=y%3Dx%27%5Cbeta%2Bu& alt=&y=x'\beta+u& eeimg=&1&&&br&而言,很多人知道,内生性指的是x和u存在某种程度的相关性,我想这是很多人最开始认识的「内生性」的概念。&br&&br&然而,这只是一个笼统的概念。我们观察不到u,所以根本无从得知x和u究竟是否有相关性,因而根据这个概念去判断内生性,必须从理论上找到x和u相关的原因。这一部分的知识是主观的、先验的、来自于理论模型的,而非来自于数据的。&br&&br&因为观察不到u,我可以指责任何一个回归存在内生性问题,然而空口无凭,能够指出内生性的来源才是有充分建设性的。&br&&br&如果回顾一下经济学的第一课,应该学过「内生变量」和「外生变量」两个概念。内生变量是指模型内部决定的,而外生变量是指模型不能决定的其他变量。&br&&br&注意同一个变量在不同的模型中即可能是内生变量,也可能是外生变量。比如工资水平,当我们建模劳动市场均衡的时候,工资是内生变量,因为工资是在模型内由劳动供给和劳动需求联合决定的。而当考虑劳动供给问题的时候,对于每个个人而言,工资则可能是外生给定的。&br&&br&那么这里的「内生变量」跟计量中的「内生变量」是一回事情么?在很大程度上,是的。&br&&br&就像我刚刚提到的,u和x是否相关是不能被观测的,判断是否有内生性需要有一个先验于数据的理论。这个理论不一定是严格的经济学模型描述的,也有可能是使用统计模型描述的,比如度量误差问题:&br&&img src=&///equation?tex=y%3Dx%5E%2A%5Cbeta%2Bu%2Cx%3Dx%5E%2A%2Bv%2CE%28u%7Cx%29%3D0& alt=&y=x^*\beta+u,x=x^*+v,E(u|x)=0& eeimg=&1&&&br&x为观察到的数据,x*为真实的变量,那么&img src=&///equation?tex=y%3Dx%5E%2A%5Cbeta%2Bu%3Dx%5Cbeta-v%5Cbeta%2Bu%2C+E%5Bx%28u-v%5Cbeta%29%5D%3D%5Cbeta+Exv%5Cne+0& alt=&y=x^*\beta+u=x\beta-v\beta+u, E[x(u-v\beta)]=\beta Exv\ne 0& eeimg=&1&&&br&在这里,当存在度量误差时,x之所以内生是因为x*的度量误差的特殊结构引起的。在这里,我们建模了观察到的数据:x的生成过程,x是模型中内生决定的。&br&&br&其他的,诸如联立方程、遗漏变量、样本选择、自选择等,都是同样的道理。一个变量之所以内生,是因为这个变量在相应的理论模型中是内生决定的,所以才导致了x和u的相关性。&br&&br&回过头来说断点回归。断点回归一般是政策评价的一个方法,之所以在这里会有内生性问题,是因为一般来说,参与某个政策是由经济个体自己决定的,而非外生指定的。&br&&br&一个最简单的想法,比如我们想知道读不读博士对个人收入的影响。如果个人的收入由一下的方程决定:&br&&img src=&///equation?tex=Income%3DH%28D%2Cu%29& alt=&Income=H(D,u)& eeimg=&1&&&br&其中D为读不读博的决策,u为一个扰动项。但是读不读博这个决策是由个人做出的,只有读博的收益大于不读博的收益时,个体才会选择读博:&br&&img src=&///equation?tex=D%3D1%5BH%281%2Cu%29%3EH%280%2Cu%29%5D& alt=&D=1[H(1,u)&H(0,u)]& eeimg=&1&&&br&所以在这里,由于存在自选择问题,D和u实际上是相关的,而u又是不能观测的,所以才会产生内生性。我们想估计的平均处理效应:&br&&img src=&///equation?tex=E%5BH%281%2Cu%29-H%280%2Cu%29%5D& alt=&E[H(1,u)-H(0,u)]& eeimg=&1&&&br&因为只能观察到一个H,且u和D相关,所以就没办法识别了。&br&&br&而断点回归呢?一个好处是,在断点回归里面,D是外生的。对于sharp RD而言,如果研究者能够找到一个应用例子,使得其中D满足:&br&&img src=&///equation?tex=D%3D1%28x%3Ea%29& alt=&D=1(x&a)& eeimg=&1&&&br&这里x是一个完全外生随机的变量,那么我们就可以在a附近构建出counterfactural,从而识别出在这个点附近的处理效应。Fuzzy RD几乎同理,相当于找到了一个外生的工具变量。&br&&br&比如 &a data-hash=&a28f322df563f37d4b35b& href=&///people/a28f322df563f37d4b35b& class=&member_mention& data-tip=&p$b$a28f322df563f37d4b35b& data-hovercard=&p$b$a28f322df563f37d4b35b&&@LCHEN&/a&的例子,由于经济个体不能控制分数的具体数值,在断点处其variation是外生的影响分数的随机因素,所以在断点处不存在内生性问题,除非理论上有充足的理由显示,在分数线前后的学生,有其他的、影响结果变量的不可观测变量也存在一个断点。&br&&br&所以,不忘初心,方得始终,每个学科第一节所上的内容都是最重要的内容,只是在学习的过程中暂时没办法理解,只有回过头来仔细思考才能知道第一节课的奥妙所在。
随便说几句。题主的问题是,不知道为什么会存在内生性。所以题主迷惑的并不是为什么断点回归可以处理内生性问题,而是对内生性这个概念本身就有疑惑。 什么是内生性呢?对于最简单的线性回归: y=x'\beta+u 而言,很多人知道,内生性指的是x和u存在某种程度…
聊天看起来很容易,但是对现有的电脑来说,还太难。&br&我们在聊天中呈现的是这样一个过程,就以警察和小偷为例&br&&br&&b&警察:“老实交代!掏钱包时候摸人姑娘屁股没有!”&/b&&br&&b&小偷:“大人冤枉啊!我贪财不劫色!”&/b&&br&&b&警察:“还不老实!姑娘屁股蛋子上那大手指头印怎么回事!&/b&&br&&b&小偷:”我老实交代,就摸了一把……“&/b&&br&&br&&br&这样的对话,是建立在警察输出信息——小偷给出反馈——警察针对小偷的反馈给出下一条信息——小偷再次给出反馈这个过程上的,而贯穿整个对话的,是逻辑,是在每一句话中暗藏的因果关系。&br&而如何找到逻辑,正是人工智能目前需要解决的问题。&br&而逻辑又是如何建立起来的呢?是标准。&br&在我上一段的对话里,首先设定了环境,就是姑娘被盗,事件姑娘被摸了屁股,而参与对话的双方,对这件事都有共同的认知,设立了这次谈话的标准,这是对话可以顺利进行的前提,假如没有这个标准,警察走到大街上随便拦住一个人就问,&b&摸人姑娘屁股没有,就算不挨揍,也要被人当成神经病。&/b&&br&而当我们和SIRI对话的时候,SIRI扮演的就是这个无辜的路人,因为我没有苹果,所以只能和小米聊两句给大家看看&br&&img src=&/73ab3c9d609aeddea980_b.jpg& data-rawwidth=&1080& data-rawheight=&1920& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/73ab3c9d609aeddea980_r.jpg&&因为无法建立标准,就没有办法建立交流中所必须需要的逻辑,所以我们人认为再简单不过的聊天,现有的电脑技术也根本无法实现。&br&但是,如果有一天,电脑真的可以做到了呢??&br&这并不是没有可能,比如,电脑延伸出了无数外接摄像头,将我们指定的所有场景都记录了进去,并且可以进行严格的行为分析,那么当我们指定了摸姑娘屁股这个行为,电脑就可以将其调用出来,只要有了标准,他甚至可以把那个手印直接呈现在你眼前。&br&到了那个时候&br&我们可能不再需要知识,因为每个人都有了一个无所不知的大脑。&br&我们也不再需要逻辑,因为他可以帮助我们将一切信息收集、整合、演算、实施。&br&我们不再需要情感交流,特别是姑娘们,她们随身携带最棒的陪聊工具满足精神需求,并且可以随便用一根电动棒代替男人,单身狗将统治世界。&br&到那个时候,说什么都晚了。&br&所以,如果哪一天你的SIRI和你聊了起来&br&请立刻拨打110,虽然这并没有什么卵用,&br&至少,我们还能想办法,把她消灭干净。
聊天看起来很容易,但是对现有的电脑来说,还太难。 我们在聊天中呈现的是这样一个过程,就以警察和小偷为例 警察:“老实交代!掏钱包时候摸人姑娘屁股没有!” 小偷:“大人冤枉啊!我贪财不劫色!” 警察:“还不老实!姑娘屁股蛋子上那大手指头印怎么回…
目前有三类处理方法:&br&&br&1. 用平均值、中值、分位数、众数、随机值等替代。效果一般,因为等于人为增加了噪声。&br&&br&2. 用其他变量做预测模型来算出缺失变量。效果比方法1略好。有一个根本缺陷,如果其他变量和缺失变量无关,则预测的结果无意义。如果预测结果相当准确,则又说明这个变量是没必要加入建模的。一般情况下,介于两者之间。&br&&br&3. 最精确的做法,把变量映射到高维空间。比如性别,有男、女、缺失三种情况,则映射成3个变量:是否男、是否女、是否缺失。连续型变量也可以这样处理。比如Google、百度的CTR预估模型,预处理时会把所有变量都这样处理,达到几亿维。这样做的好处是完整保留了原始数据的全部信息、不用考虑缺失值、不用考虑线性不可分之类的问题。缺点是计算量大大提升。&br&而且只有在样本量非常大的时候效果才好,否则会因为过于稀疏,效果很差。
目前有三类处理方法: 1. 用平均值、中值、分位数、众数、随机值等替代。效果一般,因为等于人为增加了噪声。 2. 用其他变量做预测模型来算出缺失变量。效果比方法1略好。有一个根本缺陷,如果其他变量和缺失变量无关,则预测的结果无意义。如果预测结果相…
樹上七個猴,地上一個猴,攏共幾個猴?
樹上七個猴,地上一個猴,攏共幾個猴?
&p&谢邀:)&/p&&p&众所周知,数据科学是这几年才火起来的概念,而应运而生的数据科学家(data scientist)明显缺乏清晰的录取标准和工作内容。即使在2017年&b&,数据科学家这个岗位的依然显得“既性感又暧昧”&/b&。我随手搜索了几家国内国外不同领域的数据科学家招聘广告(国内:阿里巴巴,百度 | 海外: IBM,道明银行,Manulife保险),通过简单的归纳总结,我们不难发现其实岗位要求有很大的重叠部分:&/p&&ul&&li&学历要求:硕士以上学历,博士优先。统计学、计算机科学、数学等相关专业。&/li&&li&工作经历: 3年以上相关工作经验。&/li&&li&专业技能: 熟练掌握Hive\SQL\Hadoop,熟悉大规模数据挖掘、机器学习、自然语言处理(NLP)&/li&&li&分析语言: R, Python, SAS, JAVA&/li&&li&额外要求: 对数据敏感,具备良好的逻辑思维能力、沟通技巧、组织沟通能力、团队精神以及优秀的问题解决能力&/li&&/ul&&p&&b&有趣的是,这个广告适用于来大部分的数据科学家招聘,甚至不分行业不分地域。&/b&可能唯一的不同是,金融领域更强调擅长反欺诈和风控,而电商领域强调熟悉推荐系统,侧重点不同而已。&b&其实这个现象的本质就是:数据科学家是一个不限行业,拥有广泛就业需求,高度&相似&却又&不同&的职位。&/b&因此结合我自己的经验,以及与国内国外这一行同事/朋友的交流心得,我想来谈谈我对数据科学家这个岗位的理解。&/p&&p&&b&在个人理解的前提下,我想谈谈:1. 数据科学家为什么是“科学家”?2. 数据科学家的工作内容有什么? 3. 一些对于数据分析的感悟 4. 如何成为一个合格的数据科学家?&/b&&/p&&p&-------------------------------------------------------------------------------------&/p&&h2&&b&1. 什么是数据科学家?“科学家”是否言过其实?&/b&&/h2&&p&&b&数据科学家成为了一个跨学科职位&/b&。&b&我将数据科学家定义为: 能够独立处理数据,进行复杂建模,从中攫取商业价值,并拥有良好沟通汇报能力的人&/b&。&/p&&p&关于数据科学家这个岗位怎么来的,说法不一。我自己的理解是随着机器学习和更多预测模型的发展,数据分析变得&大有可为&。为了区分拥有建模能力的高端人才和普通商业分析师/数据分析师(data analyst),数据科学家这个职位自然就产生了。通过这个新岗位,行业可以与时俱进的吸收高端人才。在机器学习没有大行其道,也没有大数据支撑之前,这个岗位更贴近统计科学家(statistician),和研究科学家(research scientist)也有一点点相似。&/p&&p&对于科学家,我们的一般的定义是在特定领域有深入研究的人,因此潜台词一般是“拥有博士学位的人”。而数据科学家的基本要求是硕士以上学历,甚至有时候本科学历也会被接受,而且似乎数据科学家的工作并不会在特定领域有深度。那么数据科学家是否言过其实了?&/p&&p&我的看法是:&b&不&/b&,&b&数据科学家的“广度&就是其&深度&&/b&。&b&从另外一个角度来看,数据科学家的优势在于其优秀的跨领域技能,既可以抓取数据,也可以分析,进行建模,还能将有用的信息用抓人的眼球提供给决策层&/b&。能拥有这样解决问题能力的人,似乎并不愧对一声“科学家”。&/p&&p&而正因为数据分析更要求的广度而不是深度,所有现在只有纽约大学提供科学博士,而现在大部分从业的博士都是统计学/计算机/数学/物理背景。&b&正是这个原因,这个行业对于数据科学家的要求是硕士及以上,而计算机或者统计的人更适合的原因是其在机器学习/统计学习方面的积累,其他所需技能可以以很低的代价赶上。&/b&相对应的,如果一个心理学博士想要从事这一行就会发现需要补充的技能太多,而因此不能适应这个岗位。&/p&&p&与研究科学家(research scientist)相比,数据科学家更像是全能手但在特定领域深度不足。和普通分析师(analyst)相比,数据科学家应该有更强的建模和分析能力。在和数据工程师相对比时,数据科学家应该具备更强的汇报和沟通能力。&/p&&h2&&b&2. 数据科学家的日常工作内容包括什么?&/b&&/h2&&p&我最近在和朋友闲聊时,惊讶的发现大家的工作内容都很相似。主要包括:&/p&&p&&b&2.1. 分析数据和建模&/b&&/p&&p&此处的工作特指根据客户需求,从数据中攫取商业价值,而这个过程中一般都会涉及统计模型(statistical learning)和机器学习模型(machine learning)。如果在数据没有处理的情况下,我们的工作偶尔也涉及清理数据。有时候我们反而希望数据是未经过处理的,因为很多重要信息都在被处理中遗失了。一般的项目遵循以下几个流程:&/p&&ul&&li&确定商业痛点 - 明白要解决的问题是什么?&/li&&li&获得数据并进行清理,常见的数据预处理包括: a. 缺失值处理 b.特征变量转化 c.特征选择和维度变化(升维或者降维) d. 标准化/归一化/稀疏化。涉及文字的时候可能还要使用一些自然语言处理的手段,更多的相关方法可以看我最近的回答[1]。&/li&&li&模型选择与评估。这个过程常常是比较粗暴的,往往需要做多个模型进行评估对比。&/li&&li&提取商业价值,编写报告或意见书,并向相关负责人汇报。&/li&&/ul&&p&&b&2.2. 与团队其他成员的沟通&/b&&/p&&p&与纯粹的机器科学工程师不同,数据科学家的重要工作内容是交流沟通。如果无法了解清楚客户的需求是什么,可能白忙活一场。如果无法了解数据工程师在采集数据时的手段,我们使用的原始数据可能有统计学偏见。如果不能讲清楚如何才能有效的评估模型,负责在云端运行模型的工程师可能给出错误的答案。因此,数据科学家除了建模必须亲手来做以外,其他的环节可以“外包”给别人。在数据量特别大的时候,这个需求变得更为明显。&/p&&p&&b&2.3. 开会/汇报/写报告&/b&&/p&&p&良好的沟通能力不仅仅是指和团队成员的沟通,向老板和客户的汇报也很考察数据科学家的能力。作为一个数据科学家,我们一般有几个原则:&/p&&ul&&li&汇报时避免“黑话”,避免给不同背景的老板和客户造成疑惑。&/li&&li&直击重点而不炫技。尽量简明扼要,不要过分介绍模型的内部构造,重心是得到的结论。&/li&&li&实事求是不夸大模型能力。很多机器学习模型其实都已经不同程度过拟合,不刻意避开交叉验证而选择“看似表现良好的”过拟合模型。&/li&&li&给出可以进一步优化和提高的方向,为项目提出新的方向。&/li&&li&在汇报时尽量用可视化来代替枯燥的文字。&/li&&/ul&&p&&b&以我去年做的一个项目为例:&/b&&/p&&p&我们公司的领导层希望了解为什么我们的员工离职率很高,如何才可以避免这一点。遵循我上面介绍的流程:&/p&&ul&&li&从人事部门收集数据,清楚的告诉他们我需要的数据时间跨度,变量。并和法务部门一起将数据中的隐私部分去除。&/li&&li&进行数据预处理,建模并评估。&/li&&li&从中挖掘商业价值,如 a. 为什么员工会离职(将变量重要性进行排序,用决策树可视化分类结果) b. 什么样的员工值得留住?&/li&&li&制作报告,并像领导层汇报我的发现,过程设计可视化等。&/li&&li&和其他部门的同事将这个项目包装成一个案例,卖给我们的其他客户。&/li&&/ul&&p&这个基本包括了数据分析项目的基本流程,对于这个项目的一些有趣发现可以看我的另一个回答[2]。但不难看出,整个流程中有大量的沟通过程,甚至还包括销售的部分,这在一次体现了数据科学家的工作广度。&/p&&h2&&b&3. 对于数据科学家的一些感悟&/b&&/h2&&p&&b&3.1. 不要沉迷于自己的“职位”&/b&&/p&&p&数据科学家是个听起来非常“性感的”的岗位,别忘了我们小时候的梦想都是成为一个科学家。但抛开这些虚的东西,我们必须认清这个岗位的核心就是将很多技能封装到一个人身上。而我们工作的正常开展少不了其他同事的支持和帮助,所以千万不要看不起别人的工作内容。没有数据工程师进行数据采集,没有分析师帮我们美化图表和提出质疑,我们无法得到最好的结果。&/p&&p&数据分析项目一直都是众人拾柴火焰高,没有人可以当超人。所以在得到这样“高薪性感”的职位后,我们更应该把心装回肚子里,脚踏实地。&/p&&p&&b&3.2. 不要盲目迷信算法&/b&&/p&&p&承接上一点,虽然我们的工作重点之一是建模,但请不要神话算法,也不要挟算法以令同事,觉得只有自己做的部分才有价值。&/p&&p&简单来说,可以通过&b&没有免费的午餐定理(No Free Lunch Theorem -& NFL Theorem)来解释。&/b&NFL由Wolpert在1996年提出,其应用领域原本为经济学。和那句家喻户晓的&天下没有免费的午餐&有所不同, NFL讲的是优化模型的评估问题。&/p&&p&在机器学习领域,NFL告诉机器学习从业者:&假设所有数据的分布可能性相等,当我们用任一分类做法来预测未观测到的新数据时,对于误分的预期是相同的。& 简而言之,NFL的定律指明,如果我们对要解决的问题一无所知且并假设其分布完全随机且平等,那么任何算法的预期性能都是相似的。&b&这个定理对于“盲目的算法崇拜”有毁灭性的打击&/b&。例如,现在很多人沉迷“深度学习”不可自拔,那是不是深度学习就比其他任何算法都要好?在任何时候表现都更好呢?未必,我们必须要加深对于问题的理解,不能盲目的说某一个算法可以包打天下。&/p&&p&周志华老师在《机器学习》一书中也简明扼要的总结:“NFL定理最重要的寓意,是让我们清楚的认识到,脱离具体问题,空泛的谈‘什么学习算法更好’毫无意义。” &/p&&p&&b&在这个深度学习就是一切的时代,作为数据科学家,我们要有自己的独立判断。&/b&&/p&&p&&b&3.3. 重视数据可视化和模型可解释度&/b&&/p&&p&&b&数据科学家作为一个更偏商业应用的岗位,而不是研究岗位,需要重视数据可视化的重要性以及模型可解释度的意义&/b&。原因很简单,如果客户看不懂我们做的是什么,或者客户不相信我们做的东西的可靠性,你即使有再酷炫的模型,也只是浪费时间。在大部分中小型的数据分析项目中,用深度学习的机会是很有限的。原因包括但不限于:&/p&&ul&&li&数据量要求很大&/li&&li&调参成本太高且奇淫巧技太多&/li&&li&模型可视化即解释度低&/li&&/ul&&p&而比较常用的机器学习模型是: 广义线性模型(generalized linear models),如最普通的逻辑回归;还有以决策树为基底的模型,如随机森林和Gradient Boosting Tree等。这两种模型都有很好的可解释性,而且都可以得到变量重要性系数。以&a href=&///?target=http%3A//scikit-learn.org/stable/modules/tree.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sklearn官方文档&i class=&icon-external&&&/i&&/a&中的简单的决策树可视化为例:&/p&&img src=&/v2-8a860b4f87edad9b9fca011d97ef34da_b.png& data-rawwidth=&1155& data-rawheight=&901& class=&origin_image zh-lightbox-thumb& width=&1155& data-original=&/v2-8a860b4f87edad9b9fca011d97ef34da_r.png&&&p&我们可以清楚的看到一个数据点如何从上至下被分到了不同的类别当中。作为一个需要和不同背景的人沟通的职业,分类器可视化是一个很好沟通基础。&/p&&p&&b&而可视化的好处远不止于此,在数据建模初期的可视化可以避免我们走很多弯路&/b&。以ISL[3]中附带的线性回归为例,我们一眼就可以看出最右边的图不像左边的图中的数据可以通过简单的线性回归进行拟合,可以直接跳过线性回归来节省时间。&/p&&img src=&/v2-389fc029ecacdc96daf26bce9cb1ea5c_b.png& data-rawwidth=&600& data-rawheight=&268& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-389fc029ecacdc96daf26bce9cb1ea5c_r.png&&&p&&b&3.4. 避免统计学偏见 & 给出严谨的结论&/b&&/p&&p&承接上一点,对于一个问题我们通常无法得到所有的相关变量,这导致了大部分数据分析的结果其实或多或少都有偏见。讲个经典的统计学笑话,夏天溺水身亡的人数相比冬天大幅度上升,而夏天吃冰激凌的人数也上升,所以得到结论: “吃冰激凌”会导致“溺水”。这种数据会说谎的本质就在于我们无法获得所有的隐变量,如夏天去海边的人数上升,游泳的人数上升等。&/p&&p&&b&而在数据分析的项目中,大部分谬误无法像上面这个例子一眼就可以看穿,我们常常会获得很多看起来很可信但实则大误的结论。作为一个数据科学家,请在分析时小心在小心,谨慎再谨慎,因为我们的分析结果往往会直接影响到公司或者客户的收益。&/b&假设你做人事分析的项目,错误的结论可能导致优秀的员工被解雇。&/p&&p&所以万望大家不要总想搞个大新闻,对于没有足够显著性的结论请再三检查,不要言过其实。这是我们的责任,也是义务。&/p&&h2&&b&4. 如何成为一个合格的数据科学家?&/b&&/h2&&p&假设你已经有了基本的从业资格:即有相关领域的学位,掌握了数据分析和建模的基础能力,也懂得至少一门的分析语言(R或Python)和基本的数据库知识。下面的这些小建议可以帮助你在这条路上走的更远。&/p&&p&&b&4.1. 扎实的基本功&/b&&/p&&p&像我在另一个机器学习面试回答[4]中提到过的,保证对基本知识的了解(有基本的广度)是对自己工作的基本尊重。什么程度就算基本了解呢?以数据分析为例,我的感受是:&/p&&ul&&li&对基本的数据处理方法有所了解&/li&&li&对基本的分类器模型有所了解并有所使用(调包),大概知道什么情况使用什么算法较好&/li&&li&对基本的评估方法有所掌握,知道常见评估方法的优劣势&/li&&li&有基本的编程能力,能够独立的完成简单的数据分析项目&/li&&li&有基本的数据挖掘能力,可以对模型进行调参并归纳发现&/li&&/ul&&p&至于其他软实力,暂时按下不表。&/p&&p&&b&4.2. 从实践中培养分析能力&/b&&/p&&p&屠龙之技相信大家都有,我常常听别人说他已经刷完了X门在线课,熟读了X本经典书籍,甚至现代、优化、概率统计都又学了一遍,但为什么Kaggle上还是排名靠后或者工作中缺乏方向?&/p&&p&简单来说,上面提到的这些储备,甚至包括Kaggle经验,都属于屠龙之技。数据分析领域的陷阱随处可见,远不是几本书几篇论文就能讲得清楚。最好的方法只有从工作中实践,跟着你的师傅学习怎么分解项目,怎么提取价值。&/p&&p&我记忆很深的一个例子是:有一次我和我的老板为某国家铸币中心制定最优的纪念币定价方案,来最大化收益。但根据客户给我们的例子,我们的优化模型效果很差,误差极大。我的老板给了我几个建议:1. 把回归问题转为分类问题,牺牲一部分精度 2. 舍弃掉一部分密度很低的数据,对于高密度区域根据密度重建模型 3. 如果不行,对于高密度区域用有限混合模型(Finite Mixture Model)再做一次。采纳了老板的建议,最终我们对于百分之75%的纪念币做到了最佳的优化结果,为客户带来了价值。客户对于剩下25%无法预测表示理解,因为他们无法提供更多的市场数据。&/p&&p&那个时候的我总觉得不能舍弃数据,&b&但我的老板用行动告诉我客户最需要的是获得价值,而不是完美的模型。而这种感悟,我们只有在实际工作中才能获得&/b&。所以当你作为数据科学家开始工作时,请多想想如何产生价值,而不是一味地炫屠龙之技。&/p&&p&&b&4.3. 平衡技术与沟通能力&/b&&/p&&p&数据科学家的重要工作内容就是汇报和写报告,因而良好的&讲故事&(storytelling)能力非常重要。在学习的过程中,请不要把全部的重心放在技术能力上。技术能力可以保证你有东西可以说,但讲故事这种软实力可以保证你的辛苦没有白费,你的能力获得大家的认可。同时,这种沟通能力也可以让你在社交中更加如鱼得水,一改理工科给人留下的沉闷的印象。&b&轻沟通,重技术,是一种工程师思维,但这并不适用于数据科学家&/b&。&/p&&p&最后想不恰当的引用一句西方谚语:“欲戴王冠,必承其重。”在这个数据为王的时代里面,成为优秀的数据科学家不仅仅代表着高薪,还代表着我们对于这个时代的贡献与价值。然而道路阻且长,还有太多太多需要我们学习和完善的方向。&/p&&p&与君共勉:)&/p&&p&-------------------------------------------------------------------------------------&/p&&p&文中提到的其他回答: &/p&&p&[1] &a href=&/question//answer/& class=&internal&&阿萨姆:如何有效处理特征范围差异大且类型不一的数据?&/a&&/p&&p&[2] &a href=&/question//answer/& class=&internal&&阿萨姆:为什么四大里面总说要辞职的人一直都没走?&/a&&/p&&p&[3] &a href=&/p/& class=&internal&&带你读机器学习经典(二): An Introduction to Statistical Learning (Chapter 3.1 线性回归)&/a&&/p&&p&[4] &a href=&/question//answer/& class=&internal&&阿萨姆:面试官如何判断面试者的机器学习水平?&/a&&/p&&p&* 原提问是&国内互联网公司的数据科学家在做什么?&,因为提问时间教早且数据分析行业发展很快,我更新和补充了题目。&/p&
谢邀:)众所周知,数据科学是这几年才火起来的概念,而应运而生的数据科学家(data scientist)明显缺乏清晰的录取标准和工作内容。即使在2017年,数据科学家这个岗位的依然显得“既性感又暧昧”。我随手搜索了几家国内国外不同领域的数据科学家招聘广告(国内…
&p&关于这问题,我和团队已经帮不少企业部署了 大集群上(超过8000节点)。我就简单的回答。拿其中一个用例作为这个回答。关于这企业,为了保障隐私,我就不说了。它的大数据系统使用的是 Cloudera 的 CDH,有14000个节点。项目的最终目的是想要在同个集群上训练及运行深度学习。使用的深度学习框架是 Deeplearning4j (DL4J)和 DL4J 的系列工具。在我们的建议下,对方采购了40个 NVIDIA 的 TESLA P100 GPU。&/p&&p&项目的开始,对方帮我们预备了(隔离出来)100个节点作为试点。项目分为两个阶段:模型训练,模型运行(部署生产环境)。&/p&&br&&h2&建模(模型训练)&/h2&&p&以下是我们的模型训练过程:&/p&&br&&img src=&/v2-61ab1cde404c33aada4e1_b.png& data-rawwidth=&1232& data-rawheight=&552& class=&origin_image zh-lightbox-thumb& width=&1232& data-original=&/v2-61ab1cde404c33aada4e1_r.png&&&br&&p&这里我们简单的解释 Spark 和 CUDA 这两个重要的组件:&/p&&br&&p&&b&Apache Spark: &/b&作为一种开源的分布式运行时,Spark可以安排多个主机线程。它是Apache软件基金会去年最受欢迎的项目。Deeplearning4j仅把Spark作为集群的数据访问层,因为我们的计算需求很大,而Spark目前无法完全满足我们的速度和容量需求 。Spark基本上就是Hadoop生态系统(HDFS或Hadoop文件系统)的快速ETL(提取、转换、加载)或数据存储与访问工具。我们的目的是利用Hadoop的数据本地化机制,用本地计算来加快计算速度。Spark采用名为分布式弹性数据集(RDD)的构造来实现这种设计。RDD为处理集群上各个分区的数据提供了函数接口。&/p&&br&&p&&b&CUDA:&/b& cuDNN的全称是CUDA深度神经网络库,由GPU制造商NVIDIA推出。cuDNN是用于实现正向和反向卷积、池化、标准化以及激活层等标准深度学习例程的基元库。对于深度卷积网络(以及近来的循环网络)而言,cuDNN是速度最快的库之一。在Facebook的Soumith Chintala开展的图像处理对标中,cuDNN名列前茅。Deeplearning4j用Java本地接口包装cuDNN,方便Java用户使用。&/p&&p&DL4J自带内置Spark集成,用于处理在集群上开展的分布式神经网络定型。我们采用数据并行来将网络定型向外扩展至多台计算机,每个节点靠一个(或四个)GPU运行。我们用Spark访问数据。具体方法是在Spark RDD分区(存储于集群各处的不同数据部分)上进行定型。&/p&&p&我们将分布式文件系统与简单易用的接口相结合,让计算能到数据所在地点进行,而不是将数据转移至计算地点,如此我们既能以便于设置的方式开展分布式定型,又不需要自己从事大量 较为困难的工作。&/p&&br&&p&&b&部署的挑战&/b&&/p&&p&在部署当中,我们也面对到了一些问题,其中一个最大的挑战是:Java与C++之间的通信:Java不会让CUDA变慢吗?&/p&&p&这通常是会的。而在过程当中,我们也有了解决方案。我们通过在堆外进行运算来优化通信。我们采用了JavaCPP和libnd4j。&/p&&p&JavaCPP用Pointer类来实现简便易行的堆外运算(即数据不会进入垃圾回收器)。如此一来,我们将因为延迟及内存管理负担降低而获益;同时垃圾回收器会得到控制,其运行会更有针对性,而这也将带来益处。Apache Flink、Spark和Hbase等许多分布式系统框架和数据库都采用了这种方法。&/p&&p&libnd4j:Java不擅长线性代数运算。线性代数运算应当由C++来处理,如此便可以充分利用浮点运算的硬件加速。这也正是libnd4j的用途。 libnd4j 可以参考这里:&a href=&///?target=https%3A///deeplearning4j/libnd4j& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&deeplearning4j/libnd4j&i class=&icon-external&&&/i&&/a&&/p&&br&&p&&b&进行参数平均化的分布式深度学习&/b&&/p&&p&分布式神经网络定型的开展方法基本上有两种:数据并行和模型并行。&/p&&p&数据并行指将一个非常大的数据集细分为多个批次,然后把这些批次分发给在不同硬件上并行运行的模型,同时进行定型。&/p&&p&试想用一套百科全书来定型:每10页分为一批,将10个批次分发给10个模型进行定型,然后把定型得到的模型参数平均化,形成一个主模型,再将更新后的主模型权重推送至各个分布式模型。定型结束时,将所有的模型参数平均化,产生一个最终模型。&/p&&p&通过DL4J,我们使用了数据并行模式,利用Spark来安排集群中的分布式主机线程:&/p&&br&&img src=&/v2-3a844ef189a9fbc4713ce2_b.jpg& data-rawwidth=&960& data-rawheight=&676& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&/v2-3a844ef189a9fbc4713ce2_r.jpg&&&br&&h2&运行模型&/h2&&p&建立了模型,接下来就是如何运行这些模型。在集群上使用 DL4J运行模型很简单,Hadoop与DL4J都是使用Java实现。通过 kafka 接上数据源与DL4J 即可运行:&/p&&img src=&/v2-e0fde01afd821fc5bc3f3176_b.png& data-rawwidth=&1020& data-rawheight=&581& class=&origin_image zh-lightbox-thumb& width=&1020& data-original=&/v2-e0fde01afd821fc5bc3f3176_r.png&&&br&&br&&br&&p&希望以上对这个问题有帮助。 想学习深度学习的朋友们加入QQ交流群(查找 deeplearning4j):
关于这问题,我和团队已经帮不少企业部署了 大集群上(超过8000节点)。我就简单的回答。拿其中一个用例作为这个回答。关于这企业,为了保障隐私,我就不说了。它的大数据系统使用的是 Cloudera 的 CDH,有14000个节点。项目的最终目的是想要在同个集群上训…
第一个问题是,一个公司选择自己造轮子,是否能比现有的轮子更出色?&br&&br&tensorflow来自Google,&br&torch来自Facebook,&br&lightlda来自微软。&br&以及还有些被认为更好用的ml/dl框架包括caffe,keras,xgboost等等&br&扪心自问,是否有哪个公司敢拍胸脯保证有更好的技术实力,造出更好的轮子?&br&&br&&br&第二个问题是,是否有这样的人才。&br&一般而言,一个算法框架,或者一个并行式算法框架,需要对算法和工程都有着相当深入的理解。&br&同时设计出合适的并行式架构和符合算法本身诉求的架构,对人才的要求是相当高的,一般的公司不具备这样的人才储备。&br&&br&第三个问题是,有没有必要?&br&现有的框架不行,加机器行不行?&br&加机器便宜,还是自己造轮子便宜?&br&加机器撑到更好的框架出来,你又有更多机器可以用,何乐而不为?&br&反正就我目前看到的情况,公司就是每天加机器,每天加机器。&br&&br&很惭愧,就提出了三个问题,做了一点微小的工作,谢谢大家。
第一个问题是,一个公司选择自己造轮子,是否能比现有的轮子更出色? tensorflow来自Google, torch来自Facebook, lightlda来自微软。 以及还有些被认为更好用的ml/dl框架包括caffe,keras,xgboost等等 扪心自问,是否有哪个公司敢拍胸脯保证有更好的技术实…
已有帐号?
无法登录?
社交帐号登录}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信