某算法工程知识结构以及学习资料
什么是算法工程? 进可攻算法, 退可守工程. 以工程思想为基础, 以项目理解为基础, 涉及算法.
程序员是软件工程流水线上的一个工人, 如果永远机械地完成任务, 安分地呆在流水线上, 所获得的知识渐进的死亡.
如何超越流水线的束缚, 令自己的人生有更大的价值? 跳出流水线的框架, 尝试从宏观上了解产品的流水线, 从一个更高的角度认识自己和世界.
技术栈:
- 在线: 微服务服务器 + Redis + MySql
- 离线: Hive + Kafka + Flink + MySql + Redis
- 模型: Python + deep & wide
学习资料:
- Flink: Streaming Systems, 基于Apache Flink的流处理
- Hadoop: Hadoop权威指南大数据的存储与分析第4版
- Hive: HIVE编程指南
- Java: Java核心技术(两卷), Java编程思想 --(第四版)
- Kafka: Kafka权威指南
- Mysql: SQL必知必会, 高性能MYSQL
- Python: Python数据科学手册
- Redis: REDIS设计与实现
- 算法: 周志华-机器学习, 统计学习方法(第2版)
学习计划: 主要针对Flink, Java和算法, 对于其他内容作为工具进行学习
- java知识 -- Java编程思想 --(第四版)
重点:- 第一章: 对象导论 -- 对于Java总体设计思路的概括
- 第九章: 接口 -- 对于Java隔离思想的核心体现 (需要依赖访问限制符相关知识)
- 第十章: 内部类 -- 相比于C++,一个很大的区别
- 第十二章: 通过异常处理错误 -- 本文强调的重要内容之一
- 第二十一章: 并发 -- Java的核心开发目的
- Flink相关工程实现 -- 基于Apache Flink的流处理
由于书籍较短, 先选择不太需要看的内容:- 第四章 设置Apache Flink开发环境 -- 跟随着书本走一遍就行, 不用细看
- 第九章 搭建Flink运行流式应用 -- 也只是看一眼, 不用太注意, 后期有实践机会, 到之后再看
- 第十章 Flink和流式应用运维 -- 也就是看一眼
- 第十一章 还有什么 -- 内容不多, 进行一下归纳就好
- 以 机器学习基础 + Deep&Wide 为核心, 学习周边的推荐算法 -- 周志华-机器学习 + Deep&Wide论文
周志华的机器学习中主要看关于神经网络的, 加上前三章的基础和第10,11,12的学习理论, 对于其他模型需要知道是在干什么- 第 1,2,3 章 -- 作为机器学习的基础知识
- 第 5 章 -- 对于神经网络重点学习
- 第 10,11,12 章 -- 作为机器学习理论工具进行学习
- 对于其他章节需要知道这些模型主要是在干什么
- 基于Deep&Wide论文, 实现一个简单的代码demo
机器学习学习路径: 总结与修改自吴恩达的知乎
-
拥有基本的数学以及编程基础
(线性代数, 概率论, 数理统计, 多元函数求导, tensorflow)
-
广泛地基于应用场景学习机器学习以及深度学习相关的知识
(Machine Learning, CS231n, 周志华机器学习, 学习的同时基于小数据集进行实验)
-
根据自己的职业目标选择有价值的项目与团队, 建立关系网, 并反复实践
(工程项目, 天池数据实战)
-
保持自律的生活, 不断再机器学习的道路上提高自己
(对于新的算法, 新的思路保持自己认知的更新)
NLP领域的学习流程
- 在决定具体的任务方向之前通过学习基础知识 + 经典模型进行基本能力的提升
- 基础知识 = 线性代数 + 概率论与统计 + 模型评估指标 (两个专业课加上西瓜书对应部分)
- 经典模型 = 线性分类 + SVM + 树模型 + 神经网络 (西瓜书+NLP偏向的内容)
- 在决定具体的任务发现之后, 学习该任务方向以及相关的任务方向的任务范式和技巧
- 在对于该领域有了一定了解之后进行实际应用, 通过手动调整参数使得模型更优, 通过人工智能平台进行比赛