陳永保
(上海理工大學 能源與動力工程學院,上海)
大數據科學伴隨著信息技術發展而來,是信息化進程的發展新階段,其發展推動了數字經濟的形成與繁榮[1]。現今,在“萬物物聯”的背景下,大數據的獲取變得更加容易,海量的大數據為各行各業所遇到的理論及技術難題分析與研究提供了新的角度。大數據技術促進了包括人工智能、機器學習等領域的發展,從而服務于各行各業[2-3]。
例如,在醫學領域,2020年3月,海軍軍醫大學長海醫院等學者在Nature上發文,他們通過大數據技術揭示了全球首份中國前列腺癌大數據圖譜[4]。基于這些數據圖譜,科學家就能夠了解到個體的哪些基因突變可能致癌,哪些人更容易患該病,從而具備了理論依據去尋找預防和精準治療這些患者的方法。類似利用大數據技術在各類疾病防控及治療等方面均獲得了較好的效果,例如遺傳影像[5]、神經系統疾病[6]、心血管疾病[7]等。在農業領域,2021年8月,河北農業大學等學者通過大數據技術破譯了陸地棉和海島棉的結構變異圖譜,相關研究成果也發表于國際頂級期刊Nature Genetics上[8]。大數據技術的應用幾乎涵蓋了現有的所有工程領域,可以從不同維度去理解、解釋一些傳統方法尚未解決的理論和工程難題。
實際工程應用的急劇需求加速了大數據科學與大數據技術在課程建設方面的發展[9-10],高校則承擔著為社會輸送大數據人才的重要職責。2016年2月,北京大學等首次成功申請該專業,日前我國已有超過250所高校獲批了大數據相關專業辦學資格[11]。數據科學與大數據技術本科專業是一個新興專業,在教學經驗上的積累較傳統學科少,而且該專業具有很強的實踐性,課堂的互動性效果將直接影響課程教學的好壞。因此本文在課程交互式教學建設方面進行相關問題探討,旨在提供一些提高課程教學效率的方法。
Python編程語言因語法結構簡單,相較于傳統C、C++、Java、Matlab、R語言等編程語言,更符合人類語言習慣,易于入門,非常適合各專業大學生學習使用。隨著各類數據處理包的開發與應用,其中包括Numpy、 Pandans、 Matplotlib等,Python已成為目前世界上最流行的數據編程語言[12]。然而,基本的Python界面相對簡單,可視化和互動性較差,因此一款集成開發環境(Integrated development environment, IDE)的使用非常重要。目前常用的IDE包括Jupyter Notebook、Pycharm、Spyder等。
Jupyter Notebook是一款開源交互式筆記本編輯Web程序,開發環境繼承了IPython,可直接在網頁界面上運行,且其安裝所需內存小。此外,其支持多種編程語言,具有簡單易學、邊學邊練、逐行逐代碼塊運行、代碼即編即運行、代碼與結果交互存儲等優點。因此,可非常容易實現課堂教學下列幾方面的效果[13]。a)代碼與運行結果交替展示,教與學交互式即時呈現;b)數據模塊包多且安裝方便,幾乎所有數據處理現實需求均有對應的開源Python安裝包(模塊),同時各類機器學習、深度學習開發包也非常多,其安裝也非常方便;c) 支持Markdown和Code模式,非常方便類似于傳統筆記本的記錄模式;d) 支持分布式運行,可以利用本地資源或遠程計算資源,進而解決公共計算機所需運行環境配置不正確的常見問題,可實現一處安裝,多處輕松授課效果;e) 交互式展現,利用各類專業繪圖包,可以輕松實現圖片、視頻、數學公式展示,便于全過程沉浸式教學,運行生成的文件即可代替傳統的PPT課件,避免教師二次制作課件的重復工作。
Pycharm和Spyder兩個Python IDE幾乎可實現相同的功能,通常,在管理大工程項目時建議采用Pycharm,而僅做基本數據分析,建議采用Spyder,而一些特殊項目則需要結合上述兩種IDE。在教學或為良好可視化展示時,則建議采用Jupyter Notebook。
為展示教學交互式過程,本文以實際房價預測為實例,該實例為Kaggle網站的一個競賽賽題,相關原始數據可從網站[14]下載。實例是通過已有的歷史數據信息(影響房價因素),預測未來房價。數據集包含1460*2個樣本,均分為訓練集和驗證集,數據集中包含79維度影響房價的影響因素,包括歷史房價、建筑面積、建筑裝修情況、建筑建成時間等。以下就數據預處理以及數據建模的教學展示分步驟介紹,完整Python代碼可參見[15]。
Juypter Notebook安裝及環境配置較簡單,詳細步驟可參見[16]。命令行運行Jupyter Notebook系統默認瀏覽器將打開主頁,如下圖1所示,通過新建Notebook文檔,便可進行單元式的代碼開發與運行。因數據處理需要預先安裝所需的數據模塊,包括張量數據處理模塊Numpy和Pandas,機器學習算法模塊sklearn,圖像繪制及展示模塊Matplotlib和seaborn等,如圖2所示。所有模塊在導入(import)前需安裝正確版本,通常可在命令行直接運行命令pip install 模塊名==版本號(例如,pip install numpy==1.14.4)。當運行Notebook代碼塊未報錯即說明各模塊已安裝成功。

