99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀作為數(shù)據(jù)科學(xué)家,我都有哪些弱點(diǎn)?
作為數(shù)據(jù)科學(xué)家,我都有哪些弱點(diǎn)?
2018-12-24
收藏

作者 | William Koehrsen

翻譯 | Mika

本文為 CDA 數(shù)據(jù)分析師原創(chuàng)作品,轉(zhuǎn)載需授權(quán)


如果現(xiàn)代工作面試教會(huì)了我們什么,那就是關(guān)于“你最大的弱點(diǎn)是什么?”這個(gè)問題,正確答案是“我工作太努力了?!憋@然,說出自己的弱點(diǎn)是很可笑的。雖然在個(gè)人簡(jiǎn)歷中列出弱點(diǎn)不太好,但是如果不承認(rèn)自己的不足,我們就無法采取措施改善它們。


做出改進(jìn)的方法很簡(jiǎn)單:

明確現(xiàn)在的位置:找出弱點(diǎn)

想變成什么樣:制定實(shí)現(xiàn)的計(jì)劃

執(zhí)行計(jì)劃:一步步改進(jìn)


我們很少能跨越第一步,特別是對(duì)于在技術(shù)領(lǐng)域工作的人群。我們埋頭苦干,不斷工作,使用已掌握的技能,而不是獲得哪些能讓我們工作更輕松或能帶來新機(jī)會(huì)的新技能。自我反省,客觀地評(píng)估自己,這似乎是一個(gè)陌生的概念。但若能夠退后一步,弄清我們哪些方面能做得更好,從而在該領(lǐng)域取得進(jìn)步,這是至關(guān)重要的。


考慮到這一點(diǎn),我試著客觀地評(píng)價(jià)自己,并總結(jié)了目前自己的三個(gè)弱點(diǎn),改善以下這幾點(diǎn)能讓我成為更好的數(shù)據(jù)科學(xué)家:

軟件工程

擴(kuò)展數(shù)據(jù)科學(xué)

深度學(xué)習(xí)


本文中我列出這些弱點(diǎn)主要的目的在于:首先,我非常想提高自己的能力,通過列出自己的不足以及如何解決它們,希望能夠激勵(lì)自己繼續(xù)學(xué)習(xí),完成目標(biāo)。

其次,我希望鼓勵(lì)其他人思考自己有哪些沒掌握的技能,以及該如何獲取這些技能。

最后,我想告訴你,成為出色的數(shù)據(jù)科學(xué)并不需要做到無所不知。關(guān)于數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的知識(shí)是無線的,你能夠掌握的是有限的。我常常聽到初學(xué)者抱怨,要掌握的知識(shí)太多了,我給出的建議就是:從基礎(chǔ)開始,你并不需要掌握所有內(nèi)容。


只有極少的數(shù)據(jù)科學(xué)家能夠掌握全部知識(shí)


對(duì)于每個(gè)弱點(diǎn),我都列出了具體的問題,以及我目前在做什么進(jìn)行改進(jìn)。發(fā)現(xiàn)自己的不足很重要,但制定改進(jìn)計(jì)劃也同樣重要。學(xué)習(xí)一項(xiàng)新技能需要時(shí)間,但計(jì)劃好一步步的具體步驟會(huì)大大增加你成功的幾率。


1. 軟件工程


在大學(xué)時(shí)進(jìn)行我的第一個(gè)數(shù)據(jù)科學(xué)項(xiàng)目后,我開始試著避免一些數(shù)據(jù)科學(xué)方法中的壞習(xí)慣。其中包括編寫僅運(yùn)行一次的代碼,缺少文檔,沒有一致性且難閱讀的代碼,硬編碼特定值等。這些都是寫論文所帶來的,為了寫一篇論文,開發(fā)針對(duì)特定數(shù)據(jù)集且只能運(yùn)行一次的解決方案。

其中一個(gè)典型的例子是,我們有個(gè)項(xiàng)目使用建筑能源數(shù)據(jù),最初每隔15分鐘獲取一次數(shù)據(jù)。當(dāng)我們把時(shí)間增加為20分鐘時(shí),數(shù)據(jù)管道完全崩潰了,因?yàn)樵S多地方已明確將時(shí)間編為15分鐘。我們不能進(jìn)行簡(jiǎn)單的查找和替換,因?yàn)樵搮?shù)被設(shè)定為多個(gè)名稱,如`electricity_interval` `timeBetweenMeasurements`還有`dataFreq`。我們當(dāng)中沒有人想過讓代碼更易閱讀或能夠靈活改變輸入。

相比之下,從軟件工程的角度來看,代碼必須使用大量不同的輸入進(jìn)行測(cè)試,在現(xiàn)有框架內(nèi)工作,并遵守編程標(biāo)準(zhǔn),以便其他開發(fā)人員能夠理解。盡管我的初衷是好的,但我偶爾會(huì)像數(shù)據(jù)科學(xué)家那樣寫代碼,而不是像軟件工程師那樣?,F(xiàn)在我正在訓(xùn)練自己像計(jì)算機(jī)科學(xué)家一樣思考。


