您的位置:首页 > 编程语言 > Python开发

数据挖掘中SAS、python、R、spark、hadoop个人见解

2017-08-15 12:22 323 查看
觉得这文章写的挺好,就自己收录一下,无其他目的,转自[博客](http://blog.sina.com.cn/luoye900405"Title")
2014年做过几个比较大型的SAS项目,今年接触接触pandas,想在两者说说自己的一些看法,对于SAS能处理的大数据,之前在民生银行的是SAS服务器配置的是128g内存 16核cpu
 2t的硬盘空间,处理亿级别的数据还是毫无压力的,sas软件不得不说不只是一个单纯的统计软件,在数据挖掘这一块无可媲美的优势(非机器学习),既可以当数据库,里面封装了最成熟最实在的数据挖掘算法,比如Logistics、决策树、bp神经网络、svm、线性回归系列的的算法(岭回归、lass回归、稳健回归等)、时间序列、聚类系列算法等等,自打9.3还增加了最经典的random  forest;统计方面更是其立身之本,还可以跟shell、dos、数据库相交互,sas公司还是很强大,去年年底项目上用到了SAS 链接hadoop,sas里面可以直接抽取hive里面的数据,对于大型hbase表,可以先写mapreduce先做处理,再利用hive建立外部表,再抽取,甚至还可以写proc
 hadoop过程,还用了va模块,这是一个报表模块,基于web的,还有ecc(文本挖掘模块);甚至还在通用项目上写好多or代码,对于学运筹学的朋友的可以多学学or,里面的最优方法包括简单的线性规划用的是单纯兴发,对于高阶的凸函数,可以利用牛顿迭代法、快速下降法、共轭梯度牛法、高斯牛顿迭代法,里面都有相应的命令对应着优化方法;对于sas在医疗方法的应用,可能对统计会要求相对高一点,在金融行业风险的应用更是国际的是标准,比如说信用卡平方模型、操作风险等;在这里说比较幸运的去年抱着SAS公司的大腿做过操作风险高级计量法的项目,里面用到的各种分布拟合和蒙特卡洛模拟,是我目前我做过最难的一个项目;对于数据调度方面,sas也是能完美的解决,对于传统行业的企业需要做数据挖掘的,sas是不二之选,但是有它的缺点,第一就是价格过高,第二就是太笨重了,9.4的sas已经到58g全模块,不过能解决怎么多问题,确实已经是相当的给力,对大型的互联网行业应用到机器学习方面的东西,比如说人脸识别、图像识别、推荐算法、日志处理方面SAS并不擅长。

总有一些公司想做数据挖掘,又为了节省成本(一方面是人才方面的成本,一方面是sas的成本),不会买SAS,就会用到一些开源的软件好,好像R软件是首选,甚至是sql之类的,更是有些公司提到数据挖掘,就会想到大数据,就会想到hadoop,已经是无力吐槽,你的数据没那么大,何必要用到hadoop,而且hadoop处理小数据非常慢,没有普通的mysql、oracle、db2快,你没有上T的数据真没必要上hadoop、spark,想在看到相当的公司只会做统计,在不同的维度上做做统计,说的难听点分位数、方差分析是什么他们公司的数据分析人员都不知道。。。
好像吐槽有点多,说正题,pandas依赖与numpy、scipy、matplotlib,同时开源pandas和R在同等配置的情况下,pandas性能要强于R,群里面的哥们好像做过测试,128g内存8核cpu处理几千万数据在分钟之类,性能还是很棒的,可以跟sas媲美,R在这一块经常会出现内存饱满的现象,统计方面好像python没有R那么丰富,在python里面有stats模块能解决最基本的问题,不过更好的是有几个包pyper、rpy2包直接调用R能完美的解决python在统计方面的不足,在图像方面可以利用matplotlib库及其接口pylab包,甚至可以利用ggplot包,机器学习算法可以用sklearn,scipty自己写算法,做文本挖掘方面当然是用jieba和nltk进行组合,在web部署方面可以直接用java调用python,也可以用python自己部署web,数据库方面建议是用mongodb数据库,python在对性能上面比mysql要牛X,社交网络分析图方面可以networkx,在R里面好像做igraph,关于一些数据库的包也就不多提,python在爬虫方面还是很有优势的,urlib2、urllib、beatifulsoup、re模块能解决快速的爬虫问题,专业点的用scrapy;python里面的时间方面的主要依赖与time与datetime两个模块,像一些睡眠函数很棒。
R方面在小数据方面很完美,快速的数据清洗能力,快速的实现算法,快速的可视化,包比python要多也要规范,R很简单其语法,我研一的时候开始接触,断断续续三年有yu,ggplot2,stringr、reshape、plyr、Rmysql、RODBC、以及apply系列函数多写写,还有一些正则表达式,数据清洗方面很有用,学习R最好有统计知识,没有统计知识感觉额补补,R可以快速实现模型验证,新手可以练练手。
接下来说说hadoop、spark。
hadoop是一套生态系统,里面上面的hdfs、mapreduce、hbase表、hive表外部表、内部表的区别,hbase的mapreduce,好像其他的一些sqoop、flume都是一些开源的项目,用起来也比较简单,在这里吐槽下hql,真的是速度慢;主要说说spark,自打1.3以后支持Dataframe了,跟R和python里面的Dataframe很像,而且spark给的python接口跟的语言跟pandas库的语法很像,所以我还是比较看好sprak的,更适合做机器学习,而且scala编程简直就是python和java的杂交,集合面向对象和函数编程于一身的的语法,熟悉java和python的同学可以快速的掌握,笔者打算抽半个出来的时间可以好好学学。
数据库方面不想多说,个人觉得只要会写写存储过程,sql,理解表设计、权限问题等足够了,太复杂的工作留给dba,术业有专攻。
最后
想对学数据分析、数据挖掘的朋友说,统计、编程、算法、数据库是基本功夫,对业务理解、分析思维、沟通能力决定的你的收入,还有各位朋友趁早找个女朋友,否则都不知道努力工作是为了谁。。。。。。哈哈哈  over     轻喷。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