算法、机器学习学习架构
算法、机器学习,知识栈,学习路线
第一部份:总体概括
内功:(理论部分)
- 统计学
- 线性代数
- 微积分
- 算法和数据结构
- 机器学习模型
- 特征工程
- 自然语言处理
- 分布式计算
外功:(工具部分)
- C/C++/Java
- Python/R/Matlab
- Hadoop/Hive
- Spark/MLlib
- Mahout/Tensor/Caffe
- SAS/SPSS
- Weka/Stata
- MySQL/HBase/MongoDB
学习思路
- 从外功入手,兼顾内功修炼
《集体智慧编程》+《统计基本方法》 - 这是工科不是理科,需要更多的练习
leetcode + kaggle - 训练自己快速阅读paper的能力
ICML NIPS AAAI CVPR
二、具体实施步骤。
1、Python开发
- 控制语句(if, for, while, pass, assert, with, yield, import, in)
- 类型(object, list, tuple, dict, set)
- 表达式(lambda, 列表推导式)
- 函数(map, reduce, filter, zip, sort, enumrate, isinstance)
- 面向对象(类成员、实例化、构造函数、析构函数、继承、派生、多态、super)
- 数值计算(numpy、scipy、pandas、sklearn、gensim)
- 数据可视化(matplotlib、moviepy)
- 爬虫(scrapy、beautifulsoup、urllib、requests、selenium)
推荐书目:
https://www.zhihu.com/question/28530832/answer/41170900
Python手册》、官方文档、《Head First Python》
2、 C++
- 白板编程:反转二叉树、单向链表中删除特定值的节点
- vector空间增长方式,容器是否线程安全,map的时空复杂度,allocator原理,string内存分配
- 父类和子类中构造函数以及析构函数调用顺序
- 引用和指针的区别,右值引用特点以及用用场景(移动构造函数),性能提升原因
- 解释深拷贝和浅拷贝并说明应用场景(自定义拷贝构造函数)
- C++的优势和劣势,如何看待C++中繁多的特性
3、Git
- commit
- config
- push
- pull
- diff
- checkout
- merge
- stash
- merge request
推荐阅读:《踏潮 Git 使用规范》
4、传统算法和数据结构
- 枚举(8皇后问题)
- 递归(汉诺塔问题、树的前中后序遍历)
- 分治(求中位数、快排)
- 贪婪(Dijkstra 求最短路、Prim 最小生成树)
- 动态规划(背包问题、Floyd 求最短路)
- 链表(增删改查、循环链表、判环)
- 栈(用队列模拟栈、售货员卖棒冰找零问题)
- 队列(用栈模拟队列,双向队列、优先队列)
- 二叉树(BST、平衡树、线段树)
- 堆(最小/最大堆、堆排序)
- 排序(冒泡、选择、插入、快速、归并、堆、桶)
- 图论(DFS、BFS、最小生成树、最短路、关键路径、流网络)
- 字符串(KMP、字典树、AC自动机)
推荐阅读:微软 —《编程之美》、《算法导论》
完成 Leetcode 中所有 easy / medium 难度的习题,编程语言 Python / C++ 自选。
4、线性代数
- 矩阵
- 特征值、特征向量
- 秩
5、微积分
- 极限
- 导数
- 拉格朗日中值
- 泰勒级数展开
- 傅里叶变换
推荐阅读:吴军 —《数学之美》、大学相关课程教材
6、统计学基础
- 相关性分析(相关系数r、皮尔逊相关系数、余弦相似度、互信息)
- 回归分析(线性回归、L1/L2正则、PCA/LDA降维)
- 聚类分析(KNN、K-Means)
- 分布(正态分布、t分布、密度函数)
- 指标(协方差、ROC曲线、AUC、变异系数、F1-Score)
- 显著性检验(t检验、z检验、卡方检验)
- A/B测试
推荐阅读:李航 —《统计学习方法》
7、机器学习基础
- 关联规则(Apriori、FP-Growth)
- 回归(Linear Regression、Logistics Regression)
- 决策树(ID3、C4.5、CART、GBDT、RandomForest)
- SVM(各种核函数)
- 推荐(User-CF、Item-CF)
推荐阅读:《集体智慧编程》、Andrew Ng — Machine Learning Coursera from Stanford
8、广告业务知识
- 了解各角色(Ad Exchange、DSP、SSP、DMP、监测)
- 了解广告数据维度
- 了解部门算法架构
推荐阅读:《踏潮算法培训》
基本功大考核:自主选题完成某一类数据抓取(如淘宝、携程、大众点评、58同城、百度竞价广告、世纪佳缘、链家等),对其进行统计分析并做 Presentation。
参考:
chenqin答过的问题
小龙虾是怎么火遍全国的? - 数据冰山 - 知乎专栏
黄焖鸡米饭是怎么火起来的? - 何明科的回答
RIO是如何席卷大江南北的? - 数据冰山 - 知乎专栏
统一出品的调味茶饮料“小茗同学”能热卖有哪些因素? - 何明科的回答
9、特征工程
- 可用性评估:获取难度、覆盖率、准确率
- 特征清洗:清洗异常样本
- 采样:数据不均衡、样本权重
- 单个特征:无量纲化(标准化、归一化)、二值化、离散化、缺失值(均值)、哑编码(一个定性特征扩展为N个定量特征)
- 数据变换:log、指数、Box-Cox
- 降维:主成分分析PCA、线性判别分析LDA、SVD分解
- 特征选择:Filter(相关系数、卡方检验)、Wrapper(AUC、设计评价函数A*、Embedded(L1-Lasso、L2-Ridge、决策树、DL))
- 衍生变量:组合特征
- 特征监控:监控重要特征,fa特征质量下降
10、提升篇
- 提升
- Adaboost
- 加法模型
- xgboost
- SVM
- 软间隔
- 损失函数
- 核函数
- SMO算法
- libsvm
- 聚类
- K-Means
- 并查集
- k-Medoids
- 谱聚类
- EM算法
- Jensen不等式
- pLSA
- 主题模型
- 共轭先验分布
- 贝叶斯
- 停止词和高频词
- TF-IDF
- 词向量
- word2vec
- n-gram
- HMM
- 前向/后向算法
- Baum-Welch
- Viterbi
- 中文分词
- 数据计算平台
- spark
- caffe
- tensorflow
- -
三、自我路线:(数据挖掘工程师)
- 数据转换
- 无量纲化
- 归一化
- 哑编码
- 数据清洗
- 判断异常值
- 缺失值计算
特征工程
- 可用性评估
- 采样
- PCA/LDA
- 衍生变量
- L1/L2正则
- SVD分解
http://tech.meituan.com/machinelearning-data-feature-process.html
http://blog.csdn.net/xw_classmate/article/details/51331787- 提升
- Adaboost
- 加法模型
- xgboost
- SVM
- 软间隔
- 损失函数
- 核函数
- SMO算法
- libSVM
- 聚类
- K-Means
- 并查集
- K-Medoids
- KNN
- 聚谱类SC
- EM算法
- Jensen不等式
- 混合高斯分布
- pLSA
- 主题模型
- 共轭先验分布
- 贝叶斯
- 停止词和高频词
- TF-IDF
- 词向量
- word2vec
- n-gram
- HMM
- 前向/后向算法
- Baum-Welch
- Viterbi
- 中文分词
- 数据计算平台
- Spark
- Caffe
- Tensorflow