我在做什么


學(xué)習(xí)技能沒有比練習(xí)更好的方法。幸運(yùn)的是,在我目前的工作中,我能夠?yàn)閮?nèi)部工具和開源庫(Featuretools)做出貢獻(xiàn)。這迫使我學(xué)習(xí)了很多技能,包括:

編寫單元測(cè)試

遵循編碼風(fēng)格

編寫接受更改參數(shù)的函數(shù)

徹底記錄代碼

讓他人檢查代碼

重構(gòu)代碼,使其更簡(jiǎn)單、更易于閱讀


對(duì)于還未工作的數(shù)據(jù)科學(xué)家,你也可以通過參與開源項(xiàng)目獲得這些經(jīng)驗(yàn)。除此之外,你還可以通過查看GitHub上流行庫的源代碼。

像軟件工程師一樣思考需要改變思維模式,但做到這一點(diǎn)并不難。例如,每當(dāng)我發(fā)現(xiàn)自己在Jupyter Notebook中復(fù)制和粘貼代碼并更改一些值時(shí),我就會(huì)停下來,并意識(shí)到從長(zhǎng)遠(yuǎn)的角度看用函數(shù)會(huì)更高效。


總有需要改進(jìn)的地方(在Sublime Text 3中使用pylint)


我還想研究計(jì)算機(jī)科學(xué)的許多其他方面,例如編寫有效的實(shí)現(xiàn),而不是用蠻力方法(例如使用矢量化而不是循環(huán))。同時(shí)要注意想一下子全部改變是不顯示的,這也是我為什么專注于一些實(shí)踐,并將其融入到我的工作流程中。

雖然數(shù)據(jù)科學(xué)自成一體,但從業(yè)者仍可以通過借鑒軟件工程等領(lǐng)域的最佳實(shí)踐從中受益。


2. 擴(kuò)展數(shù)據(jù)科學(xué)


雖然你可以自學(xué)數(shù)據(jù)科學(xué)中的所有內(nèi)容,但要將其應(yīng)用到實(shí)踐中還是存在一些限制。一個(gè)是難以將分析或預(yù)測(cè)模型擴(kuò)展到大型數(shù)據(jù)集。我們中大多數(shù)人無法訪問計(jì)算集群,也不想為一臺(tái)個(gè)人超級(jí)計(jì)算機(jī)掏錢。這意味著當(dāng)我們學(xué)習(xí)新方法時(shí),我們傾向于將它們應(yīng)用于小型且表現(xiàn)良好的數(shù)據(jù)集。

然而在現(xiàn)實(shí)情況中,數(shù)據(jù)集并不符合一定的大小或干凈程度,你需要用不同的方法來解決問題。首先,你可能需要打破個(gè)人計(jì)算機(jī)的安全限制,使用遠(yuǎn)程實(shí)例(例如通過AWS EC2)甚至多臺(tái)計(jì)算機(jī)。

在學(xué)習(xí)數(shù)據(jù)科學(xué)時(shí),我嘗試在EC2機(jī)器上練習(xí),這有助于讓我熟悉命令行,但是,我仍然沒有解決當(dāng)數(shù)據(jù)集大于機(jī)器的內(nèi)存情況。最近,我意識(shí)到這一點(diǎn)限制了我的前進(jìn),是時(shí)候?qū)W習(xí)如何處理更大數(shù)據(jù)集的了。


我在做什么


即使不在計(jì)算資源上花費(fèi)大量金錢,就可以實(shí)踐超出內(nèi)存限制的數(shù)據(jù)集的處理方法。其中包括每次迭代數(shù)據(jù)集的一部分,將大型數(shù)據(jù)集分成較小的數(shù)據(jù)集,或者使用Dask這樣的工具來處理大數(shù)據(jù)。

我目前采用的方法是將數(shù)據(jù)集分為多個(gè)子集,開發(fā)能夠處理每個(gè)部分的管道,然后使用Dask或Spark,與PySpark并行地運(yùn)行管道中的子集。這種方法不需要用到超級(jí)計(jì)算機(jī)或集群,你可以在個(gè)人計(jì)算機(jī)上并行操作。

此外,由于像Kaggle等數(shù)據(jù)存儲(chǔ)庫,我能夠找到一些大型的數(shù)據(jù)集,并查看其他數(shù)據(jù)科學(xué)家的處理它們的方法。我已經(jīng)學(xué)到了很多有用的技巧,例如通過更改數(shù)據(jù)框中的數(shù)據(jù)類型來減少內(nèi)存消耗。這些方法有助于更有效地處理任何大小的數(shù)據(jù)集。

雖然我還沒處理過TB級(jí)的數(shù)據(jù)集,但這些方法幫助我學(xué)習(xí)了處理大數(shù)據(jù)的基本方法。對(duì)于最近的一些項(xiàng)目,我能夠運(yùn)用目前學(xué)到的技能對(duì)在AWS上運(yùn)行的集群進(jìn)行分析。希望在之后的幾個(gè)月,我能逐步提高處理數(shù)據(jù)集的大小。


美國(guó)國(guó)會(huì)圖書館“只有”3PB的材料

3. 深度學(xué)習(xí)


雖然人工智能在繁榮和蕭條中更迭,但是它最近在計(jì)算機(jī)視覺、自然語言處理、深度強(qiáng)化學(xué)習(xí)等領(lǐng)域的成功應(yīng)用讓我確信基于神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)不是曇花一現(xiàn)。

與軟件工程或擴(kuò)展數(shù)據(jù)科學(xué)不同,我目前的職位不需要用到深度學(xué)習(xí),例如隨機(jī)森林等傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)已經(jīng)能夠解決所有問題。但是,我認(rèn)識(shí)到并非每個(gè)數(shù)據(jù)集都是結(jié)構(gòu)整齊的,而神經(jīng)網(wǎng)絡(luò)是目前處理文本或圖像項(xiàng)目的最佳選擇。


探索和利用的權(quán)衡在強(qiáng)化學(xué)習(xí)和你的生活中的應(yīng)用


深度學(xué)習(xí)中有許多不同的子領(lǐng)域,很難弄清楚哪些方法最終會(huì)勝出。盡管如此,我認(rèn)為熟悉該領(lǐng)域能夠讓人們能夠處理更廣泛的問題。


我在做什么


我學(xué)習(xí)深度學(xué)習(xí)的方法與成為數(shù)據(jù)科學(xué)家的方法相同:

閱讀著重部署應(yīng)用的書籍和教程

在實(shí)際項(xiàng)目中練習(xí)技術(shù)和方法

通過寫作分享和解釋我的項(xiàng)目

在學(xué)習(xí)一項(xiàng)技術(shù)時(shí),最有效的方法是邊做邊學(xué)。對(duì)我來說,這意味著不是從基礎(chǔ)的基礎(chǔ)理論開始,而是通過找出如何實(shí)現(xiàn)解決問題的方法。這種自上而下的方法意味著我更重視關(guān)于動(dòng)手的書籍,即當(dāng)中包括許多代碼例子。


對(duì)于深度學(xué)習(xí),我主要看了以下三本書:

Deep Learning Cookbook,作者:Douwe Osinga

Deep Learning with Python,作者: Francois Chollet 

Deep Learning,作者:Ian Goodfellow、Yoshua Bengio、Aaron Courville


前兩本重點(diǎn)是用神經(jīng)網(wǎng)絡(luò)構(gòu)建實(shí)際解決方案,而第三本重點(diǎn)是深入理論。當(dāng)閱讀有關(guān)技術(shù)主題的書籍時(shí),你需要更主動(dòng)參與其中,盡可能試著書中的代碼。像前兩本提供代碼例子的書籍很棒,我經(jīng)常會(huì)在Jupyter Notebook中逐行輸入代碼,弄清當(dāng)中的原理。

此外,我不僅試著復(fù)制這些代碼,還會(huì)將它們用于自己的項(xiàng)目。這方面的一個(gè)應(yīng)用是我最近構(gòu)建的圖書推薦系統(tǒng),該系統(tǒng)是根據(jù)Deep Learning Cookbook的類似代碼改編的。從頭開始創(chuàng)建自己的項(xiàng)目可能會(huì)令人生畏,但這也是提升自己最好的方法。

最后,學(xué)習(xí)技術(shù)最有效方法之一是教別人。只有當(dāng)我試著用簡(jiǎn)單的術(shù)語向其他人解釋時(shí),我才能我完全理解這個(gè)概念。隨著學(xué)習(xí)深度學(xué)習(xí)的每個(gè)知識(shí),我將寫下了,分享當(dāng)中的技術(shù)實(shí)現(xiàn)細(xì)節(jié)和概念性解釋。

教學(xué)是最好的學(xué)習(xí)方式之一,我打算將其作為學(xué)習(xí)深度學(xué)習(xí)的一個(gè)重要組成部分。



結(jié)語


羅列自己的弱點(diǎn)可能會(huì)有點(diǎn)奇怪,但這能讓我成為更好的數(shù)據(jù)科學(xué)家。而且,我發(fā)現(xiàn)很多人,包括雇主們,會(huì)對(duì)你坦誠自己的弱點(diǎn)并探討如何解決它們留下深刻印象。

缺乏某些技能并不是缺點(diǎn)——真正的缺點(diǎn)是假裝你什么都懂,而且沒有想改進(jìn)的意思。

通過發(fā)現(xiàn)我在數(shù)據(jù)科學(xué)方面的弱點(diǎn):軟件工程,擴(kuò)展分析/建模,深度學(xué)習(xí),我的目標(biāo)是提高自己,鼓勵(lì)其他人思考自己的弱點(diǎn)。要成為成功的數(shù)據(jù)科學(xué)家,你并不需要什么都懂。雖然反思自己的弱點(diǎn)可能是痛苦的,但學(xué)習(xí)是愉快的:最有成就感的事情莫過于,經(jīng)過一段時(shí)間的持續(xù)學(xué)習(xí)后,你會(huì)發(fā)現(xiàn)自己比剛開始時(shí)已經(jīng)懂了很多。


數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }