一,Q&A部分:
1.一個特征分析的例子。。。(聽不懂)
2. 還是一個機器學習的例子,(聽不懂)大致,降低復雜度。
3. 傳統算法合格的標準,Leetcode(簡單,中等毫無壓力,hard難度有一定時間思考可以解決)
4. Machine Learning算法基礎,數學基礎(統計學,微積分,線性代數,離散數學)
5. 數據挖掘相關的競賽
(ACM沒太大幫助,僅僅針對傳統算法, 針對數據挖掘的競賽:Kagle, KDD數據挖掘)
6. 算法工程師需要博士么?
live主只有本科學歷,和基礎知識。
(碩士比較有必要 因為面試結果好于本科,也就是認可度較高)
7. 高維空間xxx相關的問題(還是聽不懂)
8. 基礎爛的人,如何學習算法?
(花時間去補基礎,鍛煉自己獨立學習獨立解決問題的能力)
9. 數據挖掘要學spark?
Live主認為python足夠。
10. 合格的算法工程師需要的數學基礎?
后續另外一個部分介紹
11. 怎樣練習算法?指傳統的算法和數據結構
1)以模塊化形式 針對訓練。例如學習圖輪,相對于刷圖論相關的題目
學習動態規劃,刷動態規劃相關的題目。
(根據模塊學習和訓練)
2)leetcode 隨機刷題。自己想方案來解決
(根據實際問題選擇算法解決問題)
12. 有一定高數基礎和機器學習的基礎概念,如何實際訓練
Kaggle 和KDD 訓練,
嘗試寫爬蟲自己挖掘數據進行研究。
13. 應用數學/統計專業如何轉型算法
1)學習寫代碼。例如python
2)穩固統計學,并學習機器學習相關的知識。
14. 數據挖掘工程師,有必要深入研究傳統算法,例如算法導論么?
還是重點關注學習,統計等算法呢?
作者認為沒有必要。
傳統算法(算法導論)偏向系統工程方面。
數據挖掘便向統計方面。
15. 本科生非ACMER 需要什么程度才算算法合格?
作者前面說的Leetcode初級,中級無壓力。高級題花時間能研究出來。
16. 算法工程師和數據 data scientist的區別
在中小企業是不做區分的。
很大的公司中會有區別。
例如算法工程師提供更底層的模塊
數據挖掘工程師更偏向于業務。
17. 算法工程師的編程能力要達到什么水平?
如果不做系統級的開發對編程能力要求并不高。
系統開發,比如分布式計算,并行計算。對編程要求就高很多。
18. 傳統數據結構和算法是否對于機器學習有必要?體現在什么地方?
類比參加高考的數理化訓練。訓練思維的方式,思考方式和基礎。
傳統數據結構算法接觸大量計算機的解決問題的思維。
機器學習中會用到傳統數據結構算法,例如圖論,動態規劃。
字典樹,自動機等等。
---------------------------
二,正文大綱:
如何成為當下合格的算法工程師
1. 定義算法工程師
2. 所需內功和外公
3. 不可替代性和成長性
4. 如何快速成長
5. 算法崗面經
6. 量化合格的標準
1. 什么是算法工程師:
從個大招聘網站的算法崗JD開始
技術核心:機器學習
未來:人工智能
(live主認為機器學習未必是實現人工智能的唯一方式,
萬一有人腦的API,那么機器學習熱潮可能會退去)
live主分析了一份阿里的JD
涵蓋了主流機器學習的應用和方向
(同時說明部門老大技術應該很牛,有可能上升的空間就較小)
分析一份百度的JD
C/C++要求,分布式計算,自然語言處理。JD描述看似簡單
往往需要講出自己非常牛的項目經歷。
詞云圖:廣告(DSP)
java/C++/Python
數學
碩士
2. 內功和外功
1)內功
統計學
線性代數
微積分
算法和數據結構
機器學習模型
特征工程
自然語言處理
分布式計算
。..
2) 外功
C/C++/java
Pyton/R/Matlab
Hadoop/Hive
Spark/Mlib
/Mahout/Tensorflow/Caff
SASS/SPSS
Weka/Stat
MySQL/HBase/MongoDB
。..
live主認為高效的方法是先學會如何用,然后在學習如何用好。
也就是先學習外功,再慢慢彌補內功。
如果只專注內功而忽略外功,很容易成為理論家,而不會實際應用。
數學基礎:
機器學習,統計學習符號,能夠看懂技術書籍上的推導證明
參考學習路線圖。
(1,2,3,4,5)完成5條路線可以勝任大部分的應用。
3. 算法工程師不可代替性
1)非增刪改查開發接口等體力活
2)大腦價值大于代碼價值
3)技術業務兩手抓,容易成為項目核心
4)行業熱點,不懂技術的老板也知道大數據重要
5)如何量化不可代替性,工作交接時間長
成長性高
待遇高,5年以后薪資成長迅猛
有機會接觸到更多IT大牛
大多數ACM獲獎的應屆生選擇算法崗位
挑戰性極強,工作難度大
會隨著大數據熱潮變得搶手
4. 如何快速成長
1)從外功入手,兼顧內功修煉
《集體智慧編程》+《統計基本方法》
所見即所得,有實際反饋。
2)這是工科,不是理科,因此需要更多實際項目的訓練
LeetCode + Kaggle
需要更多練習,接近實際的練習。
leetcode訓練傳統算法
Kaggle數據挖掘競賽(特征工程,大于學習模型本身的重要性)
3) 訓練自己快速閱讀paper的能力
ICML NIPS AAAI CVPR等
機器學習相關的期刊的名稱。
比如深度學習,可以通過期刊了解到新等模型體系,可以有針對性的做一些學習。
5.算法崗面經
C/C++
1.白板編程:反轉二叉樹,單鏈表中刪除特定值的節點。
2.Vector空間的增長方式,容器是否線程安全,map的時間空間復雜度,allocator原理,string內存分配。
3.父類和子類中構造函數以及析構函數調用順序
4.引用和指針的區別,右值引用的特點以及應用場景(移動構造函數),性能提升原因
5.解釋深拷貝和淺拷貝并說明應用場景 (自定義拷貝構造函數)
6.C++的優勢與劣勢,如何看待C++中繁多的特性
C++11 和C++14標準
算法與數據結構
1. 分治,快排思想:求第k大數(中位數)
2. 堆,優先隊列:找出出現最多的top100個值
3. 動態規劃:數字金字塔,求兩個字符串的編輯舉例,最長不下降子序列
4. 并查集:求好友圈個數,注意路徑壓縮優化
5. 線段樹,樹狀數組: 區間更新和查詢
6. KMP,AC自動機:海量字符串檢索比較
Python
1. 數據分析:numpy,scipy,sklearn, pandas, matplotlib
2. 爬蟲: requests, urllib, scrpay, beautifulsoup, selenium, 中文編碼
3. 白板編程:重新實現filter, map, reduce, 反轉二叉樹
4. Python的優勢與劣勢,分析為何GIL帶來影響。如何解決
如果是初入門可以看廖雪峰的博客進行學習,否則看官方文檔。
統計學:
1. 量化統計模型結果好壞(準確,召回,ROC,AUC, F1-Measure)
2. 樣本于理論推測的偏差:卡方檢驗 X^2 = sigma ((A-T)^2/T)
3. 比較兩個變量波動性 變異系數 CV = sigma(x) / E(x) = STD(x) / AVG(x)
4. 正態分布N(u, keshi^2) 如何檢驗正態分布
閱讀課本。
數據挖掘:
1. 介紹Logistics Regression, Random Forest, GBDT并分析其優缺點
2. 闡述L1和L2正則項并做比較
3. 如何解決推薦系統冷啟動問題
*4. 特征工程:可用性評估,采樣,無量綱化, PCA/LDA, 衍生變量
5. 各個模型的損失函,數牛頓學習法,SGD如何訓練
6. 如何生產標簽并構造用戶畫像(word2vec, kmeans, LDA, TF-IDF)
【live主認為特征工程是最重要的】
量化合格標準
語言:C++/Java/Python
能使用擅長的語言造輪子,寫爬蟲,數據分析和挖掘
算法和數據結構:以獨立完成Leetcode為佳
(poj, zoj訓練)
統計:熟悉基本統計方,法要有自己完整的統計體系。
指標分析-》提出猜想-》驗證-》結論-》模型
機器學習:熟悉常見模型和特征工程方法
同樣要有自己完整的特征工程體系,對模型優劣有基礎認識,
以純手工實現邏輯回歸為佳
一些學習資料:
美團點評技術 - 《機器學習中的數據清洗與特征處理綜述》 http://tech.meituan.com/machinelearning-data-feature-process.html
使 sklearn做特征 程 http://blog.csdn.net/xw_classmate/article/details/51331787
Max Kuhn / Kjell Johnson - Applied Predictive Modeling
Trevor Hastie / Robert Tibshirani / Jerome Friedman - Elements of Statistical Learning
-
工程師
+關注
關注
59文章
1589瀏覽量
69245 -
算法
+關注
關注
23文章
4701瀏覽量
94827
發布評論請先 登錄


如何成為一名合格的KaihongOS南向驅動開發工程師
如何成為一名嵌入式軟件工程師?

如何成為嵌入式開發工程師?
如何成為一名合格的南向驅動開發工程師
如何成為一名合格的北向應用開發工程師

為什么嵌入式驅動開發工程師可以拿高薪?
GpuGeek云平臺正式上線,專注AI算法工程師需求

評論