0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样成为一名真正的数据工程师

工程师人生 来源:工程师吴畏 2019-04-02 15:59 次阅读

一。入门:高屋建瓴

数据分析的坑很大,一开始走上这条路,就要明确基本的方向,依托于核心的思想,不然只会越走越偏,最后觉得山太高水太深,不了了之。

1.数据与数据分析

数据其实就是对事物特征的定性指称以及量化描述,比如一个人的身份证号,年龄,收入,身高等就构成了一组数据:{id:001,age:45,income:10000,height:176}——如果把很多人的这些数据汇成表,便构成了“ 结构化 ”(也就是比较规整一致)的“ 数据空间 ”。

但是呢,有一些或者大部分的数据都不是规整的,也就是分布比较杂乱或者不是按照我们想要的那样分布的(比如一个网页中的文本数据分布),称之为“ 非结构化 ”的 数据空间 。

数据分析的本质是什么?那就是——将这些结构化或者非结构化的数据, 映射 到指定格式的数据空间里面,然后进行分析—— 数据分析的基础就是数据空间的映射 。

这句话说的比较绕,但是却非常深刻,它告诉我们,数据分析的一个基础(在实践中也是最重要)的一件事情就是寻找合适的数据空间映射方案——某种程度上就是所谓的 数据清洗 。

2.对于一些工具的看法

沿袭上文,工具则可以分为两种,一是基础性的excel,spss,sas等数据分析软件以及许多数据库管理工具, 它们主要处理的是结构化的数据 ,也就是给你把数据弄成了表的规整数据(当然,这些数据很多时候也需要清洗,不过已经不涉及数据空间映射这个问题了);二是编程语言,包括python,R,Java,Ruby等, 这些语言工具主要是处理数据空间映射和清洗工作的 ,其中,比较常用的是python和R,前者由于其可扩充性,已经在大多数情况下优于后者了。

3.学习:从天而降

所谓“从天而降”指的是从一个比较高的地方下降来学习的方法,好比是拿着一张总体的地图去探索数据分析与挖掘的世界。推荐阅读:《 数据科学实战 》。

其次,请注意一点:python学习,对于 没有任何计算机基础 的人来说, 基本上是开头容易、越往后面越难! (python一开始的类似自然语言的结构很友好,但你到了函数与面向对象的学习的时候,还是必须明确引用变量的变化(也就是数据如何在内存中流动)以及作用域的动态变化等对入门者不友好的问题。)

在这种情况下,《head first python》根本不适合,不要用它学习python!

我的建议是,花时间学习一下计算机的基本原理,然后是C语言,Java等,然后再学python,不然你到后面完全是知其然而不知其所以然!