圖2 數據處理所需導入的計算模塊
在進行數據建模之前,需要確保數據無異常和格式滿足建模要求。數據的預處理包括缺失值及異常值處理、標準化、相關性分析等。缺失值及異常值的處理可根據不同工程領域及特定任務設定處理規則,例如對于本案例的數據提出如下規則:a)當缺失數據超過總樣本量一定比例時(例如,15%),對所缺失的影響變量進行全部剔除;b)當缺失數據小于總樣本量一定比例時(例如,5%),可對缺失值進行上下樣本插值或類似樣本直接補值;c)當出現異常值時,直接刪除對應樣本,如下圖3所示標記的異常點,直接刪除該樣本點。此外,機器學習算法通常要求輸入的各特征維度(即各影響參數)的取值符合正態分布,本案例數據標準化采用Log變換函數。

圖3 建筑面積和房價關系圖
由于影響房價的因素較多,本案例中提供了79個維度因素,而通常輸入影響因素(或變量)對房價影響權重不一,且各因素之間存在相關性。通過數據處理方法可實現影響因素權重排序,以及得到相關性矩陣。影響因素的相關性分析可采用corr()函數和Numpy模塊中的corrcoef()函數,并利用seaborn模塊中的heatmap函數顯示最為重要的幾項影響因素之間的關系熱圖(heatmap),如下圖4所示。對房價幾項重要影響因素說明如下:建筑建造時間-YearBuilt,房間數- TotRmsAbvGrd,總衛生間數-FullBath,一樓建筑總面積-1stFlrSF,地下室總面積- TotalBsmtSF,車庫面積-GarageArea,建筑總面積(不含地下室、車庫)- GrLivArea,建筑裝修情況-OverallQual,銷售總價-SalePrice。

圖4 重要影響特征因素相關性熱圖
最后,把所選擇的數據進行格式及類型轉換,把分類變量轉化為模型算法能夠識別的數據類型,本案例采用Pandas模塊中的get_dummies()函數實現。
完成數據預處理后,下一步將建立數據預測模型。本案例采用淺層機器學習算法lightgbm進行預測模型建模,有關lightgbm理論介紹詳見文獻[17]。lightgbm主體模型代碼及模型保存見圖5,圖6為預測精度結果計算及打印,完整代碼參見[15]。

圖5 lightgbm模型

圖6 預測結果精度計算及打印
在模型訓練過程中,需要對lightgbm模型超參數進行優化選擇,從而確保模型具有良好的泛化性能,即在欠擬合和過擬合之間達到平衡。模型的優化超參數很多,主要包括葉子節點數、網絡最大深度、學習率等。學習曲線的繪制是一種非常直觀的方法,可通過學習曲線的變化趨勢進行超參數選取。在模型確定后,保存模型及預測結果,提交預測結果數據后Kaggle競賽網站將自動計算預測得分及排名。若排名結果未達預期,可通過調整lightgbm模型超參數,或選用其他算法模型,重復提交預測結果,直到達到預期目標為止。通過實際數據競賽項目,結合Jupyter Notebook的交互教學,能夠加深學生的印象以及調動學生的積極性,達到良好的教學效果。
通過Jupyter Notebook房價預測實際案例的實操練習,可使學生快速掌握數據挖掘技術及機器學習算法建模的基本知識和大數據處理技能,同時可為學生進一步學習基于大數據的深度學習等高階課程打下堅實的基礎。Jupyter Notebook平臺將文字備注、Python代碼、圖表、公式和運行結果整合在一個文檔中,不僅可以在文檔中運行代碼,還能以網頁版的形式分享文件,相較于傳統的數據處理平臺和教學模式,基于Jupyter Notebook開展數據科學教學具備多重優勢。首先,可代替傳統的教學課件,.ipynb的文件格式可直接在網頁上交互式展示,直接代替傳統課件,省去教師重復制作課件的工作。其次,良好的交互式展示,數據處理所需代碼的講解和代碼的執行可同時進行,可非常方便地實現交互式教學。最后,學生的作業、作品的提交和批改變得更加簡單,學生可將編好的代碼運行后,在Notebook上保存結果,即可直接提交執行后的.ipynb文件,教師可查看作業完成情況。
Jupyter Notebook提供了一個良好的教學展示及交互式平臺,但數據科學與大數據技術專業課程的發展同時需要針對不同工程應用領域課程教學內容的長期研究與探索,從而開發出針對性強,效果好的授課案例。目前隨著大數據人才涌現、數據處理技巧和數據處理模塊的發展、機器學習算法的更新迭代,留下海量的研究、學習資料,大數據教學課程也變得更加高效和多樣化。國立臺灣大學名師李宏毅針對機器學習的教學課程,就是一個值得借鑒的教學案例,目前已公開在YouTube和嗶哩嗶哩等視頻網站。
本文介紹了一種交互式網頁教學平臺,并利用案例進行了教學方法展示,旨在對相關教師的教學思路和方法有所啟發,同時宣傳和推廣基于Jupyter Notebook平臺的交互式教學理念,從而促進大數據科學相關專業的教學方法的創新。