欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

为什么有了SAS,WEKA等功能强大的数据分析挖掘软件,还需要R,PYTHON?

程序员文章站 2022-05-19 20:57:42
...

回复内容:

为什么有了R和python,还需要SAS和WEKA。。。 说得好像SAS、SPSS不要钱似的……

说得好像SAS、SPSS除了做数据分析还可以做界面做服务分发出去似的……

说得好像Python只能做数据分析似的……

说得好像Python就没有功能类似WEKA的模块似的……

说得好像R没啥库可以用似的……

说得好像做数据分析不用SAS之类就是耍流氓似的……

……

算了吐槽结束…… 我就不加入大家吐槽的大军了。
我觉得各有所长吧。
首先,Python的自然语言式的代码真的很适合维护和阅读(那群科学家又不是程序猿,你让他们看什么C系列,Java就跟让他们证明哥德巴赫猜想一样),但是掣肘于其无比慢的速度(C,Fortran扩展大法好)。
其次,Python作为一种通用的,高级语言,基于Python众多的第三方库和程序API,在和外部环境进行数据交换的时候具有很大的优势,举个例子,许许多多的CAE软件都有Python接口,这个大大提高了自动化效率。
最后,Python作一个开源的语言,相比于MATLAB,真的是很便宜(虽然MATLAB具有很多很神奇的优化),而且Python也被国外许许多多研究机构所使用。这也是Python在科学计算领域独占一席的原因。

当然,Python也有很多槽点,比如Python没有仿真库,计算速度还是不够快,但是作为典型的胶水语言,Python做的已经很不错了。 SAS员工,数据管理部门,利益相关啊。

我猜你们说的是SAS Base,和在SAS Base或者WebStudio上运行的proc

宣传啊,还是不够。

SAS Base在整个产品线里挺核心的,但是,随便一个方案里面大概会有几十倍其他的应用。

大型企业里面不会有人把数据都规规矩矩整理好了放到你面前请您跑PROC的,一般情况是:

要分析用户地址,年龄,性别分布:

30个数据源,异构,比如其中有10个DB2, 两个Oracle,1个Excel,7个txt,其中Excel是个Web连接,txt有三个在共享磁盘上,4个在DVD上,正走EMS往中心寄。

你开开心心打开这30个数据源,TMD每个表的结构都不一样,还有用拼音做列名的,还有fu建人用错误的拼音做列名的。

你给每个数据源的owner打电话要来表定义,仔细探查每个表,找出所有的地址列,定义了一个复杂的job来做数据导入。

job失败,提示年龄插入失败,一看,Excel里面用全角写的年龄,甚至还有汉字。
job失败,性别插入失败,G/B/1/0/男/女/F/M不是true/false。
job失败,数据库连接密码过期

在心里问候了一万遍数据源后,拿到了抽取后的数据,先抽样看看大致分布。

60%的性别是missing,年龄的中值是0


重新设定Job,根据用户ID进行性别估计,年龄估计。抽样看分布。

地址90% 都是unique

再问候一万遍数据源,找算法切分地址,做正规化,Beijing/首都/帝都/北平/燕京一律整成北京,按照城市/区/街道/门牌号重整输出。

这次抽样终于差不多符合直觉了。

开始调整各种参数来观察数据,每次一个小时。一天过去了。

开始出图,出报告,给老板看。

老板说这个和我的感觉不太一样,为什么?这个阈值为什么设定这么高,我要看低的。

调整参数观察数据,又一天,出报告。老板开会去了。老板回来了,我前几天说了要调低阈值了吗?调回来。

...

老板这次满意了,好,我们可以根据这份报告调整促销规则了,你把这个报告给销售讲下。

销售表示给你的数据是两个月前的,这个月有很大变化,你重新出个报告呗?

ETL,SAS DM会负责,有DM全系产品提供对数据源元数据的管理,explore;有FederationServer以逻辑视图直接提供对异构数据库的透视功能。QKB直接根据具体领域,具体年份,具体国家,具体语言,比如汉语-新加坡-2015年上半年-客户联系资料进行数据清洗和质量评估

SAS VA,提供可视化的秒级的分析相应速度,支持Web/Mobile,可交互,可钻取。

以上是我接触过的,还有很多其他的例子,比如专门针对银行,保险业的用户管理系统,反欺诈系统,反洗钱,企业内容管理等。

还有刚才刚公布的Viya,新一代的cloud-ready系统。

个人感觉SAS和R的区别在于工业级生产和实验室级生产,真实领域的数据,清洗过程可能是最复杂和最消耗时间和人力的,再牵扯到各种模型的存储,版本化(这个我做的!是所有做过里面被接受最广泛的!)等等,SAS对企业级的支持要很好多,而且你们考虑过人沙特土豪的界面是什么样的?考虑到美国*508法案对jQuery库选型的影响?所以对我们最极端的测试用户大概就是一个说阿拉伯语的只有一根手指的弱视数据科学家在美国*用SAS系统进行工作。我上个月刚做完这培训来在产品里提供支持... 这些软件都是标准产品,但是很多时候的你的需求并不是标准的。 标准需求用标准产品解决,不标准需求就需要开发来解决。 一切都是基于解决问题,你应该相信,存在就是合理,没有为什么, 就是为了解决问题。 sas和weka没有的方法你自己实现一个看下。哪怕就算是有,但是哪怕只是改一点,sas iml/macro什么的都会教做人-对了,sas还是个黑箱子,用的都是黑科技,内部代码算法是看不到的;weka在你说的两个语言里都有port,所以都可以算他们的子集。数据采集清洗分析报告这些步骤在r/python等语言里可以一起做;sas部分可以(因为很多新模型根本没有proc),weka还是算了吧。
然后,你让scala scheme julia这些怎么面对你的问题…… 体主给我买个sas,我就卸载r 首先各有优势和缺点!
针对你的问题,说点后两者的优势:当你发现SAS EM竟然没有随机森林算法的时候就知道R做挖掘真的是很好用;当你在学术或者其它不需要面对很大数据量的工作时,发现SAS能做的R都可以做,干嘛要花这么多钱去买这么一个占硬盘的软件?
等你用过Python的pandas sklearn nltk等库,或者当你用Python实现过算法的时候,你会发现Python真的比前面那些工具爽多了! 这个问题反过来问更合理,因为后面的组合明显要强于前面的组合 俺一般拿SAS当SQL使,把数据洗成想要的结构或者合适的大小(比如小于1GB),然后再扔到R/MATLAB/python中各取所需。小于100GB的数据SAS单机版本地处理无压力,大于100gb的话扔到公司sever上跑也OK。俺现在接触的数据大小很少有超过100GB的。上一份工作接触得数据也基本没有超过200GB的。

虽然通用的模型SAS基本都有proc,但难免还是会碰到一些奇技淫巧的模型。在SAS中写macro造*开发算法实在过于反人类。于是,调用R做一个调包帝就成了一种偷懒捷径。如果SAS中没有相应的模型proc或者macro,我估计matlab或者python中也不会有类似的函数或者库。如果连R也没有相应的包,那么就只有自己用matlab或者python或者c++造*了吧。

就回测交易策略这种涉及大量矩阵化向量化操作或者for loop的工作,当然首推matlab或者Python.不过俺发现Python的读入中文时的乱码问题一直得不到很好解决,每次都是老同志遇到新问题。所以以后回测的活就扔给matlab干了。至于python嘛,就回归其码农工具的本质,向用python的交易员学习,试着提高用Python封装CTP的姿势水平。

最后,SAS画图挺丑的,ggplot2是王道