常用機(jī)器學(xué)習(xí)算法優(yōu)缺點(diǎn)分析
編輯導(dǎo)語(yǔ):機(jī)器學(xué)習(xí)是當(dāng)下數(shù)據(jù)分析領(lǐng)域的一個(gè)熱點(diǎn)內(nèi)容,我們?nèi)粘9ぷ髦卸喽嗌偕俣紩?huì)涉及到一些。但在機(jī)器學(xué)習(xí)領(lǐng)域,算法并不能完全解決所有的問題。本文梳理了有監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)的兩個(gè)方面,列舉了其中幾種算法,總結(jié)它們的優(yōu)缺點(diǎn),分享給你。
機(jī)器學(xué)習(xí)無(wú)疑是當(dāng)前數(shù)據(jù)分析領(lǐng)域的一個(gè)熱點(diǎn)內(nèi)容,其理論和方法已經(jīng)廣泛應(yīng)用于解決工程應(yīng)用的復(fù)雜問題,很多人在平時(shí)的工作中都或多或少會(huì)用到機(jī)器學(xué)習(xí)的算法。在機(jī)器學(xué)習(xí)領(lǐng)域,沒有算法能完美地解決所有問題。比如說(shuō),神經(jīng)網(wǎng)絡(luò)并不是在任何情況下都能比決策樹更有優(yōu)勢(shì),反之亦然。它們要受很多因素的影響,比如你的數(shù)據(jù)集的規(guī)?;蚪Y(jié)構(gòu)。
其結(jié)果是,在用給定的測(cè)試集來(lái)評(píng)估性能并挑選算法時(shí),你應(yīng)當(dāng)根據(jù)具體的問題來(lái)采用不同的算法。例如,如果模型要求可解釋性較強(qiáng),首先想到的就是邏輯(線性)回歸,如果模型要求準(zhǔn)確度較高且速度較快,首先想到的是Xgboost,如果數(shù)據(jù)量巨大且很稀疏,首先想到怎么用神經(jīng)網(wǎng)絡(luò)解決此問題。
因此,如何選擇機(jī)器學(xué)習(xí)算法、選擇哪一個(gè)算法以及算法建模時(shí)該注意哪些問題成了工程師的一個(gè)難題,本文的目的總結(jié)了常用機(jī)器學(xué)習(xí)算法優(yōu)缺點(diǎn),供大家在工作、學(xué)習(xí)甚至面試中參考。機(jī)器學(xué)習(xí)主要分為有監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí),本文從這兩方面進(jìn)行了梳理。
一、有監(jiān)督算法
有監(jiān)督學(xué)習(xí)是指模型學(xué)習(xí)時(shí)有特定目標(biāo),即目標(biāo)是人工標(biāo)注的,主要用做分類或者回歸。常用的有監(jiān)督學(xué)習(xí)主要有knn、邏輯(線性)回歸、決策樹、隨機(jī)森林、adaboost、GBDT、xgboost、svm、樸素貝葉斯、人工神經(jīng)網(wǎng)絡(luò)等算法。
1. 最近鄰算法——KNN
KNN可以說(shuō)是最簡(jiǎn)單的分類算法,和另一種機(jī)器學(xué)習(xí)算法K均值算法有點(diǎn)像,但有著本質(zhì)區(qū)別(K均值算法是無(wú)監(jiān)督算法)。KNN的全稱是KNearestNeighbors,意思是K個(gè)最近的鄰居,KNN的原理就是當(dāng)預(yù)測(cè)一個(gè)新的值x的時(shí)候,根據(jù)它距離最近的K個(gè)點(diǎn)是什么類別來(lái)判斷x屬于哪個(gè)類別。
KNN算法的優(yōu)點(diǎn):
- 理論成熟,簡(jiǎn)單易用,相比其他算法,KNN算是比較簡(jiǎn)潔明了的算法,工程上非常容易實(shí)現(xiàn);模型訓(xùn)練時(shí)間快,訓(xùn)練時(shí)間復(fù)雜度為O(n),KNN算法是惰性的;
- 對(duì)數(shù)據(jù)沒有假設(shè),準(zhǔn)確度高,對(duì)異常值不敏感。
KNN算法的缺點(diǎn):
- 對(duì)內(nèi)存要求較高,因?yàn)樵撍惴ù鎯?chǔ)了所有訓(xùn)練數(shù)據(jù);
- KNN每一次分類都會(huì)重新進(jìn)行一次全局運(yùn)算,且對(duì)于樣本容量大的數(shù)據(jù)集計(jì)算量比較大(一般涉及到距離計(jì)算的模型都會(huì)有這種缺點(diǎn),如后面講的SVM、密度聚類等)。
2. 邏輯(線性)回歸
邏輯回歸是分類模型,線性回歸是回歸模型,邏輯回歸和線性回歸原理相似,邏輯回歸其實(shí)僅為在線性回歸的基礎(chǔ)上,套用了一個(gè)邏輯函數(shù)。
線性回歸的損失函數(shù)為均方誤差類損失,邏輯回歸的損失函數(shù)為交叉熵?fù)p失。
邏輯回歸的損失函數(shù)為什么選擇交叉熵?fù)p失而不選擇均方誤差是面試中經(jīng)常問道的問題,這里簡(jiǎn)單說(shuō)一下:使用MSE作為損失函數(shù)的話,它的梯度是和sigmod函數(shù)的導(dǎo)數(shù)有關(guān)的,如果當(dāng)前模型的輸出接近0或者1時(shí),就會(huì)非常小,接近0,使得求得的梯度很小,損失函數(shù)收斂的很慢。
但是我們使用交叉熵的話就不會(huì)出現(xiàn)這樣的情況,它的導(dǎo)數(shù)就是一個(gè)差值,誤差大的話更新的就快,誤差小的話就更新的慢點(diǎn),這正是我們想要的邏輯(線性)回歸的優(yōu)點(diǎn):
- 可解釋行強(qiáng)。本人認(rèn)為這是邏輯(線性)回歸最大的優(yōu)點(diǎn),應(yīng)該是機(jī)器學(xué)習(xí)算法中可解釋最強(qiáng)的,因?yàn)樗?xùn)練的參數(shù)即為每個(gè)特征的權(quán)重,并且能夠定位到每個(gè)樣本的可解釋,而且它的輸出為概率值;
- 計(jì)算量小,速度很快,存儲(chǔ)資源低,工程上實(shí)現(xiàn)簡(jiǎn)單,廣泛應(yīng)用于工業(yè)界。
邏輯(線性)回歸的缺點(diǎn):
它最大的缺點(diǎn)就是對(duì)特征工程要求較高,主要體現(xiàn)在以下方面:
- 需要解決特征共線性問題,如果特征共線性較高,訓(xùn)練的權(quán)重不滿秩,有模型不收斂的可能;對(duì)于異常值和缺失值非常敏感,需要提前進(jìn)行數(shù)據(jù)處理;
- 模型訓(xùn)練前需要特征歸一化,不然進(jìn)行梯度下降尋找最優(yōu)值時(shí)會(huì)收斂很慢或者不收斂;
- 對(duì)于非線性連續(xù)特征需要連續(xù)特征離散化。
當(dāng)然除了以上缺點(diǎn),還有它的容易欠擬合,準(zhǔn)確度并不是很高(個(gè)人認(rèn)為強(qiáng)于決策樹,弱于SVM、GBDT等強(qiáng)分類器)。
3. 決策樹
決策樹的生成算法有ID3,C4.5和C5.0等。決策樹是一種樹形結(jié)構(gòu),其中每個(gè)內(nèi)部節(jié)點(diǎn)表示一個(gè)屬性上的判斷,每個(gè)分支代表一個(gè)判斷結(jié)果的輸出,最后每個(gè)葉節(jié)點(diǎn)代表一種分類結(jié)果。
決策樹的優(yōu)點(diǎn):
計(jì)算量相對(duì)較小,且容易轉(zhuǎn)化成分類規(guī)則.只要沿著樹根向下一直走到葉,沿途的分裂條件就能夠唯一確定一條分類的謂詞;有一定的可解釋性,樹的結(jié)構(gòu)可視化;
具有一定的特征選擇能力,能夠自己處理不相關(guān)特征。
決策樹的缺點(diǎn):
- 屬于弱分類器,且容易過(guò)擬合,可用bagging的方式減小方差(如隨機(jī)森林),boosting的方式減少偏差(如GBDT、xgboost);于各類別樣本數(shù)量不一致的數(shù)據(jù),信息增益偏向于那些更多數(shù)值的特征;
- 容易忽略數(shù)據(jù)集中屬性的相互關(guān)聯(lián)。
4. 隨機(jī)森林
是以決策樹為基學(xué)習(xí)器的集成學(xué)習(xí)算法,如果分類模型,多個(gè)決策樹進(jìn)行投票處理,如果為回歸模型,多個(gè)決策樹結(jié)果平均值處理。
隨機(jī)森林的優(yōu)點(diǎn):
- 隨機(jī)森林具有防止過(guò)擬合能力,精度比大多數(shù)單個(gè)算法要好;隨機(jī)森林分類器可以處理缺失值;
- 于有袋外數(shù)據(jù)(OOB),可以在模型生成過(guò)程中取得真實(shí)誤差的無(wú)偏估計(jì),且不損失訓(xùn)練數(shù)據(jù)量在訓(xùn)練過(guò)程中,能夠檢測(cè)到feature間的互相影響,且可以得出feature的重要性,具有一定參考意義;
- 每棵樹可以獨(dú)立、同時(shí)生成,容易做成并行化方法;
- 具有一定的特征選擇能力。
隨機(jī)森林的缺點(diǎn):
隨機(jī)森林已經(jīng)被證明在某些噪音較大的分類或回歸問題上會(huì)過(guò)擬。對(duì)于有不同取值的屬性的數(shù)據(jù),取值劃分較多的屬性會(huì)對(duì)隨機(jī)森林產(chǎn)生更大的影響,所以隨機(jī)森林在這種數(shù)據(jù)上產(chǎn)出的屬性權(quán)值是不可信的。
5. GBDT
GBDT是通過(guò)采用加法模型(即基函數(shù)的線性組合),以及不斷減小訓(xùn)練過(guò)程產(chǎn)生的殘差來(lái)達(dá)到將數(shù)據(jù)分類或者回歸的算法,它是決策樹的boosting算法,在傳統(tǒng)機(jī)器學(xué)習(xí)算法里面是對(duì)真實(shí)分布擬合的最好的幾種算法之一。
GBDT的優(yōu)點(diǎn):
- GBDT屬于強(qiáng)分類器,一般情況下比邏輯回歸和決策樹預(yù)測(cè)精度要高;GBDT可以自己選擇損失函數(shù),當(dāng)損失函數(shù)為指數(shù)函數(shù)時(shí),GBDT變?yōu)锳daboost算法;
- GBDT可以做特征組合,往往在此基礎(chǔ)上和其他分類器進(jìn)行配合。
GBDT的缺點(diǎn):
由于弱學(xué)習(xí)器之間存在依賴關(guān)系,難以并行訓(xùn)練數(shù)據(jù);和其他樹模型一樣,不適合高維稀疏特征。
6. Xgboost
XGBoost的全稱是eXtremeGradientBoosting,它是經(jīng)過(guò)優(yōu)化的分布式梯度提升庫(kù),旨在高效、靈活且可移植。
XGBoost是大規(guī)模并行boostingtree的工具,它是目前最快最好的開源boostingtree工具包,比常見的工具包快10倍以上。
在數(shù)據(jù)科學(xué)方面,有大量的Kaggle選手選用XGBoost進(jìn)行數(shù)據(jù)挖掘比賽,是各大數(shù)據(jù)科學(xué)比賽的必殺武器;在工業(yè)界大規(guī)模數(shù)據(jù)方面,XGBoost的分布式版本有廣泛的可移植性,支持在Kubernetes、Hadoop、SGE、MPI、Dask等各個(gè)分布式環(huán)境上運(yùn)行,使得它可以很好地解決工業(yè)界大規(guī)模數(shù)據(jù)的問題。它是GBDT的進(jìn)階,也就是Xgboost有著GBDT所有的優(yōu)點(diǎn)。
此外與GBDT相比,xgBoosting有以下進(jìn)步:
收斂速度增快:GBDT在優(yōu)化時(shí)只用到一階導(dǎo)數(shù),xgBoosting對(duì)代價(jià)函數(shù)做了二階Talor展開,引入了一階導(dǎo)數(shù)和二階導(dǎo)數(shù);
正則化:一定程度防止過(guò)擬合。XGBoost在代價(jià)函數(shù)里加入了正則項(xiàng),用于控制模型的復(fù)雜度。正則項(xiàng)里包含了樹的葉子節(jié)點(diǎn)個(gè)數(shù)、每個(gè)葉子節(jié)點(diǎn)上輸出的score的L2模的平方和。
從Bias-variancetradeoff角度來(lái)講,正則項(xiàng)降低了模型的variance,使學(xué)習(xí)出來(lái)的模型更加簡(jiǎn)單,防止過(guò)擬合;
并行處理:XGBoost工具支持并行。Boosting不是一種串行的結(jié)構(gòu)嗎?怎么并行的?
注意XGBoost的并行不是tree粒度的并行,XGBoost也是一次迭代完才能進(jìn)行下一次迭代的(第t次迭代的代價(jià)函數(shù)里包含了前面t-1次迭代的預(yù)測(cè)值)。XGBoost的并行是在特征粒度上的。
我們知道,決策樹的學(xué)習(xí)最耗時(shí)的一個(gè)步驟就是對(duì)特征的值進(jìn)行排序(因?yàn)橐_定最佳分割點(diǎn)),XGBoost在訓(xùn)練之前,預(yù)先對(duì)數(shù)據(jù)進(jìn)行了排序,然后保存為block結(jié)構(gòu),后面的迭代中重復(fù)地使用這個(gè)結(jié)構(gòu),大大減小計(jì)算量。
這個(gè)block結(jié)構(gòu)也使得并行成為了可能,在進(jìn)行節(jié)點(diǎn)的分裂時(shí),需要計(jì)算每個(gè)特征的增益,最終選增益最大的那個(gè)特征去做分裂,那么各個(gè)特征的增益計(jì)算就可以開多線程進(jìn)行;
Shrinkage(縮減):相當(dāng)于學(xué)習(xí)速率。XGBoost在進(jìn)行完一次迭代后,會(huì)將葉子節(jié)點(diǎn)的權(quán)重乘上該系數(shù),主要是為了削弱每棵樹的影響,讓后面有更大的學(xué)習(xí)空間。傳統(tǒng)GBDT的實(shí)現(xiàn)也有學(xué)習(xí)速率。
列抽樣:XGBoost借鑒了隨機(jī)森林的做法,支持列抽樣,不僅能降低過(guò)擬合,還能減少計(jì)算。這也是XGBoost異于傳統(tǒng)GBDT的一個(gè)特性。
缺失值處理:對(duì)于特征的值有缺失的樣本,XGBoost采用的稀疏感知算法可以自動(dòng)學(xué)習(xí)出它的分裂方向;
內(nèi)置交叉驗(yàn)證:XGBoost允許在每一輪Boosting迭代中使用交叉驗(yàn)證。
因此,可以方便地獲得最優(yōu)Boosting迭代次數(shù)。而GBM使用網(wǎng)格搜索,只能檢測(cè)有限個(gè)值。
Xgboost缺點(diǎn):和其他樹模型一樣,不適合高維稀疏特征;算法參數(shù)過(guò)多,調(diào)參復(fù)雜,需要對(duì)XGBoost原理十分清楚才能很好的使用XGBoost。
7. SVM
SVM即支持向量機(jī),它是將向量映射到一個(gè)更高維的空間里,在這個(gè)空間里建立有一個(gè)最大間隔超平面。在分開數(shù)據(jù)的超平面的兩邊建有兩個(gè)互相平行的超平面,分隔超平面使兩個(gè)平行超平面的距離最大化。假定平行超平面間的距離或差距越大,分類器的總誤差越小。
SVM的優(yōu)點(diǎn):
使用核函數(shù)可以向高維空間進(jìn)行映射;屬于強(qiáng)分類器,準(zhǔn)確的較高;
能夠處理非線性特征的相互作用。
SVM的缺點(diǎn):
SVM最大的缺點(diǎn),本人認(rèn)為會(huì)耗費(fèi)大量的機(jī)器內(nèi)存和運(yùn)算時(shí)間,這也是為什么隨著數(shù)據(jù)量越來(lái)越多,SVM在工業(yè)界運(yùn)用越來(lái)越少的原因;對(duì)缺失數(shù)據(jù)敏感;對(duì)非線性問題沒有通用解決方案,有時(shí)候很難找到一個(gè)合適的核函數(shù)。
8. 樸素貝葉斯算法
樸素貝葉斯算法是基于貝葉斯定理和特征條件獨(dú)立假設(shè)的分類方法,屬于生成式模型。
樸素貝葉斯的優(yōu)點(diǎn):
- 樸素貝葉斯模型發(fā)源于古典數(shù)學(xué)理論,有著堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ),以及穩(wěn)定的分類效率;對(duì)大數(shù)量訓(xùn)練和查詢時(shí)具有較高的速度。
- 即使使用超大規(guī)模的訓(xùn)練集,針對(duì)每個(gè)項(xiàng)目通常也只會(huì)有相對(duì)較少的特征數(shù),并且對(duì)項(xiàng)目的訓(xùn)練和分類也僅僅是特征概率的數(shù)學(xué)運(yùn)算而已;
- 對(duì)小規(guī)模的數(shù)據(jù)表現(xiàn)很好,能個(gè)處理多分類任務(wù),適合增量式訓(xùn)練(即可以實(shí)時(shí)的對(duì)新增的樣本進(jìn)行訓(xùn)練;
- 對(duì)缺失數(shù)據(jù)不太敏感,算法也比較簡(jiǎn)單,常用于文本分類;
- 樸素貝葉斯對(duì)結(jié)果解釋容易理解。
樸素貝葉斯的缺點(diǎn):
理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實(shí)際上并非總是如此,這是因?yàn)闃闼刎惾~斯模型假設(shè)屬性之間是相互獨(dú)立的,而這個(gè)假設(shè)在實(shí)際應(yīng)用中往往并不成立的。
雖然在屬性相關(guān)性較小時(shí),樸素貝葉斯性能良好。但是,在屬性個(gè)數(shù)比較多或者屬性之間相關(guān)性較大時(shí),分類效果并不好;需要知道先驗(yàn)概率,并且先驗(yàn)概率在很多時(shí)候多是取決于假設(shè),假設(shè)的模型可以有多種,從而導(dǎo)致在某些時(shí)候會(huì)由于假設(shè)的先驗(yàn)?zāi)P投沟妙A(yù)測(cè)效果不佳。
因?yàn)槭峭ㄟ^(guò)先驗(yàn)和數(shù)據(jù)來(lái)決定后驗(yàn)的概率來(lái)決定分類的,所以分類決策存在一定的錯(cuò)誤率;對(duì)輸入數(shù)據(jù)的表達(dá)形式很敏感。
9. 人工神經(jīng)網(wǎng)絡(luò)
以上都是傳統(tǒng)有監(jiān)督機(jī)器學(xué)習(xí)算法,但傳統(tǒng)的機(jī)器學(xué)習(xí)算法在數(shù)據(jù)量面前,會(huì)觸及一個(gè)天花板,一旦到達(dá)極限,傳統(tǒng)機(jī)器學(xué)習(xí)算法將無(wú)法跟上數(shù)據(jù)增長(zhǎng)的步伐,性能則停滯不前。而數(shù)據(jù)越多,神經(jīng)網(wǎng)絡(luò)越浪!隨著現(xiàn)在數(shù)據(jù)量越來(lái)越多,人工神經(jīng)網(wǎng)絡(luò)運(yùn)用越來(lái)越廣泛。
人工神經(jīng)網(wǎng)絡(luò)的優(yōu)點(diǎn):
- 可以充分逼近任意復(fù)雜的非線性關(guān)系;所有定量或定性的信息都等勢(shì)分布貯存于網(wǎng)絡(luò)內(nèi)的各神經(jīng)元,故有很強(qiáng)的魯棒性和容錯(cuò)性;
- 采用并行分布處理方法,使得快速進(jìn)行大量運(yùn)算成為可能;
- 可學(xué)習(xí)和自適應(yīng)不知道或不確定的系統(tǒng);
- 能夠同時(shí)處理定量、定性知識(shí)。
人工神經(jīng)網(wǎng)絡(luò)的缺點(diǎn):
- 黑盒過(guò)程,不能觀察之間的學(xué)習(xí)過(guò)程,輸出結(jié)果難以解釋,會(huì)影響到結(jié)果的可信度和可接受程度;學(xué)習(xí)時(shí)間過(guò)長(zhǎng),有可能陷入局部極小值,甚至可能達(dá)不到學(xué)習(xí)的目的;
- 神經(jīng)網(wǎng)絡(luò)需要大量的參數(shù),如網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、權(quán)值和閾值的初始值。
二、無(wú)監(jiān)督算法
無(wú)監(jiān)督學(xué)習(xí)輸入數(shù)據(jù)沒有被標(biāo)記,也沒有確定的結(jié)果,樣本數(shù)據(jù)類別未知,需要根據(jù)樣本間的相似性對(duì)樣本集進(jìn)行分類。常用的無(wú)監(jiān)督模型主要指各種聚類,主要有K均值聚類、層次聚類、密度聚類等。
1. K均值聚類
K-Means的主要優(yōu)點(diǎn):
原理簡(jiǎn)單,容易實(shí)現(xiàn);可解釋度較強(qiáng)。
K-Means的主要缺點(diǎn):
- K值很難確定;聚類效果依賴于聚類中心的初始化,收斂到局部最優(yōu);
- 對(duì)噪音和異常點(diǎn)敏感;
- 對(duì)于非凸數(shù)據(jù)集或類別規(guī)模差異太大的數(shù)據(jù)效果不好。
2. 密度聚類
密度聚類優(yōu)點(diǎn):
- 可以對(duì)任意形狀的稠密數(shù)據(jù)集進(jìn)行聚類,相對(duì)的K均值之類的聚類算法一般只適用于凸數(shù)據(jù)集;可以在聚類的同時(shí)發(fā)現(xiàn)異常點(diǎn),對(duì)數(shù)據(jù)集中的異常點(diǎn)不敏感;
- 聚類結(jié)果沒有偏倚,相對(duì)的,K-Means之類的聚類算法初始值對(duì)聚類結(jié)果有很大影響。
密度聚類缺點(diǎn):
- 如果樣本集的密度不均勻、聚類間距差相差很大時(shí),聚類質(zhì)量較差,這時(shí)用DBSCAN聚類一般不適合;如果樣本集較大時(shí),聚類收斂時(shí)間較長(zhǎng),此時(shí)可以對(duì)搜索最近鄰時(shí)建立的KD樹或者球樹進(jìn)行規(guī)模限制來(lái)改進(jìn);
- 調(diào)參相對(duì)于傳統(tǒng)的K-Means之類的聚類算法稍復(fù)雜,主要需要對(duì)距離閾值?,鄰域樣本數(shù)閾值MinPts聯(lián)合調(diào)參,不同的參數(shù)組合對(duì)最后的聚類效果有較大影響。
3. 層次聚類
層次聚類優(yōu)點(diǎn):
- 距離和規(guī)則的相似度容易定義,限制少。不需要預(yù)先制定聚類數(shù)。
- 可以發(fā)現(xiàn)類的層次關(guān)系。
- 可以聚類成其它形狀。
層次聚類的缺點(diǎn):
- 計(jì)算復(fù)雜度太高。奇異值也能產(chǎn)生很大影響。
- 算法很可能聚類成鏈狀。
三、總述
總之,選擇哪一個(gè)算法必須要適用于你自己的問題,這就要求選擇正確的機(jī)器學(xué)習(xí)任務(wù)。但很多情況下好的數(shù)據(jù)卻要優(yōu)于好的算法,設(shè)計(jì)優(yōu)良特征和做特征工程更有意義,但只有了解每個(gè)機(jī)器算法的原理及優(yōu)缺點(diǎn),才能根據(jù)不同的機(jī)器學(xué)習(xí)算法做相應(yīng)的特征工程(對(duì)特征工程感興趣的同學(xué)可以參考我在公眾號(hào)一個(gè)數(shù)據(jù)人的自留地寫的另一篇文章:機(jī)器學(xué)習(xí)中的特征工程)。
作者:飛狐沖沖,在國(guó)內(nèi)知名央企負(fù)責(zé)AI算法建模類工作;曾經(jīng)在京東、美團(tuán)等大型互聯(lián)網(wǎng)公司擔(dān)任算法工程師的崗位;具有豐富的算法開發(fā)經(jīng)驗(yàn);“數(shù)據(jù)人創(chuàng)作者聯(lián)盟”成員。
本文由@一個(gè)數(shù)據(jù)人的自留地 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
專欄作家
一個(gè)數(shù)據(jù)人的自留地,公眾號(hào):一個(gè)數(shù)據(jù)人的自留地。人人都是產(chǎn)品經(jīng)理專欄作家,《數(shù)據(jù)產(chǎn)品經(jīng)理修煉手冊(cè)》作者。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
任何事物都具有兩面性,如何取其利,避其害,是我們要不斷學(xué)習(xí)的東西