器學(xué)習(xí)實(shí)戰(zhàn):從分類(lèi)聚類(lèi)到深度學(xué)習(xí)的美賽高效建模指南)
1. 從“臨陣磨槍”到“體系化認(rèn)知”我的美賽前MATLAB機(jī)器學(xué)習(xí)沖刺筆記時(shí)間撥回到2021年2月2日距離當(dāng)年的美國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽MCM/ICM開(kāi)賽日已經(jīng)非常近了。和很多隊(duì)伍一樣我們團(tuán)隊(duì)在前期準(zhǔn)備中將重心放在了模型理論、論文寫(xiě)作和文獻(xiàn)檢索上而對(duì)于核心工具M(jìn)ATLAB在機(jī)器學(xué)習(xí)領(lǐng)域的應(yīng)用卻停留在“知道有這些函數(shù)”的層面。直到賽前最后這段沖刺時(shí)間我才真正沉下心來(lái)系統(tǒng)性地梳理和實(shí)戰(zhàn)了MATLAB中的分類(lèi)、聚類(lèi)和深度學(xué)習(xí)工具箱。這份筆記與其說(shuō)是一份教程不如說(shuō)是一個(gè)參賽者在高壓下從“知道”到“會(huì)用”再到“理解為什么這么用”的快速進(jìn)化實(shí)錄。它不追求面面俱到的理論深度而是聚焦于如何在美賽有限的時(shí)間內(nèi)通常96小時(shí)高效、準(zhǔn)確地將一個(gè)數(shù)據(jù)驅(qū)動(dòng)的想法通過(guò)MATLAB落地為可運(yùn)行的模型并產(chǎn)出可靠的結(jié)果。如果你也正面臨類(lèi)似的競(jìng)賽壓力或者想快速上手MATLAB的機(jī)器學(xué)習(xí)實(shí)戰(zhàn)希望這份帶著“實(shí)戰(zhàn)體溫”的筆記能給你帶來(lái)直接的幫助。2. 美賽場(chǎng)景下的MATLAB機(jī)器學(xué)習(xí)工具箱選型邏輯在美賽的戰(zhàn)場(chǎng)上時(shí)間是最稀缺的資源。因此工具的選擇必須直接服務(wù)于“快速驗(yàn)證想法、穩(wěn)定產(chǎn)出結(jié)果”的核心目標(biāo)。MATLAB相較于Python的scikit-learn或TensorFlow/PyTorch其最大優(yōu)勢(shì)在于高度的集成化、一致的語(yǔ)法環(huán)境以及出色的數(shù)據(jù)可視化能力這對(duì)于需要快速迭代模型、并要將結(jié)果清晰呈現(xiàn)在論文中的競(jìng)賽場(chǎng)景來(lái)說(shuō)是巨大的效率加成。2.1 為什么是MATLAB的Classification Learner和Regression Learner對(duì)于分類(lèi)和回歸問(wèn)題我強(qiáng)烈建議任何新手甚至有一定經(jīng)驗(yàn)的隊(duì)員都從App Designer中的Classification Learner和Regression Learner應(yīng)用開(kāi)始。這絕非偷懶而是戰(zhàn)略選擇。核心價(jià)值這兩個(gè)圖形化工具允許你在不寫(xiě)一行代碼的情況下導(dǎo)入數(shù)據(jù)、選擇特征、嘗試數(shù)十種經(jīng)典機(jī)器學(xué)習(xí)模型如決策樹(shù)、SVM、KNN、集成方法等并進(jìn)行交叉驗(yàn)證、性能評(píng)估準(zhǔn)確率、RMSE、ROC曲線等。在美賽初期當(dāng)你面對(duì)一個(gè)陌生數(shù)據(jù)集不確定哪種模型最有效時(shí)用這兩個(gè)App在半小時(shí)內(nèi)完成一輪快速的“模型普查”其效率是手寫(xiě)代碼無(wú)法比擬的。它能幫你迅速鎖定1-3個(gè)有潛力的模型方向避免在無(wú)效模型上浪費(fèi)寶貴的編碼和調(diào)試時(shí)間。實(shí)戰(zhàn)心得我通常會(huì)先用Classification Learner做快速篩查記錄下準(zhǔn)確率最高的兩三種模型及其關(guān)鍵參數(shù)如SVM的核函數(shù)、決策樹(shù)的最大深度。然后關(guān)鍵一步利用App提供的“導(dǎo)出模型”功能生成對(duì)應(yīng)的MATLAB代碼。這份自動(dòng)生成的代碼就是一個(gè)完整的、可復(fù)現(xiàn)的訓(xùn)練和預(yù)測(cè)腳本框架。接下來(lái)我的工作就從“從零開(kāi)始構(gòu)建模型”轉(zhuǎn)變?yōu)椤霸谏傻目煽靠蚣苌线M(jìn)行參數(shù)微調(diào)、特征工程優(yōu)化和集成”。這個(gè)工作流將前期探索的不確定性降到了最低。2.2 聚類(lèi)分析不僅僅是K-Means美賽問(wèn)題中聚類(lèi)常用于客戶分群、區(qū)域劃分、異常檢測(cè)等。MATLAB的統(tǒng)計(jì)與機(jī)器學(xué)習(xí)工具箱提供了完整的聚類(lèi)套件。kmeans函數(shù)最常用但要注意其局限性。美賽數(shù)據(jù)往往不是規(guī)整的超球形分布。kmeans默認(rèn)使用平方歐氏距離這對(duì)于量綱不同或存在相關(guān)性特征的數(shù)據(jù)效果可能很差。必須進(jìn)行的預(yù)處理使用zscore或mapminmax進(jìn)行標(biāo)準(zhǔn)化/歸一化。一個(gè)更穩(wěn)健的做法是使用pdist計(jì)算各種距離矩陣如城市街區(qū)距離、余弦距離再用linkage和dendrogram繪制樹(shù)狀圖初步判斷數(shù)據(jù)自然的簇結(jié)構(gòu)和合適的距離度量方式最后再用cluster函數(shù)進(jìn)行劃分。dbscan函數(shù)這是我在那次備賽中發(fā)現(xiàn)的“寶藏”。對(duì)于形狀不規(guī)則、密度不均或含有噪聲離群點(diǎn)的數(shù)據(jù)基于密度的DBSCAN比K-Means強(qiáng)大得多。美賽的很多真實(shí)數(shù)據(jù)集如交通流量、社交媒體數(shù)據(jù)都符合這些特性。dbscan函數(shù)需要設(shè)置兩個(gè)參數(shù)epsilon鄰域半徑和minpts核心點(diǎn)最小鄰居數(shù)。我的經(jīng)驗(yàn)是通過(guò)k-distance圖來(lái)輔助確定epsilon計(jì)算每個(gè)點(diǎn)到其第minpts個(gè)最近鄰的距離并排序繪圖拐點(diǎn)處通常是一個(gè)較好的epsilon初值。高斯混合模型GMM與fitgmdist當(dāng)數(shù)據(jù)可以假設(shè)來(lái)自幾個(gè)不同的高斯分布混合時(shí)GMM是更概率化的方法。fitgmdist函數(shù)可以通過(guò)EM算法擬合模型并給出每個(gè)點(diǎn)屬于各簇的后驗(yàn)概率。這在論文中是一個(gè)加分項(xiàng)因?yàn)樗峁┝司垲?lèi)的不確定性度量而不僅僅是硬分配。注意在論文中描述聚類(lèi)步驟時(shí)一定要說(shuō)明你選擇該算法和參數(shù)的理由例如“鑒于數(shù)據(jù)可能存在噪聲點(diǎn)我們采用了對(duì)噪聲魯棒的DBSCAN算法”并附上關(guān)鍵的可視化結(jié)果如聚類(lèi)結(jié)果散點(diǎn)圖使用gscatter或樹(shù)狀圖。2.3 深度學(xué)習(xí)以Deep Learning Toolbox快速搭建原型對(duì)于圖像、序列時(shí)間序列、文本數(shù)據(jù)深度學(xué)習(xí)可能是更好的選擇。MATLAB的Deep Learning Toolbox設(shè)計(jì)思路非常清晰適合快速原型開(kāi)發(fā)。核心工作流數(shù)據(jù)準(zhǔn)備使用imageDatastore圖像或arrayDatastore數(shù)值序列來(lái)管理數(shù)據(jù)它能方便地處理打亂、分批mini-batch這對(duì)于大數(shù)據(jù)集至關(guān)重要。網(wǎng)絡(luò)設(shè)計(jì)對(duì)于新手直接從pretrainedNetwork開(kāi)始如AlexNet, GoogLeNet用于圖像BERT用于文本。美賽中很多問(wèn)題可以通過(guò)遷移學(xué)習(xí)解決保留預(yù)訓(xùn)練網(wǎng)絡(luò)的特征提取層只替換和重新訓(xùn)練最后的分類(lèi)層。代碼非常簡(jiǎn)單net pretrainedNetwork(googlenet); lgraph layerGraph(net); % 替換最后的全連接層和分類(lèi)層以適應(yīng)你的類(lèi)別數(shù) newFCLayer fullyConnectedLayer(numClasses, Name, new_fc); newClassLayer classificationLayer(Name, new_classoutput); lgraph replaceLayer(lgraph, loss3-classifier, newFCLayer); lgraph replaceLayer(lgraph, output, newClassLayer);訓(xùn)練選項(xiàng)trainingOptions函數(shù)是控制訓(xùn)練過(guò)程的核心。必須熟練設(shè)置的選項(xiàng)包括InitialLearnRate學(xué)習(xí)率通常從0.001開(kāi)始嘗試可使用learnRateSchedule進(jìn)行分段衰減。MaxEpochs最大迭代次數(shù)根據(jù)驗(yàn)證集損失早停ValidationPatience。Plots,training-progress務(wù)必開(kāi)啟訓(xùn)練進(jìn)度圖這是向評(píng)委展示你模型訓(xùn)練過(guò)程穩(wěn)定、未過(guò)擬合/欠擬合的最直觀證據(jù)。訓(xùn)練與評(píng)估使用trainNetwork訓(xùn)練使用classify進(jìn)行預(yù)測(cè)使用confusionchart繪制混淆矩陣。避坑指南深度學(xué)習(xí)在美賽中最大的風(fēng)險(xiǎn)是“黑箱”和“耗時(shí)”。你必須準(zhǔn)備一個(gè)簡(jiǎn)明的解釋為什么用深度學(xué)習(xí)例如CNN用于提取空間特征LSTM用于捕捉時(shí)間依賴。同時(shí)要在論文中展示訓(xùn)練曲線證明模型收斂良好。如果時(shí)間或計(jì)算資源有限優(yōu)先考慮輕量級(jí)網(wǎng)絡(luò)或更傳統(tǒng)的機(jī)器學(xué)習(xí)方法。3. 貫穿始終的特征工程與數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)在美賽中拿到原始數(shù)據(jù)后直接丟進(jìn)模型十有八九會(huì)得到糟糕的結(jié)果。特征工程的質(zhì)量直接決定了模型性能的上限。MATLAB提供了一整套高效的工具鏈。3.1 缺失值處理不僅僅是簡(jiǎn)單刪除ismissing函數(shù)可以快速定位缺失值。處理策略需要根據(jù)缺失機(jī)制和比例來(lái)決定刪除如果某一行或列缺失值過(guò)多如50%使用rmmissing刪除是合理的。但在論文中需說(shuō)明刪除的比例和理由。填充更常用的方法是填充。對(duì)于數(shù)值變量fillmissing函數(shù)支持多種方法如constant用固定值、previous、next、movmean移動(dòng)平均。對(duì)于時(shí)間序列數(shù)據(jù)前后向填充或線性插值linear往往更合理。對(duì)于分類(lèi)變量可以用mode眾數(shù)填充。高級(jí)技巧可以考慮用回歸或KNN來(lái)預(yù)測(cè)缺失值。例如可以用fitcknn建立一個(gè)以其他特征為輸入、以缺失特征為輸出的模型來(lái)預(yù)測(cè)。3.2 特征編碼與變換分類(lèi)變量編碼機(jī)器學(xué)習(xí)模型需要數(shù)值輸入。對(duì)于有序分類(lèi)變量使用grp2idx進(jìn)行標(biāo)簽編碼。對(duì)于無(wú)序名義變量如城市名必須使用獨(dú)熱編碼dummyvar函數(shù)可以方便實(shí)現(xiàn)但要注意后續(xù)可能產(chǎn)生的維度災(zāi)難可考慮結(jié)合特征選擇。連續(xù)特征變換對(duì)于嚴(yán)重偏態(tài)分布的特征使用log、sqrt變換可以使其更接近正態(tài)分布提升許多模型如線性模型的性能。boxcox變換是更通用的冪變換方法。特征創(chuàng)建Feature Creation這是體現(xiàn)創(chuàng)造力的地方。例如從日期中提取“是否周末”、“一天中的時(shí)段”從經(jīng)緯度計(jì)算距離中心點(diǎn)的半徑對(duì)多個(gè)特征進(jìn)行加減乘除交互需基于業(yè)務(wù)理解。MATLAB的表格操作table類(lèi)型和向量化運(yùn)算使得這些操作非常高效。3.3 特征選擇與降維避免維數(shù)災(zāi)難與過(guò)擬合當(dāng)特征數(shù)量很多時(shí)必須進(jìn)行特征選擇或降維。過(guò)濾法使用fsrftestF檢驗(yàn)、relieffReliefF算法等函數(shù)對(duì)特征進(jìn)行排序選擇排名靠前的特征。包裹法sequentialfs函數(shù)可以進(jìn)行前向或后向序列特征選擇它使用一個(gè)指定的分類(lèi)器來(lái)評(píng)估特征子集的性能效果通常更好但計(jì)算量更大。嵌入法訓(xùn)練一個(gè)帶正則化的模型如Lasso回歸lasso其系數(shù)本身就可以用于特征選擇。降維pca函數(shù)進(jìn)行主成分分析是最常用的線性降維方法。關(guān)鍵點(diǎn)在論文中不僅要給出降維后的結(jié)果最好能展示碎石圖pareto函數(shù)解釋保留了多少方差例如“前5個(gè)主成分保留了95%的原始信息”這使你的方法更具說(shuō)服力。4. 模型評(píng)估、驗(yàn)證與結(jié)果可視化論文說(shuō)服力的基石模型建好后如何評(píng)估并令人信服地展示結(jié)果是論文拿高分的關(guān)鍵。決不能只用一個(gè)簡(jiǎn)單的準(zhǔn)確率就敷衍了事。4.1 超越準(zhǔn)確率全面的評(píng)估指標(biāo)MATLAB提供了豐富的模型評(píng)估函數(shù)你需要根據(jù)問(wèn)題類(lèi)型選擇合適的指標(biāo)組合分類(lèi)問(wèn)題confusionmat/confusionchart混淆矩陣是基礎(chǔ)從中可以計(jì)算出精確率、召回率、F1分?jǐn)?shù)。perfcurve函數(shù)可以繪制ROC曲線并計(jì)算AUC值這對(duì)于類(lèi)別不平衡的數(shù)據(jù)集尤為重要。多分類(lèi)問(wèn)題不要只報(bào)一個(gè)總體準(zhǔn)確率。使用plotconfusion查看每個(gè)類(lèi)別的混淆情況并計(jì)算每個(gè)類(lèi)別的精確率/召回率分析模型在哪些類(lèi)別上表現(xiàn)薄弱?;貧w問(wèn)題絕對(duì)不要只依賴R平方。必須報(bào)告均方根誤差rmse、平均絕對(duì)誤差mae。使用plotresiduals繪制殘差圖檢查殘差是否隨機(jī)分布理想情況如果存在模式如漏斗形說(shuō)明模型有系統(tǒng)偏差。4.2 穩(wěn)健的驗(yàn)證策略防止過(guò)擬合的保險(xiǎn)簡(jiǎn)單劃分cvpartition函數(shù)可以方便地進(jìn)行隨機(jī)劃分holdout或K折交叉驗(yàn)證kfold。對(duì)于數(shù)據(jù)量不是特別大的美賽數(shù)據(jù)集強(qiáng)烈推薦使用K折交叉驗(yàn)證如5折或10折它能更穩(wěn)定地評(píng)估模型性能。時(shí)間序列數(shù)據(jù)絕對(duì)不能隨機(jī)劃分必須按時(shí)間順序劃分訓(xùn)練集和測(cè)試集前80%時(shí)間的數(shù)據(jù)訓(xùn)練后20%測(cè)試??梢允褂胏vpartition的Leaveout或自定義索引來(lái)實(shí)現(xiàn)。在Classification/Regression Learner中使用在這些App中設(shè)置交叉驗(yàn)證其最終輸出的性能指標(biāo)就是基于交叉驗(yàn)證的更為可靠。4.3 可視化一圖勝千言MATLAB的繪圖能力是其在美賽中的王牌。模型結(jié)果可視化要清晰、專業(yè)。決策邊界對(duì)于二維或三維特征使用plot、scatter結(jié)合meshgrid和predict函數(shù)繪制模型的決策區(qū)域能非常直觀地展示分類(lèi)器的行為。學(xué)習(xí)曲線對(duì)于深度學(xué)習(xí)訓(xùn)練進(jìn)度圖是標(biāo)配。對(duì)于傳統(tǒng)模型可以手動(dòng)繪制訓(xùn)練集和驗(yàn)證集誤差隨訓(xùn)練樣本量或模型復(fù)雜度變化的曲線用于診斷偏差/方差問(wèn)題。特征重要性對(duì)于樹(shù)模型如隨機(jī)森林使用oobPermutedPredictorImportance計(jì)算并繪制特征重要性條形圖。這不僅能提升模型的可解釋性本身也是一個(gè)重要的分析結(jié)果。聚類(lèi)可視化除了散點(diǎn)圖對(duì)于高維數(shù)據(jù)可以在聚類(lèi)后使用tsne或pca降維至2D/3D再繪圖以展示簇結(jié)構(gòu)。5. 集成與優(yōu)化讓模型性能再上一個(gè)臺(tái)階當(dāng)單個(gè)模型性能達(dá)到瓶頸時(shí)集成學(xué)習(xí)是提升效果的有效手段而且其思想也容易在論文中闡述。5.1 Bagging與隨機(jī)森林TreeBagger函數(shù)是實(shí)現(xiàn)隨機(jī)森林的利器。它本質(zhì)上就是Bagging 隨機(jī)特征子集。% 創(chuàng)建一個(gè)包含100棵樹(shù)的隨機(jī)森林分類(lèi)器 rfModel TreeBagger(100, X_train, y_train, Method, classification, ... OOBPrediction, On, OOBPredictorImportance, On); % 預(yù)測(cè) y_pred predict(rfModel, X_test); % 獲取OOB誤差曲線可用于確定多少棵樹(shù)足夠 oobError oobError(rfModel); plot(oobError); xlabel(Number of Grown Trees); ylabel(Out-of-Bag Classification Error);關(guān)鍵優(yōu)勢(shì)TreeBagger自帶袋外OOB誤差估計(jì)這相當(dāng)于內(nèi)置了交叉驗(yàn)證無(wú)需額外劃分驗(yàn)證集對(duì)于小數(shù)據(jù)集非常友好。同時(shí)它可以直接計(jì)算特征重要性。5.2 BoostingAdaBoost與Gradient BoostingAdaBoost使用fitcensemble函數(shù)并指定Method為AdaBoostM1。AdaBoost通過(guò)迭代調(diào)整樣本權(quán)重重點(diǎn)關(guān)注之前分錯(cuò)的樣本。Gradient Boosting這是更強(qiáng)大的Boosting方法。在MATLAB中可以通過(guò)fitcensemble選擇Method為GentleBoost或使用統(tǒng)計(jì)與機(jī)器學(xué)習(xí)工具箱中的fitrensemble用于回歸并選擇LSBoost最小二乘提升。Gradient Boosting通過(guò)擬合殘差來(lái)逐步改進(jìn)模型通常能獲得比隨機(jī)森林更高的精度但更容易過(guò)擬合需要仔細(xì)調(diào)參如學(xué)習(xí)率、樹(shù)的數(shù)量和深度。5.3 超參數(shù)調(diào)優(yōu)自動(dòng)化搜索手動(dòng)調(diào)參費(fèi)時(shí)費(fèi)力。MATLAB的bayesopt貝葉斯優(yōu)化或fitcauto/fitrauto自動(dòng)機(jī)器學(xué)習(xí)函數(shù)可以幫你自動(dòng)化這個(gè)過(guò)程。 以使用貝葉斯優(yōu)化調(diào)整SVM參數(shù)為例% 定義優(yōu)化變量參數(shù)搜索空間 vars [optimizableVariable(BoxConstraint, [1e-3, 1e3], Transform, log), ... optimizableVariable(KernelScale, [1e-3, 1e3], Transform, log)]; % 定義目標(biāo)函數(shù)最小化交叉驗(yàn)證損失 fun (params)svm_cv_loss(params, X, y); % 需要自定義一個(gè)返回交叉驗(yàn)證損失的函數(shù) % 運(yùn)行貝葉斯優(yōu)化 results bayesopt(fun, vars, MaxObjectiveEvaluations, 30, ... UseParallel, true); % 如果電腦支持并行可以加速 bestParams results.XAtMinObjective;fitcauto則更“傻瓜式”它會(huì)自動(dòng)嘗試多種模型類(lèi)型和超參數(shù)組合并返回一個(gè)性能最佳的模型在時(shí)間緊迫的美賽中堪稱“神器”。6. 從腳本到論文MATLAB與LaTeX/Word的高效協(xié)作流程模型跑出好結(jié)果只是成功了一半如何優(yōu)雅地將代碼、結(jié)果和圖表整合進(jìn)論文是最后一個(gè)關(guān)鍵環(huán)節(jié)。6.1 生成可復(fù)現(xiàn)的腳本與函數(shù)切忌在命令行窗口中直接操作。所有工作都應(yīng)保存在.m腳本或函數(shù)文件中。主腳本按“數(shù)據(jù)加載 - 預(yù)處理 - 特征工程 - 模型訓(xùn)練/驗(yàn)證 - 評(píng)估/可視化”的邏輯編寫(xiě)一個(gè)清晰的腳本。使用%%分節(jié)符創(chuàng)建代碼節(jié)便于運(yùn)行和調(diào)試。模塊化函數(shù)將通用的預(yù)處理步驟、特征計(jì)算、評(píng)估指標(biāo)計(jì)算封裝成獨(dú)立的函數(shù)文件.m提高代碼復(fù)用性和可讀性。保存關(guān)鍵結(jié)果使用save命令將訓(xùn)練好的模型如save(trainedNet.mat, net)、處理后的數(shù)據(jù)、重要的中間變量保存為.mat文件避免重復(fù)計(jì)算。6.2 導(dǎo)出出版級(jí)圖表MATLAB默認(rèn)的圖表樣式可能不夠美觀。在生成圖表后務(wù)必進(jìn)行美化設(shè)置圖形屬性使用set(gca, FontSize, 12, LineWidth, 1.5)調(diào)整坐標(biāo)軸字體和線寬。使用xlabel,ylabel,title并設(shè)置Interpreter,latex來(lái)使用LaTeX公式。導(dǎo)出設(shè)置使用exportgraphics函數(shù)R2020a以后或print函數(shù)導(dǎo)出圖像。% 推薦使用 exportgraphics質(zhì)量高且易用 exportgraphics(gcf, ROC_Curve.pdf, ContentType, vector, Resolution, 300);關(guān)鍵參數(shù)ContentType, vector導(dǎo)出為矢量圖PDF/EPS無(wú)論怎么縮放都不會(huì)失真這是論文出版的質(zhì)量要求。Resolution, 300設(shè)置高DPI用于位圖格式如PNG。6.3 將結(jié)果自動(dòng)化插入文檔對(duì)于LaTeX將生成的矢量圖.pdf或.eps直接放在項(xiàng)目文件夾在.tex文件中用\includegraphics引用??梢詫㈥P(guān)鍵數(shù)值如準(zhǔn)確率、RMSE計(jì)算后使用fprintf寫(xiě)入一個(gè).tex片段文件然后在主文件中用\input引入實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)更新。fid fopen(result.tex, w); fprintf(fid, The final accuracy is $%.2f\\%%$.\\\\\n, accuracy*100); fclose(fid);對(duì)于Word雖然可以手動(dòng)復(fù)制粘貼圖表但更高效的方法是利用MATLAB的publish功能。將你的主腳本寫(xiě)為帶有Markdown風(fēng)格注釋使用%%的腳本然后使用publish(main_script.m, docx)將其發(fā)布為一個(gè)完整的Word文檔其中包含代碼、輸出結(jié)果和圖表。你可以以此為基礎(chǔ)編輯論文正文。這份筆記的最終價(jià)值在于它形成了一套從問(wèn)題到代碼再?gòu)拇a到論文的完整、高效的MATLAB機(jī)器學(xué)習(xí)競(jìng)賽工作流。它讓我意識(shí)到在高壓的競(jìng)賽環(huán)境下工具的最高境界不是炫技而是通過(guò)嚴(yán)謹(jǐn)?shù)牧鞒毯透咝У姆椒▽F(tuán)隊(duì)有限的智力與時(shí)間精準(zhǔn)地轉(zhuǎn)化為論文中一個(gè)個(gè)扎實(shí)的模型、一張張清晰的圖表和一行行有力的結(jié)論。