構建機器學習項目檔案
原文:Building a data science portfolio: Machine learning project
作者:Vik Paruchuri,開發者,數據科學家,Dataquest.io創始人
翻譯:Alvin 校審:KK4SBB
責編:周建丁(zhoujd@csdn.net)
下文僅是一系列關于如何建立數據科學檔案(Data Science Portfolio)的文章的一部分。如果你喜歡此篇文章,并且想得到該系列最新的連載文章,可以在頁面的底部選擇訂閱。
大數據企業在評估新員工的時候會越來越重視他們的檔案。原因之一就是檔案是判斷某人在現實世界的技能的最佳方式。但好的消息是此檔案完全在你的的掌控范圍內,如果你做了一定的工作,你將得到一份企業青睞的好檔案。
建立優質數據檔案的第一步是確定需要展示哪些技能。如下是企業想在你的數據檔案里看到的一些基本技能:
溝通的能力。與他人合作的能力。技術的程度。解釋能力的相關數據。動力和主觀能動性。
任何一個優秀的檔案是由多個項目組成,每個項目至少包括上述的一到兩點。此文是一系列關于如何建立數據科學檔案的文章的一部分。在文章中將會講述到如何在你的數據檔案中添加第二個項目,而且將會闡述如何構建一個端對端的機器學習項目。在文章最后,你將會擁有一個通過數據展現你的水平和技術能力的項目。如果你感興趣一定不能錯過此篇文章。
端對端的項目
作為一個數據科學的科學家,有時候你會被要求得出一個數據集并且要描述他。在這種情況下,良好的交流過程和連貫的思路變得很重要。比如一些工具例如“Jupyter 記事本”(Jupyter notebook),這個工具在我們這之前的文章中使用過,對我們的幫助很大。這里想說的是,我們期待的成果是一個能總結你的發現成果的演示或者文檔。
然而有些時候,你會被要求創建一個具有操作價值的項目。這個具有操作價值的項目直接影響公司的日常運作,并且使用的時間和操作的人數都會很大。這樣的任務可能是用來“創建一個算法來預測我們的客戶的流失率”或者“創建一個可以自動標識我們的文章的模型”。在這只能過情況下,敘述故事跟技術能力相比,就顯得不是那么重要了。你需要構建并且了解一個數據集,然后創建一組可以處理數據的腳本程序。重要的是這些腳本運行要很快并且盡可能少的使用例如內存的系統資源。常見的是這些腳本程序將運行不止一次,所以需要交付的是實實在在的程序代碼而不是一個流程演示。同時這些交付項目往往是需要納入業務流程的范疇,甚至可能是面向用戶的。
構建端對端項目的主要要素如下:
理解上下文。研究數據并找出其中細微的差別。創建一個結構良好的項目,所以此項目才能輕松地集成到操作流程里。編寫高性能的,運行速度快的,并使用最少系統資源的代碼。記錄你的程序安裝和使用情況,好的記錄會反應你的代碼質量的好壞,從而方便代碼的復用。
為了有效創建這種類型的項目,我們需要操作多個文件。使用文本編輯器比如Atom,或者集成開發環境比如強烈推薦PyCharm。這些工具可以方便你在文件之間切換并且編輯不同類型的文件,比如markdown文件,Python文件,csv文件等等。還有構建你的項目,所以版本控制變得非常容易操作,同時可以上傳到可協作編碼工具例如Github。
這個項目的Github頁面
在這篇文章中,我們將使用我們的編輯工具,比如Pandas和scikit-learn。我們將廣泛的利用Pandas的數據框,它可以很容易地閱讀和操作Python上的數據表格。
尋找優秀的數據集
一個好的端對端數據集項目是很難找到。這就要求數據量需要足夠的大,這樣才能使得存儲器和系統性能發揮作用。它還可能需要在操作上非常有用,例如,在這個數據集中包含錄取標準,畢業率數據,并且畢業后的未來收益對于一個美國大學都是將是一個值得稱贊的巨大數據檔案。但是,當你在考慮這個數據集時,你會清楚地發現它沒有足夠的差別以建立一個良好的端對端項目。例如,你可以告訴別人他的潛在的未來收益,如果他們去了一個特殊的大學,但是這將沒有足夠的差別來快速表明其技術水平。你也可以判別是否具有較高入學標準的院校會擁有更多薪資的畢業生,這將比運營更具有故事性。
當你擁有比千兆字節還要多的數據時,這些內存和性能的限制往往會發揮作用,同時當你需要預測一些事情的時候,其中涉及的運行算法是要超過數據集本身的。
良好的操作數據使你能夠創建一組轉換數據的腳本程序,并且即時地回答問題。一個很好的例子就是關于股票價格的數據集。你將能夠預測第二天的價格,并將最新的數據反饋給后臺作為交易的結果。這將有利于你進行交易甚至可能從中盈利。這不僅僅是講述一個故事,而是從中獲利。
這里有一些能夠找到這樣的數據集的好地方:
/r/datasets,一個擁有數百個有趣的數據集的版塊。Google Public Datasets,可以通過谷歌的BigQuery得到的公共數據集。Awesome datasets,一個托管在Github上的數據集列表。
在查看這些數據集的時候,想想有人會問到跟此數據集相關的問題,并且如果這些問題都是一次性的(“住房價格和標準普爾500指數有什么關聯?”)或者是(“你能預測股市嗎?”)。這里的關鍵是找到正在進行的,并需要相同的代碼在多次運行的問題中輸入不同的數據。
對于這篇文章的目的而言,我們將看看Fannie Mae貸款數據,Fannie Mae是美國政府贊助的企業,用來從其他貸款人手中購買按揭貸款。然后,它捆綁了這些貸款作為抵押貸款放入證券和轉售他人。這使得貸款人有更多的按揭貸款,并且在市場上創造更多的流動性。這在理論上會產生更多的購房交易和更好地貸款條件。雖然從借款人的角度來看,事情保持大致相同。
Fannie Mae發布了兩種類型的數據,一種是獲得貸款的數據另一種是貸款表現的數據。在理想情況下,有人從貸款人借錢,然后償還貸款,直到余額為零。然而,一些借貸人錯過了多次付款的機會,這可能會導致他們喪失抵押品的贖回權。當抵押品的贖回權喪失的時候,房子就會被銀行沒收,因為他們無法按時還款。Fannie Mae錯過了對支付貸款的跟蹤和哪些貸款被取消了贖回權。此數據每季度出版一次,并且落后當前數據一年,在撰寫本文時所用的最新的數據集止于2015年第一季度。
這些由Fannie Mae出版的采集數據,包含借貸人的信息,比如,信用分數,貸款和家庭的信息,收入信息。當貸款放出后,每季度公布這些信息,包括借款人的取消抵押品贖回權的狀態和任何的支付信息。這些貸款可能會包含十幾行的情況數據。好消息是這些收獲的數據告訴你Fannie Mae 目前正在控制貸款,并且這些數據包含了一系列貸款狀態的最新信息。其中一個最新的狀態可能告訴我們貸款在一些季度會取消抵押品贖回權。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%