写点什么

打破认知:程序设计 = 算法 + 数据结构?

  • 2019-01-08
  • 本文字数:4280 字

    阅读完需:约 14 分钟

打破认知:程序设计=算法+数据结构?

大家好,我是陈旸,也是极客时间《数据分析实战 45 讲》专栏作者。很荣幸接到极客时间的邀请,来到极客 Live 和大家分享关于“数据分析”的话题。这次分享会共分为五部分,来为大家答疑解惑。


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00

    我们为什么要学数据分析?

    学习新的数据结构和新的数据算法将会是新时代我们的使命。

    很多写程序的人都听说过一个公式:程序设计=算法+数据结构,我也相信很多人认为算法是编程里的基础。


    在我看来,这个公式应该过时了。从我 10 岁开始学编程时,我就被灌输了这个认知。所以,那时候我们学二叉树,学队列,学一些数组的表达方式,包括一些快速排序、排序的方法等等。


    而现在,很多的数据结构,包括我们排序的算法,都已经不需要我们去编写代码了。我们直接调用一行命令,通过封装的方式,就可以拿来即用。


    我再举个简单例子,在我很小的时候,有一门课叫汇编语言。它非常基础,比如,把一个字母 A 打到这个显示屏里面分多少步?它分了 32 个步骤,是如何从计分器里面读出去,最后让显示器里面显示出来。这是一个很简单的事,现在大家已经不需要关注到汇编语言的底层,很多的语言越来越高级,我们的知识已经封装的越来越完善。


    我觉得在新的时代里面,如何去更新我们新的数据结构和新的数据算法,这是我们的使命。再给大家一个数据,我们近三年,所有互联网数据的总和等于 4 万年数据的总和。知识处于一个非常爆炸的过程,而且我们相信,在未来的三年,它整个的总和又是以前的双倍。


    在这个海量的数据时代里面,它需要更加新型的存储的方式,举个例子,我们现在会接触到矩阵的运算,包括这些大型矩阵之间的向量表达方式和特征的抽取,包括以前我们可能会关注到一些快速排序等一系列的算法。我们现在最主要关心的是,如何从这些数据里面找出关联关系出来,如何进行分类,如何进行聚类?


    这个是在新的一个时代里面的算法的数据结构和基础的能力,也是一个非常重要的核心,也是这个市场上一个新的需求。我专门做了一个关于“程序员薪资情况”的调查,我发现在招数据分析,尤其是算法数据挖掘工程师,他们的薪资普遍比其他的工程师薪资要高。


    为什么?一方面是企业及整个市场的需求都很大,以数据挖掘为例,三到五万的月薪并不奇怪,甚至更高的月薪都会存在;另一方面市场缺口也很大,在 2020 年,就是一年之后,整个数据人才的需求量是现在的两倍,而且它能创造出来更多的价值。


    总结而言,我们是不是需要更新我们 20 年前的认知?那一阵学的算法和数据结构基础,是否能让我们更跟上时代的步伐?


    这也是我开设《数据分析实战 45讲》专栏的一个初衷,想让大家通过这个专栏的学习,掌握到新的数据结构和新的算法的能力。

    没有编程基础,也能学好数据分析

    请,不要灰心。

    有编程基础和没有编程基础是相对的,就算你有编程基础,但你未必有数据编程的能力。我想说的是,如果你没有编程基础,也不要灰心。因为数据分析是一个很新的领域,这几年也是非常的火爆,而且出现了很多新的理论。可能在 5 年前,有些理论是之前没有的。所以,无论是新人还是老人,起跑线都是很接近的。请,你不要灰心。


    第二方面,我在这个专栏着重重强调的学习方法是 MAS 学习方法。


    M-Multi-Dimension:想要掌握一个事物,就要从多个角度去认识它。也就是说要学习数据分析,你需要从不同的纬度跟人家去打交道,不管是知识概念的纬度,从工具的纬度,还是从实战的纬度,你都需要与其建立起联系。


    A-Ask:不懂就问,程序员大多都很羞涩,突破这一点,不懂就问最重要。以往如果我们没有专栏可以一对一去互动,或者答疑解惑,你可能通过网上去找答案,但是网上的答案有的时候不一定是正确的,或者你不一定能找到答案,但是通过专栏留言、社群答疑,我可以帮你来去进行解答,这是非常好的方法。(进入数据分析社群,可加专栏运营 Monica 微信:imonica,了解入群规则。)


    S-Sharing:最好的学习就是分享。用自己的语言讲出来,是对知识的进一步梳理。我看到专栏里的很多同学,现在逐渐养成分享的习惯。当你把这个内容分享给其它人的时候,这个内容才是你自己的,而不是老师的。我非常鼓励大家去写笔记,也有好多人把自己整理的内容放到幕布或者博客上面,这是非常好的方法。



    其中一个用户总结的思维导图,很赞!


    我总结以下两点:


    1、如果你没有编程的基础,没有关系,你可以跟上我的专栏,你跟大家的速度是一样的,甚至你会比别人跑得更快;


    2、另外,掌握好的学习方法真的非常重要,MAS 是个很不错的学习方法。这也是我专栏想达到的一个目的,授人以鱼不如授人以渔。

    即使数学高考考 9 分,也不妨碍你学习数据分析

    高考是封闭环境下的能力测试,考的是你的计算能力

    00:00 / 00:00
      1.0x
      • 3.0x
      • 2.5x
      • 2.0x
      • 1.5x
      • 1.25x
      • 1.0x
      • 0.75x
      • 0.5x
      网页全屏
      全屏
      00:00


      哈哈,数学高考考 9 分也是非常了不起的一件事。我是这么看的,高考的是计算能力。举个例子,让你去求一个排列组式。我们知道,在实际的工作中,我们做的不是闭卷答案,在开卷环境下,你是可以用计算器或者提问的方式去解决问题。就是说,你现在的工作环境和以前上学的考试是两种完全不同的状态。工作上,最重要的方法是:“不懂就问“,你求助于别人,这是最省时省力的解决问题的方法。


      另一方面,有些人跟我说,他的计算能力、数学能力都比较差。其实,这是有解的。在我的专栏里,我会让你去了解一些概念,你知道该怎么去用就好了,你完全没有必要去做推导。你只需要知道,我要用哪个公式,或者说我要用哪个算法,这个算法可能抽样出来就是一行代码,如果是可视化工具,根本就不用代码。


      总而言之,即使你的数学基础不好,不妨碍你去学这个专栏,掌握它的概念以及方法。


      很多人会望而却步,觉得中间是否需要一些数学的推导和运用。其实,大家应该从白话的角度去理解这个专栏,因为专栏里会有很多案例、比喻等等,会让大家更容易去理解概念,比如什么叫数据挖掘,什么叫分类,什么叫聚类,什么叫关联分析。


      打个比方,你同时认识了两个漂亮女孩,你要追哪一个成功概率比较高?这就可以用到数据分析的一些原理,比如,你想知道这个漂亮女孩,她到底是御女还是萝莉?这就会用到分类的算法;你认识女孩的渠道比较多,比说朋友会介绍,或者网上认识等等,就会要用数据集成的知识,因为不同的渠道你需要汇总到同一个渠道里面。不同朋友推荐同一个女孩,这时候就要做数据清洗了。


      再举个例子,假设你认识的女孩数量不只两个,假设有五万个,这时候决策该怎么做?那你要把这些女孩进行分组,把五万个人划分成五个组,每个组采用相同的决策,这叫聚类。聚类的方式是把一个个纬度的目标换成一个纬度,由原来的五万人变成了五个组,就大大提升了效率,采用一种降纬的思维。最后,这个数据它产生什么样的结果,你就需要采用数据可视化的方式帮你实现:我到底得出什么样的规律,或者我最后采用什么样的决策。


      通过这个例子,我们可以看习数据挖掘对我们实际的帮助是很大的,它可以帮助你解决实际中遇到的一些问题,抽象出来,利用数据挖掘、清洗等方式去解决。

      数据分析学到什么程度,能找到工作?

      00:00 / 00:00
        1.0x
        • 3.0x
        • 2.5x
        • 2.0x
        • 1.5x
        • 1.25x
        • 1.0x
        • 0.75x
        • 0.5x
        网页全屏
        全屏
        00:00


        我把它分成三个阶段:初级,中级和高级。


        初级:你需要了解基本的概念,会使用简单的工具。比如说你要做数据采集的话,你不会 Python 没有关系,我会教你八爪鱼怎么使。因为它是一个可视化的软件,拿来即用。另外,我也会讲解一些软件的使用,如果你也能学会用一些软件的话,也可以拿到很高的薪水。


        中级:需要自己动手去写一些代码。在这个专栏里,我会主推 Python 去做数据分析,比如分类的算法、聚类的算法、关联分析的算法,包括数据预测。而一个算法需要一个好的语来实现言而,Python 是非常直接的语言,会让你得到更多可视化的结果。


        高级:熟练度,还有就是效率上的提升。我举个例子,我之前做过深度学习,最开始是去调试一个图像识别算法过程,需要两到三周的时间。后来,我有了更多的经验之后,我知道哪些参数该进行优化,且这个参数在什么样的情况下可以采用什么样的收敛模型,中间的层次该怎么去调。之前需要花三周时间去完成的事情,就被缩短为三天,整个工作效率提升了 10 倍。


        在我的专栏里,我特意设置了一个专属题库。为什么我要做题库呐?因为,我觉得知识要被消化吸收最快的方法,就是练习,不断地反复练习。只有练习了,把知识点融会贯通,知识才会是你的。这些题库,我也都做会讲解。


        我在专属题库里列了十多个项目,都是非常实战的项目。多练习、多实战,你完全可以把这些项目写到自己的简历里,包括数据的描述及解题过程,最好用自己的话去做总结,并用博客的方式去呈现。这是非常棒的经历。

        Q&A

        问:本人已经工作 7 年了,做运维开发也有 5 年之多,主流语言也是 Python,个人对大数据开发,数据分析,数据挖掘之类的工作也特别感兴趣,所以毫不犹豫就买了老师的课程。之前空闲之余也看过相关数据挖掘的知识,比如 svm xgboot 手写体之类的。但找类似的工作突然发现没有底气,原因是没有数据挖掘相关的工作经验,我怕以后转行越来越困难,再加上一旦转行没有我现在的工资高,想想又放弃了,又不甘心,我该如何抉择?


        答:首先这是一个先有鸡,还是先有蛋的问题。


        我想你是认可数据挖掘,也对数据分析很有兴趣。最着急的是简历中没有相关的经验。


        确实很多公司很看重背景,而且你工作 7 年,又不能从初级职位开始,即使你对数据分析很感兴趣。


        我建议你还是以丰富简历为目标,在简历中要想办法增加 数据分析,数据挖掘的比例。


        我的专栏里会有 10+个项目,当然这些项目都不是太复杂。我建议你把它都做一遍,然后用自己的语言做项目总结,这些可以放到简历中。作为数据分析,数据挖掘的经验


        没有其他的捷径,如果你在这方面的简历不丰富 HR 很难给你一个满意的薪水。所以你就需要在工作之外,自己来训练,整理这些项目笔记。我专栏中的很多数据都来自于 Kaggle,这里有很多实战的项目,你如果完成了我的专栏,还想进一步丰富项目经验,可以做更多 Kaggle 项目。同样采用我的方式,把它作为项目背景,自己写项目总结,作为项目经验。


        问:数据挖掘预测部分会有哪些内容?


        答:数据挖掘,我列了 10 大算法,都是最经典的算法,包括:决策树 C4.5,CART,朴素贝叶斯、SVM、KNN、K-means、EM 聚类、Apriori、PageRank、Adaboost。这些主要是分类、聚类、关联分析、连接分析的算法。当然现在深度学习很火,后面如果大家有需求的话,可以在算法介绍完之后,加餐个深度学习。不过这里最好要有 GPU 运行环境了,要不运行起来会有些吃力。


        问:推荐一些数据分析的书


        答:思维:《思维简史:从丛林到宇宙》;


        数据处理:《数据挖掘:概念与技术》;《Pentaho Kettle 解决方案》;《精益数据分析》;《Small Data》;《利用 Python 进行数据分析》


        点击《数据分析实战45讲》,现在正在限时优惠,原价 ¥99,限时优惠 ¥79,仅限 3 天!


        2019-01-08 12:018993

        评论 1 条评论

        发布
        用户头像
        难以想象居然会在infoq上面看到这种文章,我不知道有多少人和我一样觉得三观不正,希望是我out了
        2019-01-10 20:32
        回复
        没有更多了
        发现更多内容

        制品仓智能化管理,引领数字化时代的软件供应链变革

        YG科技

        毫无意义或有深意?工作反思手册

        少油少糖八分饱

        职场 工作 价值 生活的意义 工作价值

        程序员35+危机如何破?

        智慧源点

        副业赚钱

        京东商品详情接口在电商行业中的重要性及实时数据获取实现

        Noah

        软件测试/人工智能丨关系运算符

        测试人

        人工智能 软件测试

        Python笔记二之多线程

        Hunter熊

        Python 多线程

        当代数据库领域先驱者 Mohan 教授、ASF 成员 Julian 博士莅临天谋科技参观指导

        Apache IoTDB

        第12期 | 用友BIP项目云,助力施工项目全过程、全要素创新发展

        用友BIP

        项目管理

        华为云制品仓CodeArts Artifact:引领数字化风潮,解锁企业未来

        YG科技

        《公立医院成本核算指导手册》印发 公立医院应该如何做好成本核算

        用友BIP

        成本管理

        Wireshark使用技巧

        小魏写代码

        1688商品详情接口在电商行业中的重要性及实时数据获取实现

        Noah

        K8s容器debug高级技巧

        SEAL安全

        容器 Kubernetes 集群

        极狐GitLab 与 Flux 集成实现 GitOps

        极狐GitLab

        开源 DevOps gitlab gitops Flux

        驱动优化做盾,性能提升为矛,看英特尔锐炫GPU如何破壁生态与创新

        E科讯

        安卓设备解锁工具 FonesGo Android Unlocker激活中文版

        胖墩儿不胖y

        Mac软件 安卓设备解锁工具

        一款基于ESP32的迷你四足机器人

        芯动大师

        建立个人学习观|地铁上的自习室

        阿里技术

        个人学习观 学习观 思想观念

        华为云制品仓库:引领数字化未来的巨量引擎

        YG科技

        架构误区系列18:error、warn不分

        agnostic

        日志级别

        Go1.21.0 程序启动过程

        -Hedon🍭

        Go 语言 Go程序启动流程 Go1.21 Go 底层原理

        2024 年最值得推荐的 7 个 Vue3 组件库

        Kagol

        app开发

        Geek_8da502

        做好技术分享需要注意的几点(第三点很重要)

        Java 工程师蔡姬

        #java 21 天技术人写作行动营 #技术分享

        HashData:大数据时代的“追光者”

        酷克数据HashData

        昇腾AI开发者创享日·广州站成功举办 四大仪式激发人工智能产业创新活力

        彭飞

        华为云数字化制品仓,引领企业智能化转型之路

        YG科技

        文心一言 VS 讯飞星火 VS chatgpt (153)-- 算法导论12.2 9题

        福大大架构师每日一题

        福大大架构师每日一题

        说到CR,我们到底需要关注什么

        agnostic

        CR

        低代码开发到底是补品还是垃圾食品?

        伤感汤姆布利柏

        用友与上海国家会计学院联合主办第六届智能财务高峰论坛

        用友BIP

        智能会计

        打破认知:程序设计=算法+数据结构?_数据库_陈旸_InfoQ精选文章