SQLFlow走進清華經管,企業實踐課總結

自滴滴出行與螞蟻金服對SQLFlow進行開源共建以來,雙方展開了多方面有意義的合作。2019年11月5日,滴滴高級數據科學家高梓堯老師受邀走進清華經濟管理學院,來到清華大學-哥倫比亞大學商務分析雙碩士學位項目的專業課之一“商務分析整合實踐”課堂,給同學們做了精彩介紹,並指導大家實際上手使用了SQLFlow。同學們學得怎樣,對SQLFlow的評價如何?讓我們來聽聽同學們的課程總結。

一、選題動機

清華經管學院自2018年春季以來推出“商務分析整合實踐”課,這門課由清華經管學院副院長、管理科學與工程系徐心教授、劉登攀教授及王純教授共同擔任任課教師。通過老師們在開課時的詳細介紹,我們瞭解到這門課程的設立旨在通過指導學生參與企業所主導的商務分析項目使其獲得真實的業界工作體驗,從而加深同學們對商務分析知識的理解,提高其解決實際商務分析問題的能力。老師們通過讓大家參與真實企業項目的形式,採取企業+校園相結合的模式,從而調動大家的主觀能動性,促進積極思考,在一邊學習一邊工作的過程中提升邏輯思維能力,同時體驗和感受真實的一線商務分析場景。課程結束後,這門課程將能夠幫助學生增強系統全面地解決實際商務分析問題的能力,使其熟練使用現代企業所常用的商務分析工具,熟悉企業真實的商務分析場景,加強團隊合作能力。這門課程通過小組作業形式,在兩個月內共八次的課程中,與多個企業合作,由每組完成一項企業真實項目的課題研究,授課方式是由課程導師+企業導師+小組搭檔互評的方式多方位來考核課程成績,因此不論從時間,還是能力上都充滿挑戰,而我們也正是通過本次課程與SQLFlow結緣。

我們第一次聽到SQLFlow,是在選擇課題那天,由滴滴數據科學部門的高級數據科學家高梓堯老師在講臺上初次介紹,隨後瞭解到該項目是螞蟻金服和滴滴出行於2019年7月份開始合作共建的開源項目。

高老師的介紹中提到“不用很懂編程就能完成人工智能項目”、“產品經理也可以直接建模完成產品需求”、“實現提取數據到建模的一體化”、“SQLFLow可以實現人工智能的大眾化和普及化”等讓人耳目一新的ideas,一下子就激發起我們的興趣。

SQLFlow走進清華經管,企業實踐課總結

圖1 高梓堯老師在清華經管的“商務分析整合實踐”課堂上介紹SQLFLow

在我們的印象中,建模是需要一定的AI知識門檻的,那麼這個新產品到底是怎麼做到的呢?SQL究竟是如何與機器學習聯繫在一起呢?僅使用SQL語句,不涉及編程代碼真的可以完成機器學習模型的構建嗎?為了解答我們內心的困惑,迅速組隊報名了滴滴的SQLFlow項目組——基於SQLFlow的滴滴乘客活躍度因素探究。

二、項目準備階段

在課程助教的帶領下,我們前往滴滴的新橙海大廈訪問並啟動了項目。

企業導師為我們介紹了項目相關的背景知識、需要的理論基礎以及相關業務邏輯。其核心內容是:探究影響滴滴乘客活躍度的重要因素。通過對問題的分解,我們認為可以使用迴歸模型對乘客活躍度進行建模,通過模型解釋,將得到的結論應用於實際的業務場景中,進而提出改進建議。

為了讓大家從實際業務人員的角度出發,體驗SQLFlow在實戰中的應用便捷,因此這個項目的課程計劃是,一開始將不會帶著學員直接體驗SQLFlow,而是先按照傳統的機器學習方法完成項目,而後才開始體驗SQLFlow在實戰中的應用。

三、項目過程

接下來就正式開始了項目工作。

傳統的建模流程會從需求討論出發,首先要明確要解決的問題,然後經過需求評審與方案制定,最終開發出符合業務需求的模型,這整個是一個循環迭代的過程,不同的需求側重對應不同方案。

比如在這個乘客活躍度項目中,可以依據該項目的不同的特徵及業務需求,從多個不同的角度定義乘客活躍度這個概念。而在模型設計與代碼開發環節需要紮實的算法與代碼功底,推進整個模型搭建。這一部分主要由技術部門實現,而一個很現實的問題是,分析師對問題的理解可能與上層需求不相符,一旦二者的思路不同頻,會嚴重影響工作效率與質量。

