系統設計和機器學習演算法
演算法訓練網站
提供了大量可以練習的網站:
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生成對抗網路