数据分析工程师所需技能
- 数学:基础数学,统计学,线性代数,微积分,优化方法
- 微积分(导数),向量和矩阵(基本运算规则),概率论(贝叶斯规则、概率概念),对数(运算规则、公式)
- 数据科学:机器学习,神经网络
- 数据处理:SQL,Stata,Power BI data flow
- 报表和建模:Excel,Power BI
- 编程:Python
常见概念和模型
01 ABM仿真模型
基于Agent的建模,Agent-Based Modeling,一种模拟复杂系统中个体(Agent)行为和互动的计算模型。可以使用NetLogo来进行建模和模拟,https://ccl.northwestern.edu/netlogo/
02 BFS、DFS、Dijstra,A*搜索算法
BSF算法通常指的是Breadth-First Search(广度优先搜索)算法,它是一种用于遍历或搜索树(Tree)或图(Graph)数据结构的算法。广度优先搜索从根节点(或起始节点)开始,逐层遍历所有相邻节点,直到找到目标节点或遍历完整个结构。
- 时间复杂度:O(V + E),其中 V 是节点数,E 是边数。
- 空间复杂度:O(V),在最坏情况下需要存储所有节点。
- 适用场景:
- 寻找最短路径(在无权图中)。
- 检查图的连通性。
- 解决迷宫问题、社交网络中的关系查找等。
DFS算法,即深度优先搜索(Depth-First Search),是一种用于遍历或搜索树(Tree)或图(Graph)数据结构的算法。DFS的核心思想是从起始节点开始,沿着一条路径尽可能深入地访问节点,直到无法继续深入为止,然后回溯并尝试其他路径。
- 时间复杂度:O(V + E),其中 V 是节点数,E 是边数。
- 空间复杂度:O(V),在最坏情况下需要存储所有节点(递归调用栈或显式栈)。
- 适用场景:
- 检查图的连通性。
- 寻找路径(不一定是最短路径)。
- 拓扑排序。
- 解决迷宫问题、生成迷宫等。
Dijkstra算法(迪杰斯特拉算法)是一种用于计算单源最短路径的经典算法,由荷兰计算机科学家艾兹赫尔·迪杰斯特拉(Edsger W. Dijkstra)**于1956年提出。它用于在**带权图**(Weighted Graph)中,从一个起始节点出发,找到到图中所有其他节点的最短路径。Dijkstra算法的核心思想是贪心策略**,通过逐步扩展已知的最短路径来求解。
时间复杂度:
使用优先队列(最小堆):O((V + E) log V),其中 V 是节点数,E 是边数。
使用普通数组:O(V²)。
空间复杂度:O(V),用于存储距离表和优先队列。
优点:高效、易于实现,适用于非负权图。
缺点:不能处理负权边。
适用场景:
- 路径规划:如地图导航、网络路由。
- 资源分配:如任务调度、网络流量优化。
- 游戏开发:如AI寻路。
- 社交网络分析:如最短关系链计算。
A*算法(A-Star Algorithm)是一种用于路径搜索和图遍历的启发式算法,广泛应用于人工智能、游戏开发、机器人导航等领域。A*算法结合了Dijkstra算法的最短路径搜索和启发式搜索的优点,通过引入启发式函数来优化搜索过程,从而高效地找到从起点到目标点的最优路径。
应用场景
游戏开发:如AI寻路、角色移动。
机器人导航:如自动驾驶、无人机路径规划。
地图导航:如GPS路径规划。
拼图问题:如八数码问题、魔方求解。