我是学Java的,想从事大数据相关工作,该怎么规划学习?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/xiaokaiabcde/article/details/102532660

策略一

想从事大数据、海量数据处理相关的工作,如何自学打基础?

想做数据处理尤其是大数据量处理的相关工作必须兼具计算机科学基础和统计基础。

现在有一个高大上的职业叫数据科学家,有人说数据科学家就是一个比程序员更懂统计的统计学家,一个比统计学家更会编程的程序员。觉得说得很形象。

考虑到你还是在读本科生,有很多知识和课程还需要作为基础来学习和巩固。

基础中的基础:

线性代数,概率论

核心知识:

数理统计

预测模型

机器学习

计算机:

数学软件:强大矩阵运算和优化功能的matlab,专而精的mathematica。

语言:python(很流行的科学语言,潜力也很大,ipython这样交互式环境十分有利),fortran(强大的计算语言,充分优化的现成代码),R(相比于matlab,java,c,R是个高富帅)

可视化

这是数据分析各类语言使用度的图表,R占的比例还是相当高啊。想利用现在动辄TB级的数据大显身手,光靠excel可不够啊。你真的需要写很多代码…

统计:时间序列分析

应用回归(很简单,亦很实用)

多元统计分析

强烈推荐:Distance Education § Harvard University Extension School 和哈佛的学生一起学习Data Science。

如果你对大数据开发感兴趣,想系统学习大数据的话,可以加入大数据技术学习交流扣扣群:数字5221数字89307,私信管理员即可免费领取开发工具以及入门学习资料

课后问题的材料:http://cs109.org/

网络课程同样有丰富的资源:

机器学习类:

斯坦福大学:机器学习 coursera

Learning From Data

数据分析类:

约翰霍普金斯: Data Analysis Methods

杜克: Data Analysis and Statistical Inference

约翰霍普金斯: Computing for Data Analysis

MIT: The Analytics Edge

编程类:

莱斯大学: Introduction to Interactive Programming in Python

MIT: Introduction to Computer Science & Programming in Python

策略二

大数据有两个方向,一个是偏计算机的,另一个是偏经济的。你学过Java,所以你可以偏向计算机。

基础篇:

1. 读书《Introduction to Data Mining》,这本书很浅显易懂,没有复杂高深的公式,很合适入门的人。

另外可以用这本书做参考《Data Mining : Concepts and Techniques》。第二本比较厚,也多了一些数据仓库方面的知识。

如果对算法比较喜欢,可以再阅读《Introduction to Machine Learning》。

当然,还有《机器学习:实用案例解析》

2. 实现经典算法。有几个部分:a. 关联规则挖掘 (Apriori, FPTree, etc.)b. 分类 (C4.5, KNN, Logistic Regression, SVM, etc.)c. 聚类 (Kmeans, DBScan, Spectral Clustering, etc.)d. 降维 (PCA, LDA, etc.)e. 推荐系统 (基于内容的推荐,协同过滤,如矩阵分解等)然后在公开数据集上测试,看实现的效果。可以在下面的网站找到大量的公开数据集:UCI Machine Learning Repository/

3. 熟悉几个开源的工具: Weka (用于上手); LibSVM, scikit-learn, Shogun

4. 到 Kaggle: Go from Big Data to Big Analytics/ 上参加几个101的比赛,学会如何将一个问题抽象成模型,并从原始数据中构建有效的特征 (Feature Engineering).

到这一步的话基本几个国内的大公司都会给你面试的机会。

进阶篇:

1. 读书,下面几部都是大部头,但学完进步非常大。a.《Pattern Recognition and Machine Learning》b.《The Elements of Statistical Learning》c.《Machine Learning: A Probabilistic Perspective》第一本比较偏Bayesian;第二本比较偏Frequentist;第三本在两者之间,但我觉得跟第一本差不多,不过加了不少新内容。当然除了这几本大而全的,还有很多介绍不同领域的书,例如《Boosting Foundations and Algorithms》,《Probabilistic Graphical Models Principles and Techniques》;以及理论一些的《Foundations of Machine Learning》,《Optimization for Machine Learning》等等。这些书的课后习题也非常有用,做了才会在自己写Paper的时候推公式。

2. 读论文。包括几个相关会议:KDD,ICML,NIPS,IJCAI,AAAI,WWW,SIGIR,ICDM;以及几个相关的期刊:TKDD,TKDE,JMLR,PAMI等。跟踪新技术跟新的热点问题。当然,如果做相关research,这一步是必须的。例如我们组的风格就是上半年读Paper,暑假找问题,秋天做实验,春节左右写/投论文。

3. 跟踪热点问题。例如最近几年的Recommendation System,Social Network,Behavior Targeting等等,很多公司的业务都会涉及这些方面。以及一些热点技术,例如现在很火的Deep Learning。

4. 学习大规模并行计算的技术,例如MapReduce、MPI,GPU Computing。基本每个大公司都会用到这些技术,因为现实的数据量非常大,基本都是在计算集群上实现的。

5. 参加实际的数据挖掘的竞赛,例如KDDCUP,或 Kaggle: Go from Big Data to Big Analytics/ 上面的竞赛。这个过程会训练你如何在一个短的时间内解决一个实际的问题,并熟悉整个数据挖掘项目的全过程。

6. 参与一个开源项目,如上面提到的Shogun或scikit-learn还有Apache的Mahout,或为一些流行算法提供更加有效快速的实现,例如实现一个Map/Reduce平台下的SVM。这也是锻炼Coding的能力。

策略三

1. 自己装个小集群跑hadoop/hive,可以到cloudera网站上下现成的打包虚拟机。看看hadoop in action. 这本书比权威指南容易懂很多。2. 装个cassandra什么的玩玩,在上面架个小项目,比如留言板什么的。。3. 读一些著名的paper,nosql的或者mapreduce。4. 看看apache hadoop家族的其他几个项目,比如zookeeper,pig,了解一下生态圈到这里为止你大概有个概念,知道bigdata怎么回事了找个开源项目,看看ticket list,看看能不能自己修。。能的话看看能不能混进项目组个人觉得,大数据要靠实践多一点。在真的上百上千节点的cluster上跑hadoop和自己虚拟机架的完全不同。cluster上跑各种奇葩的事情单机都是碰不到的。。就好比dba靠读书考证很难牛屄一样。所以最终还是要找个公司实战。。不过如果上面几个都做到的花,基本上应聘大数据公司问题不大了。

小编建议如果想深入学习,没有什么比找个真的做相关行业的公司来的靠谱了。工程的东西,尤其是这样新鲜出炉的工程领域,光看书看资料是没有任何用处的,你很难了解每个技术背后的关键,也很难了解实践中会遇到的问题。你深入看一个项目,就会发现,其实用得技术没什么新鲜深奥的,比如你看Hive或者Presto,会发现用到的技术,在Query引擎领域只能算是入门级的知识,传统数据库厂商都用了几十年了。真正好玩的是,每个Feature设计是如何切入大数据这个背景的。

所以说,没有比找一家公司真的干一段时间更能让你了解大数据的了。

猜你喜欢

转载自blog.csdn.net/xiaokaiabcde/article/details/102532660
今日推荐