SQLFlow走進清華經管,企業實踐課總結

圖2 傳統建模流程

在企業導師的幫助和指導下,我們完成了用來提取數據SQL程序開發以及通過 SQL 程序提取數據。然後在原始數據集基礎上,通過數據預處理、模型構建、參數調整、模型評估及預測等環節完成建模及重要影響因素的挖掘。

完成傳統建模步驟的時候,已經是項目的第7天,企業導師終於帶我們開始嘗試使用SQLFlow來處理我們的任務。由於滴滴內部已經實現了在他們的數據平臺中實現將SQLFlow和內部數據庫系統連接通了,因此,我們在導師的帶領下體驗了在公司實戰中如何使用SQLFlow的全流程。

第一步,是數據準備工作,在登陸其內部數據平臺的notebook中,通過直接在notebook中編寫SQL語句,從數據庫中可以直接獲取到初始數據。而且滴滴內部已經實現了數據預處理功能的集成,因此,我們可以方便的調用到已有的方法進行數據清洗,與此同時,也支持Python自定義清洗功能的設定。這一過程可以通過SQL實現也可以通過Python編碼實現。整個設計較為靈活。相比較前面的傳統方式的建模,該過程不再需要將數據下載到本地,提升了工作效率的同時節約了本地存儲資源,從企業的數據安全的角度來看,由於該過程沒有將雲端數據下載到本地電腦中,降低了數據洩露的可能,提升了數據安全性。

第二步,是數據建模的工作。通過擴展SQL語句從數據庫中選出要參與訓練的數據,訓練相應機器學習模型。圖2為利用訓練集訓練XGBoost模型的SQL語句。

SQLFlow走進清華經管,企業實踐課總結

圖3 SQL語句實現XGBoost模型建立

首先我們需要明確本次建模目標,是要選擇一個具有解釋性的模型來對我們的乘客活躍度訓練數據集進行建模,其中目標字段是乘客活躍度,使用的是迴歸模型。因此,在 SQL 語句中,通過SELECT子句選出訓練數據集;通過TO TRAIN子句明確使用的模型,此處之所以選擇XGBoost,這是SQLFLow中常用的具備可解釋性的模型之一;在LABEL子句中指出當前任務的目標列,即乘客活躍度;可以在WITH部分實現調參功能,其支持的參數和官方XGBoost的參數一致,可以根據本項目任務類型進行確定,可以通過“validation.select”引入驗證集,用於驗證當前模型的表現能力;INTO將訓練好的模型保存在哪個數據表中。

第三步,對建立的模型進行解釋。圖3中展示的是通過 SHAP 工具對模型進行解釋性分析的 SQL 語句。

SQLFlow走進清華經管,企業實踐課總結

圖4 SQL語句實現模型解釋

在此階段我們使用剛才訓練好的模型對訓練數據集進行解釋,瞭解到哪些特徵是影響乘客活躍度的主要因素。因此,在SELECT子句中選在訓練數據集作為輸入;在TO EXPLAIN子句中設置我們用來解釋的模型,即在第二步中訓練好的模型;然後在WITH子句中設置 SHAP 值畫圖的一些參數,該參數和SHAP官網的參數對應一致,因為我們項目的目標是識別乘客活躍度的影響因素,因此,我們這裡這裡畫圖方式選取繪製摘要圖“點圖”,用以顯示每個因素對乘客活躍度的影響分佈,我們可以看到哪些特徵對模型的預測結果有較大影響,哪些特徵對預測結果影響較小。

第四步,對模型進一步解讀分析。通過第三步的操作得到了解釋模型SHAP圖(如下圖4所示)。

SQLFlow走進清華經管,企業實踐課總結

圖5 乘客活躍度SHAP解釋圖

接下來我們需要根據該結果並結合我們的業務邏輯發現影響乘客活躍度重要因子。我們可以比較清晰的看出影響乘客活躍度的部分因素與直覺中預想的並不完全一致,諸如司機來電次數(driver_call_cnt)這類預先未料想到的體驗因素,對乘客活躍度的影響較大,司機來電次數越多的乘客,模型傾向於預測其活躍度更高,反映出一定程度上的司乘溝通能夠給乘客帶來良好的乘車體驗,能夠正向影響乘客積極性。除此之外,在這個過程中,我們在導師的帶領下,學習到了SHAP中的因子重要性可以幫助進行特徵篩選,進而構建表現更優業務解釋能力更強的模型。

