Java教程

某算法工程知识结构以及学习资料

本文主要是介绍某算法工程知识结构以及学习资料,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

什么是算法工程? 进可攻算法, 退可守工程. 以工程思想为基础, 以项目理解为基础, 涉及算法.

技术栈:

  1. 在线: 微服务服务器 + Redis + MySql
  2. 离线: Hive + Kafka + Flink + MySql + Redis
  3. 模型: Python + deep & wide

学习资料:

  1. Flink: Streaming Systems, 基于Apache Flink的流处理
  2. Hadoop: Hadoop权威指南大数据的存储与分析第4版
  3. Hive: HIVE编程指南
  4. Java: Java核心技术(两卷), Java编程思想 --(第四版)
  5. Kafka: Kafka权威指南
  6. Mysql: SQL必知必会, 高性能MYSQL
  7. Python: Python数据科学手册
  8. Redis: REDIS设计与实现
  9. 算法: 周志华-机器学习, 统计学习方法(第2版)
  1. java知识 -- Java编程思想 --(第四版)
    重点:
    1. 第一章: 对象导论 -- 对于Java总体设计思路的概括
    2. 第九章: 接口 -- 对于Java隔离思想的核心体现 (需要依赖访问限制符相关知识)
    3. 第十章: 内部类 -- 相比于C++,一个很大的区别
    4. 第十二章: 通过异常处理错误 -- 本文强调的重要内容之一
    5. 第二十一章: 并发 -- Java的核心开发目的
  2. Flink相关工程实现 -- 基于Apache Flink的流处理
    由于书籍较短, 先选择不太需要看的内容:
    1. 第四章 设置Apache Flink开发环境 -- 跟随着书本走一遍就行, 不用细看
    2. 第九章 搭建Flink运行流式应用 -- 也只是看一眼, 不用太注意, 后期有实践机会, 到之后再看
    3. 第十章 Flink和流式应用运维 -- 也就是看一眼
    4. 第十一章 还有什么 -- 内容不多, 进行一下归纳就好
  3. 以 机器学习基础 + Deep&Wide 为核心, 学习周边的推荐算法 -- 周志华-机器学习 + Deep&Wide论文
    周志华的机器学习中主要看关于神经网络的, 加上前三章的基础和第10,11,12的学习理论, 对于其他模型需要知道是在干什么
    1. 第 1,2,3 章 -- 作为机器学习的基础知识
    2. 第 5 章 -- 对于神经网络重点学习
    3. 第 10,11,12 章 -- 作为机器学习理论工具进行学习
    4. 对于其他章节需要知道这些模型主要是在干什么
    5. 基于Deep&Wide论文, 实现一个简单的代码demo

机器学习学习路径: 总结与修改自吴恩达的知乎

  1. 拥有基本的数学以及编程基础

    (线性代数, 概率论, 数理统计, 多元函数求导, tensorflow)

  2. 广泛地基于应用场景学习机器学习以及深度学习相关的知识

    (Machine Learning, CS231n, 周志华机器学习, 学习的同时基于小数据集进行实验)

  3. 根据自己的职业目标选择有价值的项目与团队, 建立关系网, 并反复实践

    (工程项目, 天池数据实战)

  4. 保持自律的生活, 不断再机器学习的道路上提高自己

    (对于新的算法, 新的思路保持自己认知的更新)

某公司相关资料

资料来源

  1. 某公司整体大数据团队涵盖的两大技术方向:

    1. 数据研发方向: 数据资料的清洗, 加工, 整合, 挖掘, 管理, 运营. 涉及批处理和实时数据仓库, 数据管理, 数据价值落地等
    2. 数据系统研发方向: 批处理以及实时数仓开发工具链, BI系统, 数据管理系统, 的系统的研发
  2. 对于各个业务线, 形成以基础研发部为核心的技术支撑, 业务线的数据工种主要是基于本业务线的数据, 形成小兵团, 灵活地完成业务线中需要实现的内容

  3. 每个形成了BG的业务线都有其自己的数据工程师团队数据科学家团队

    1. 数据工程师团队主要的工作是构建中心化的公共数据建设
    2. 数据科学家团队主要是基于业务数据, 为公司领导层提供经营分析和建议
  4. 全公司级别的大数据团队, 作为单独的技术部门, 对于各个BG的业务提供能力支持

  5. 某公司金融服务为例子, 数据工程师的工作职责:

    1. 搭建并优化数据体系 (数据仓库, 数据应用, 实时统计)
    2. 对于安全性, 存储计算成本, 查询性能, 用户体验进行综合优化
    3. 参与建设商业智能系统: 到数据, 灵活, 在线分析, 自动归因, 智能预测
    4. 为业务提供数据解决方案 (数据采集, 安全合规, 实验设计, 评价监控, 数据挖掘, 智能决策)
  6. 数据团队在业务的不同发展阶段的角色:

    1. 初创期: 业务从无到有的阶段
      1. 主要矛盾是找到令人信服的商业模式
      2. 业务上的主要压力在后端与前端的开发
      3. 数据上主要是一些基础指标的表现, 为商业决策提供支持. 基本不需要专业数据分析人员介入
    2. 成长期: 商业模式已经被证明是可行的, 进行扩张和抢占市场阶段
      1. 主要矛盾是既要保证现有任务的稳定性, 又要支持新增的大量需求, 打好数据基础, 做好需求管理
      2. 是业务上全线压力最大的阶段
      3. 对于数据技术的任务是高效应对需求以及保障现有任务的稳定性和数据的准确性
    3. 成熟期: 业务规模已经达到预期, 开始追求盈利, 业务的基本思路已经确定
      1. 主要矛盾: 需要建立系统的指标体系整理前期的系统, 需要更加精细地使用数据科学知道经营, 使用例如用户画像地手段提高运营ROI
      2. 新增需求的数量减少, 更多的开始追求系统的质量以及效率
      3. 对于数据技术, 主要的工作是做好数据治理以及内容的体系化管理, 抽象出更加合理的系统层级
    4. 持续发展期: 需要通过数据扩大利润, 需要结合行业理解以及多元数据, 结合业务特点发现高价值用户, 发现高价值用户, 丰富业务的利润结构
      1. 主要矛盾: 需要对业务以及用户进行更加深入的理解, 使用数据发现业务与经营中的潜在利润点
      2. 深化数据分析的质量要求, 要求成为懂数据开发技术, 懂产品业务逻辑, 懂商业, 懂分析, 懂经营策略, 懂运营策略, 能进行团队合作的多维度的业务数据专家
  7. 数据团队相对于整体公司AI的地位:

  8. 目前某公司技术团队的状态:

    1. 数据平台技术体系,早已经度过了“基于开源搭一搭,魔改一下就能解决问题”的阶段,业界开源技术已经不能满足业务需求,需要在部分领域构建能力做自研。
    2. 需要通过紧密结合业务问题和领域技术发展趋势,向内深度自我洞察、自我反思,在领域内自我技术突破、从工程技术支撑业务到工程技术驱动业务的转变。
    3. 有一个大的集群。而其他很多公司只是一些小的平台或者小的自建的集群,数据打通共享是个大问题,当然这跟公司的发展阶段有很大的关系。在机器学习训练部分,我们可以做到700并发0.7倍的加速比,推理部分BERT模型性能可以超越业界state-of-the-art 1~2倍的样子
    4. 数据技术团队的KPI主要看两部分,一是能不能支撑好全公司所有数据团队的工作,比如开发效率、数据使用效率等;二是要考虑与全局数据成本、全局数据质量相关的一些KPI。

资料来源1

资料来源2

个人在入职之前选择的深度学习方向:

按照个人兴趣, 我选择NLP和知识图谱方向. 因为文本内容是互联网上表意最直接, 有效信息量最大的内容格式.

这篇关于某算法工程知识结构以及学习资料的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!