推荐阅读:《 计算机科学概论(第11版 》

以及:《 疯狂Java讲义 》(这本书虽然讲的是java,但对数据在内存中的流转也有讲,可以作为参考,理解程序的运行。)

最后才是:《 Python基础教程(第2版•修订版) 》

然后可以看看入门的统计学教材:《 深入浅出统计学 》(很快就能看完,我当时半天多一点就看完了。)

以及入门与深入理解数据库原理:《 MySQL必知必会 》+《 数据库系统概念 》

有了技术基础了,再看看《 R语言编程艺术 》

另外,入门者不要选择python3.x,选择python2.7吧。为啥?因为很多重要的模块比如pandas还有网上的许多资料现在还是最多支持到2.7的,你选3.X对于入门那是舍近求远。

最后,可以使用《 利用Python进行数据分析 》将所有知识串接起来,感受pandas以及scipy,numpy中的数据计算 是如何体现数据空间映射这个深刻概念的。

二。中阶:理论

中阶主要是理论学习以及一些比较复杂的应用操作。

1.理论基础:书籍

良好的数学基础是进一步学习的支撑条件。

以下是推荐阅读的书目:

1.概率论与数理统计:《 概率论与数理统计 》,进一步学习概率与统计;

2.高等代数:《 高等代数简明教程(上册) 》,“数据空间的映射”的思想就来自于高等代数;

3.最优化:《 最优化理论与方法 》,参考书,中阶不要细读。

4.数据挖掘:《 数据挖掘导论 》,偏数学,《 数据挖掘 》,偏结构化的数据库;

5.信息检索领域入门:《 信息检索导论 》

6.统计学习理论快速俯瞰:《 统计学习方法 》

7.实战之于python:《 集体智慧编程 》+《 机器学习实战 》

8.实战之于Mahout平台:《 Mahout实战 》

2.实战:利用数据库与数据api,实战学习

(1)淘宝上以及很多百度提供的一些 数据库 : API Store_为开发者提供最全面的API服务等,都可以下载到数据进行处理,有一些经典的研究数据库,主要是一些大学构建的,也可以用来训练模型;

(2)。学习写 网络爬虫 ,基于python,爬取文本数据进行分析,其中,文本数据分析可能涉及到中文的自然语言处理,比较麻烦,有一些模块可以直接使用(比如jieba),如果觉得不理想,可以尝试爬取英文页面。另:写爬虫必须首先理解网页的数据空间,建议阅读:《 Head First HTML与CSS、XHTML(中文版) 》;

(3)。苦练 清洗数据 的基本功——因为大多数数据工程师的主要工作都在于此,并且在清洗的过程中,深刻理解数据空间的映射。另,清洗数据必备技能:正则表达式。建议阅读:《 正则表达式必知必会 》;

(4)。 混合编程 与 数据可视化 :可以尝试以python为主的混合编程(python+R)以及数据可视化,建议阅读《 ggplot2 》

三。高阶:回归、远行、优化与万法归宗

1.回归

总的来说,数据挖掘、机器学习相关的工作,看着很新,其实只是很久之前的理论知识的应用罢了,在实战领域,并没有多少新的东西。

所以,从技术上讲,我们需要回归到那些最内核的东西。

什么是最内核的东西,那就是: 算法与数据结构 。

知乎上有一些言论,说算法与数据结构一般情况下程序员是用不到的,这句话对于一般的写系统的程序员确实受用,但是对机器学习、数据挖掘的程序员,却恰恰相反:我们的主要工作就是在搞算法和数据结构。

比如贝叶斯网络、人工神经网络,本质上其实还是基于图的算法的应用罢了。

推荐一本书,比《算法导论》好读:《 算法(第4版) 》

2.远行

所谓远行,就是从学习的象牙塔里面走出来,走向实用或者特殊领域,比如: 金融量化分析 。

传统的投资经理,做的专业投资,本质上根根结底是什么?那就是两个字: 分散 。

所谓分散,说大白话就是“把鸡蛋放在多个篮子里面”,但至于怎么放,放多少,都是非常复杂的,传统的手段包括建立 马科维兹模型 与 指数模型 来作为分散的参考模型。

机器学习也是可以来做分散的,并且,知名的文艺复兴技术公司做的“最大熵模型”比传统的那两大模型还要好,还能够持续跑赢大盘。

如果你对机器学习、数据挖掘相关理论有深刻理解的话,你会发现一个事实: 分散本质上就是在寻找有限条件下的最大组合熵! 最大熵模型之所以有效就是因为它使用了超级大的数据量作为基准,得到了相对于传统分散模型更高的熵。

这个要讲很多,确实也比较高阶,我就点到为止,将来再细谈。

3.优化

优化主要是对python执行效率的优化——要知道,很多时候,量化分析对时间的要求非常严格,差之毫厘,损失成百上千万。

这个时候,就需要了解如何优化python。

知道吗?python是用C写出来的, 如果你优化的好,你的python可能比C还要快!

优化问题本质上是一个局部最优与全局最优权衡的问题,有空细讲。

优化的另外一个问题是 数值计算 ,包括矩阵的分块计算、并行计算,MapReduce对大量数据的处理等,这也是比较复杂的,有空细讲。

4.万法归宗:信息论

数据处理的的最高境界,其实是对信息论的深刻理解。

算法优化,大量问题都是把指数问题变为对数问题,其实根本原理是信息论;

量化分析,买入卖出的博弈,每一次交易如何暴露出信息的?

投资组合,如何在限制条件内产生最大熵?

文本挖掘、数据压缩,隐马尔科夫链,如何用最少的信息映射原空间?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 工程师
    +关注

    关注

    59

    文章

    1571

    浏览量

    68555
收藏 人收藏

    评论

    相关推荐

    为什么嵌入式驱动开发工程师可以拿高薪?

    技术领域具有不可替代的地位。 成为一名优秀的嵌入式驱动工程师只需要深耕以下几点: 1)坚实的技术基础: 首先,需要有坚实的基础,包括计算机组成原理、微处理器与微控制器架构以及电路设计与硬件接口知识
    发表于 01-07 16:56

    嵌入式软件工程师如何提升自己?

    嵌入式软件工程师如何提升自己? 作为一名嵌入式软件工程师,在这个充满机遇和挑战的领域里,如何提升自己显得非常重要,它决定了你未来的发展方向和成就。接下来,我们起探讨
    发表于 06-12 11:20

    索尼诚邀软件工程师参与PS免费手游平台设计

    据悉,近日,澳大利亚知名媒体TweakTown发现,索尼互动娱乐正在为其旗下的PlayStation Studios Mobile招募一名资深的软件工程师,负责设计PlayStation的免费手机游戏平台。
    的头像 发表于 05-23 17:08 739次阅读

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试题

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    个电源工程师的成长路径

    即将走马上任电源工程师这个岗位,请问各位大佬,这个岗位的职业路径般是怎样的?
    发表于 04-08 14:19

    如何成为一名嵌入式C语言高手?

    嵌入式C语言领域获得突出的技能和能力。 、打下坚实的基础要成为一名嵌入式C语言高手,首先需要打下坚实的基础。掌握C语言的基本语法、数据类型、运算符、控制流程和函数等概念是必不可少的。
    发表于 04-07 16:03

    如何成为一名嵌入式C语言高手?

    嵌入式C语言领域获得突出的技能和能力。 、打下坚实的基础要成为一名嵌入式C语言高手,首先需要打下坚实的基础。掌握C语言的基本语法、数据类型、运算符、控制流程和函数等概念是必不可少的。
    发表于 03-25 14:12

    单片机如何通过代码控制硬件:一名工程师的分享

    今天跟大家聊聊单片机是怎样通过代码来操控硬件的。作为一名单片机工程师,我们平时的工作就像是给单片机编写“指令集”,让它按照我们的意图去驱动各种硬件设备。
    的头像 发表于 03-06 14:46 1538次阅读
    单片机如何通过代码控制硬件:<b class='flag-5'>一名</b><b class='flag-5'>工程师</b>的分享

    如何搞崩个硬件工程师心态?试试对ta说这几句

    硬件工程师
    扬兴科技
    发布于 :2024年02月20日 18:05:49

    优秀电源工程师需要哪些必备技能?

    就带大家细数下优秀电源工程师具备的那些技能。、新手必备课程成为一名电源高手需要扎实的理论基础,涉及电路原理、语言编程和控制理论等多个学科
    发表于 01-29 11:29