值得注意的是,通過SQLFlow簡潔的語法得到的結果與使用 Python 代碼進行傳統機器學習建模得到的結果基本一致,而這個過程僅用了不到半天的時間

四、項目感受與思考

SQLFlow的官方介紹中強調了SQLFlow = SQL + AI,平臺將數據庫與AI引擎嵌合,極大降低了AI模型的使用門檻。在使用中,讓我們感觸最深的是SQLFlow的便捷與易操作性。和我們最初拿到項目的狀態相似,SQLFlow所面向的用戶大多對於AI建模瞭解較少,即使有很多想法但無法通過代碼或者模型進行落實,而SQLFlow的出現為有建模需求的所有業務人員(不管有沒有編程技術)點亮一盞明燈,而用戶如果能熟練使用SQL語句在數據庫中進行數據檢索與提取,那麼用戶就可在SQLFlow平臺上,通過SQL語句完成實現了數據提取與AI模型建立。

在這次實踐項目,我們在前期基於傳統的機器方法進行建模,算下來從理論知識學習到實操數據處理和建模等環節,整個約佔了6天的時間(整個課程一共8天的時間),這其中可以刨去我們理解該業務模型的背景邏輯之外所需要的時間約1-2天,即在學習理論知識、學習Python編程建模、學習機器學習模型基礎知識等等一共花費了約5-6天的時間。而我們在後期基於SQLFlow的建模僅僅花費半天左右的時間,完成了從瞭解SQLFlow的語法規則到基於我們的實際需求進行建模。因此,我們很清楚地認識到SQLFlow對於需要在短時間內完成一個數據分析項目的分析師來說可以降低學習門檻,提高工作效率。

除此以外,SQL語法直觀並且容易理解,極大地降低了AI算法編程的門檻,用戶不需要是精通算法的數據科學家,甚至可以完全不擅長編程,或者對於編程初學者而言,書寫代碼時耗時耗力,存在篇幅較長又不一定功能正確的問題。SQLFLow賦能於那些有著業務邏輯但是機器學習建模基礎薄弱的人,通過簡潔的SQL語法就幫助解決了建模這一痛點。此外,SQLFlow的應用降低了不同職能部門之間溝通的成本。

從學生的角度來看,我們在日常完成數據分析任務時所遇到的最大問題是怎樣通過正確簡明的代碼完成複雜模型的構建。這其中會遇到許多算法邏輯和代碼語法問題,而解決這些問題需要補充數據結構等一系列算法編程知識,對於有時間限制的完整分析建模項目來說時間與學習成本很高。而SQLFlow的出現則可以在模型構建上幫助我們簡化了很多繁瑣的代碼過程,極大提高了工作效率。

五、 結語

機器學習建模對於編程初學者而言並非易事,從幾乎零基礎在兩個月八節課的實踐中完成一個數據分析項目也尤為挑戰。但是經過了傳統模型的全程嘗試,又體驗了基於SQLFlow的建模流程,後者在代碼簡潔程序、流程一體化與消除產品和技術部門壁壘上有著極大優勢,讓我們體會到了技術創新賦能給用戶帶來的便利。相信未來會有更多具備商業邏輯的業務人員能夠藉助SQLFlow這一平臺來更直接地服務於客戶,迴歸產品需求本質。

兩個月八天項目課程的學習使我們收穫頗豐,非常感謝清華經管學院能夠提供這樣一個寶貴的學習和實踐平臺,讓我們能夠參與切身體會到基於企業實際業務進行分析的過程,感謝本課程的指導老師徐心教授、劉登攀教授、王純教授的幫助和支持。同時,我們也由衷感謝滴滴出行公司提供的實踐機會,感謝滴滴科技生態與發展部對本次項目的支持,感謝滴滴首席數據科學家謝梁老師,以及企業導師高梓堯老師、李群老師、朱文靜老師的全程指導。最後,由衷地祝願SQLFlow能夠擁有更加豐富的模型,更簡潔的語法,能服務更多具備分析需求的業務專家,成為其常用的必備的數據分析工具。

SQLFlow走進清華經管,企業實踐課總結

圖6 滴滴新橙海大廈的合作項目全體成員的合影


分享到:


相關文章: