系统设计和机器学习算法
算法训练网站
提供了大量可以练习的网站:
1、Leetcode
2、Geeksforgeeks
3、Hackerrank
4、Lintcode
系统设计
关注:系统设计、面向对象的设计、数据库模式设计、分布式系统设计、大型系统架构、可扩展性等案例研究相关文章
- http://blog.gainlo.co
- http://horicky.blogspot.com
- https://www.hiredintech.com/classrooms/system-design/lesson/52
- http://www.lecloud.net/tagged/scalability
- http://tutorials.jenkov.com/software-architecture/index.html
- http://highscalability.com/
去深入了解整个系统的设计,包括整个读/写流程、如何保证很强的一致性、次要/主要压缩起到作用、LRU 缓存和 Bloom Filter 的作用等.
可以将 HBase 和 Cassandra 进行比较,设计上的相似点和不同之处
许多博客也能提供很多知识,比如 Hacker Noon、一些公司的工程博客以及开源项目的官方文档
机器学习
经典教材:
《The Elements of Statistical Learning》
《Pattern Recognition and Machine Learning》
基本概念:偏差/方差权衡、过度拟合、梯度下降,L1/L2 正则化、贝叶斯定理、协同过滤、降维
常用公式与模型推导:贝叶斯定理、逻辑回归、支持向量机
简单的模型:决策树、 K 均值聚类
机器学习产品的过程:
1、确定目标:预测、推荐、聚类、搜索
2、使用正确的算法:监督与无监督、分类与回归、广义线性模型/决策树/神经网络等,使用知道的原因
3、选择模型性能指标
4、生产优化模型
使用 Spark MLlib 和 XGBoost 简单地调用 API 训练出一个模型,研究 Stochastic gradient descent 适合分布式训练原因,
知道GBoost 和 GBDT 的区别原理。
核心原理的技能:
- 数学:微积分,统计学,线性代数
- 周边学科:信息论基础
- 推荐算法: CF,LR,SVM,FM,FTRL,GBDT,RF,SVD,RBM,RNN,LSTM,RL
- 数据挖掘:分类,聚类,回归,降维,特征选择,模型评价
- web服务: tornado, django, flask
- 数据存储: redis, hbase, cassandra, mongodb, mysql, hdfs,hive, kafka, elasticsearch
- 机器学习/深度学习: Spark MLib,GraphLab/GraphCHI,Angel,MXNet,TensorFlow,Caffe, Xgboost,VW,libxxx
- 文本处理: Word2vec,Fasttext,Gensim,NLTK
- 矩阵分解: Spark ALS,GraphCHI,implicit,qmf,libfm
- 相似计算: kgraph, annoy,nmslib, GraphCHI, columnSimilarities(spark.RowMatrix)
- 实时计算: Spark Streaming, Storm,Samza
评估开发人员所有技能的最好方法,
1、制定目标和计划
1、保持好奇心
2、勇于研究,敢担当责任
3、良好的执行能力
二、数学知识
2.1 【AI_数学知识】数学分析
2.2 【AI_数学知识】概率论
2.3 【AI_数学知识】线性代数
三、机器学习
3.0 【AI_机器学习】基础知识
3.1 【AI_机器学习】K-近邻算法
3.2 【AI_机器学习】决策树
3.3 【AI_机器学习】朴素贝叶斯
3.4 【AI_机器学习】逻辑回归
3.5 【AI_机器学习】SVM
3.6 【AI_机器学习】AdaBoost元算法
3.7 【AI_机器学习】随机森林算法
3.8 【AI_机器学习】树回归
3.9 【AI_机器学习】神经网络
3.10 【AI_机器学习】隐马尔科夫
四、深度学习
4.1 【AI_深度学习】CNN 卷积神经网络
4.2 【AI_深度学习】RNN循环神经网络
4.3 【AI_深度学习】GANs生成对抗网络