
使用NestJS和Prisma構建REST API:身份驗證
圖1 以數(shù)據(jù)為中心的分類法。ML 模型的輸入數(shù)據(jù)由五種不同類型組成 (c)。六個以數(shù)據(jù)為中心的任務 (d) 應用于來自 ML 管道 (a) 不同階段的三種類型的操作數(shù)據(jù) (b),以幫助人們理解、診斷和完善 ML 模型。
機器學習模型處理的五種數(shù)據(jù)類型為表格數(shù)據(jù)、序列數(shù)據(jù)、多維數(shù)組、圖形和多模態(tài)數(shù)據(jù)。
對這些數(shù)據(jù)類型進行分類和操作非常重要,因為不同類型的數(shù)據(jù)可能需要不同的操作來理解、診斷和完善機器學習模型。通過對這些數(shù)據(jù)類型進行分類和操作,用戶可以更好地了解數(shù)據(jù)和對其進行操作的模型,從而實現(xiàn)更有效和高效的機器學習工作流程。
表格數(shù)據(jù)是一種按行和列組織的結構化數(shù)據(jù),其中每行代表一個實例,每列代表一個特征。表格數(shù)據(jù)可能需要特征工程和選擇來提高模型性能。例如,特征工程可以涉及將原始數(shù)據(jù)轉換為更有意義的特征,這些特征可以更好地表示數(shù)據(jù)中的底層模式。特征選擇可以涉及選擇最相關特征的子集以減少數(shù)據(jù)的維度并提高模型性能。表格數(shù)據(jù)通常用于分類、回歸和聚類任務,例如客戶細分、欺詐檢測、信用評分和客戶流失預測。它還用于醫(yī)療保健等領域,可用于疾病診斷和患者風險分層等任務。
機器學習中處理表格數(shù)據(jù)相關的關鍵挑戰(zhàn)之一是管理大量特征并從其復雜的協(xié)作效果(即特征交互)中學習信息。傳統(tǒng)的機器學習模型(例如支持向量機、邏輯回歸、決策樹)和深度學習模型(例如多層感知)都已應用于此類數(shù)據(jù)。其他挑戰(zhàn)包括處理缺失數(shù)據(jù)、處理不平衡數(shù)據(jù)集以及避免過度擬合。
序列數(shù)據(jù)是一種具有時間或順序順序的數(shù)據(jù),例如時間序列數(shù)據(jù)或自然語言文本。序列數(shù)據(jù)可能需要注意機制來捕獲長期依賴性。例如,一個包含 k 個單詞的句子是 k 個標記的序列。每個標記都是一個特征向量,例如單詞的嵌入向量。例如,注意力機制可以幫助模型在進行預測時關注序列中最相關的部分。對序列數(shù)據(jù)進行操作的機器學習模型可以使用循環(huán)神經網(wǎng)絡 (RNN) 或轉換器來捕獲數(shù)據(jù)點之間的時間依賴性。序列數(shù)據(jù)通常用于自然語言處理任務,例如語言建模、機器翻譯和情感分析。它還用于股票價格預測、天氣預報、能源需求預測等時間序列預測任務。
在機器學習中處理順序數(shù)據(jù)相關的一項挑戰(zhàn)是需要捕獲數(shù)據(jù)點之間的長期依賴性。這可以使用RNN中的注意力機制或記憶單元來解決。另一個挑戰(zhàn)是序列的長度不同,這使得有效處理數(shù)據(jù)變得困難。此外,序列數(shù)據(jù)可能需要預處理步驟,例如標記化或填充,以確保序列長度相等。
多維數(shù)組數(shù)據(jù)是一種由一組實例組成的數(shù)據(jù)類型,每個實例都是在空間上組織成規(guī)則網(wǎng)格結構的標量值數(shù)組。例如,灰度圖像可以被視為沿寬度和高度維度存儲圖像像素的二維數(shù)組。多維數(shù)據(jù)需要處理大量的像素和通道,通常用于圖像和視頻處理任務,例如目標檢測、圖像分類和視頻分割。它還用于其他領域,例如醫(yī)學成像,可用于腫瘤檢測和分割等任務。對多維數(shù)組數(shù)據(jù)進行操作的機器學習模型可以使用卷積神經網(wǎng)絡 (CNN) 從數(shù)據(jù)中提取特征。
在機器學習中處理多維數(shù)組數(shù)據(jù)相關的一項挑戰(zhàn)是需要學習大量參數(shù)。例如CNN可能有數(shù)百萬個參數(shù)需要在大型數(shù)據(jù)集上進行訓練。另一個挑戰(zhàn)是需要處理大量數(shù)據(jù),這在計算上可能會很昂貴。此外,多維數(shù)組數(shù)據(jù)可能需要預處理步驟,例如標準化或數(shù)據(jù)增強,以提高模型性能。
圖數(shù)據(jù)是一種通常由一組節(jié)點和一組邊表示的數(shù)據(jù)。節(jié)點包含特征信息,邊記錄節(jié)點之間的連接。圖數(shù)據(jù)需要考慮節(jié)點和邊之間的關系。對圖數(shù)據(jù)進行操作的機器學習模型可以使用圖神經網(wǎng)絡(GNN)來捕獲圖的結構信息并學習可用于下游任務的節(jié)點嵌入。圖數(shù)據(jù)常用于社區(qū)檢測、鏈接預測和影響力最大化等社交網(wǎng)絡分析任務。它還用于推薦系統(tǒng),可用于對用戶-項目交互進行建模并做出個性化推薦。在生物信息學中,圖形數(shù)據(jù)可用于表示蛋白質-蛋白質相互作用網(wǎng)絡或基因調控網(wǎng)絡。
在機器學習中處理圖數(shù)據(jù)相關的一項挑戰(zhàn)是需要捕獲圖中節(jié)點之間的復雜關系。這可以使用GNN來解決,GNN可以根據(jù)節(jié)點的連接模式學習在節(jié)點之間傳播信息。另一個挑戰(zhàn)是圖表的大小不同,這使得有效處理數(shù)據(jù)變得困難。此外,圖數(shù)據(jù)可能需要預處理步驟,例如節(jié)點特征工程或圖標準化,以提高模型性能。
多模態(tài)數(shù)據(jù)是一種包含多種類型數(shù)據(jù)的數(shù)據(jù),例如圖像和文本。這就需要考慮如何整合不同類型的數(shù)據(jù)。多模態(tài)數(shù)據(jù)可能需要融合技術來組合不同模態(tài)的數(shù)據(jù)。例如,分析社交媒體帖子的模型可以使用文本內容和隨附圖像來預測帖子的情緒。由于數(shù)據(jù)的格式和模式各不相同,處理多模式數(shù)據(jù)可能具有挑戰(zhàn)性。多模態(tài)數(shù)據(jù)通常用于語音識別、圖像字幕和視頻分析等應用。它還用于醫(yī)療保健領域,可用于集成來自多個來源的信息,例如醫(yī)學圖像、電子健康記錄和患者生成的數(shù)據(jù)。多模態(tài)數(shù)據(jù)可以更全面地了解數(shù)據(jù)中的底層模式,并提高機器學習模型的準確性。
機器學習中處理多模態(tài)數(shù)據(jù)的關鍵挑戰(zhàn)之一是以有意義的方式集成來自不同模態(tài)的信息。這可能涉及設計適當?shù)娜诤霞夹g,以捕獲每種模態(tài)的補充信息。另一個挑戰(zhàn)是處理不同的數(shù)據(jù)格式和模式,這可能需要預處理步驟,例如特征提取和標準化。此外,多模態(tài)數(shù)據(jù)可能需要專門的機器學習模型來處理數(shù)據(jù)的復雜性。
機器學習流程通常包括數(shù)據(jù)預處理、特征工程、模型選擇、訓練、評估和部署等步驟。
數(shù)據(jù)預處理是準備用于機器學習模型的原始數(shù)據(jù)的過程。這可能涉及多種步驟,例如清理數(shù)據(jù)以消除錯誤或不一致、將數(shù)據(jù)轉換為更合適的格式以及選擇相關特征的子集。數(shù)據(jù)預處理很重要,因為它可以提高數(shù)據(jù)的質量,并使機器學習模型更容易從數(shù)據(jù)中學習。
數(shù)據(jù)預處理在機器學習中很重要,因為它可以提高數(shù)據(jù)的質量,并使機器學習模型更容易從數(shù)據(jù)中學習。通過清理數(shù)據(jù)并選擇相關特征,數(shù)據(jù)預處理可以降低噪聲并提高數(shù)據(jù)中的信噪比。通過縮放特征并降低數(shù)據(jù)維度,數(shù)據(jù)預處理可以使機器學習模型更容易從數(shù)據(jù)中學習并避免過度擬合??傮w而言,數(shù)據(jù)預處理可以提高機器學習模型的準確性和效率。
特征工程是從原始數(shù)據(jù)中選擇、轉換和創(chuàng)建特征以提高機器學習模型性能的過程。它涉及識別可以幫助模型學習數(shù)據(jù)模式的相關特征,并創(chuàng)建捕獲重要信息的新特征。特征工程是機器學習流程中的重要一步,可以對模型的準確性和效率產生重大影響。
特征工程是為了提高機器學習模型的性能,使其能夠更好地學習數(shù)據(jù)中的模式。通過選擇、轉換和創(chuàng)建特征,特征工程可以幫助模型識別數(shù)據(jù)中的相關特征,并捕捉重要信息。特征工程可以提高機器學習模型的準確性和效率,并減少模型訓練的時間和資源消耗。
特征工程中使用的一些常見技術包括特征選擇、特征縮放、特征變換和特征合成。特征選擇涉及選擇與當前任務最相關的特征的子集。特征縮放涉及將特征標準化為通用尺度,以防止某些特征支配其他特征。特征轉換涉及將數(shù)學函數(shù)應用于特征以創(chuàng)建新的表示。特征合成涉及組合現(xiàn)有特征以創(chuàng)建捕獲重要信息的新特征。
模型選擇是指在機器學習中選擇最適合特定任務的模型的過程。在模型選擇中,需要考慮多個因素,如模型的復雜度、準確性、可解釋性、訓練時間和資源消耗等。模型選擇是機器學習流程中非常重要的一步,可以對模型的性能產生重大影響。
在選擇模型時,可以使用交叉驗證、網(wǎng)格搜索和貝葉斯優(yōu)化等方法來評估模型性能和尋找最佳模型參數(shù)。此外,還可以考慮使用集成學習方法來結合多個模型,以提高模型的準確性和魯棒性。最終選擇的模型應該能夠在特定任務中表現(xiàn)出最佳的性能。
模型訓練是指使用數(shù)據(jù)來訓練機器學習模型的過程。在模型訓練中,需要將數(shù)據(jù)分成訓練集和測試集,并使用訓練集來訓練模型,以便模型能夠學習數(shù)據(jù)中的模式。模型訓練是機器學習流程中的重要步驟,可以對模型的性能產生重大影響。
提高模型訓練的效果可以從多個方面入手,如增加數(shù)據(jù)量、優(yōu)化模型結構、調整超參數(shù)、使用正則化方法、使用集成學習方法等。增加數(shù)據(jù)量可以提高模型的泛化能力,優(yōu)化模型結構可以提高模型的準確性和效率,調整超參數(shù)可以優(yōu)化模型的性能,使用正則化方法可以防止模型過擬合,使用集成學習方法可以結合多個模型以提高模型的準確性和魯棒性。此外,還可以使用自動化機器學習工具來簡化模型訓練過程。
模型評估是指對已訓練的模型進行測試、評估和驗證,以確定其性能和準確性的過程。在機器學習和人工智能領域中,模型評估是非常重要的一步,它可以幫助我們了解模型的優(yōu)點和缺點,以及在哪些情況下模型能夠發(fā)揮最佳效果。
模型評估的步驟包括確定評估指標、準備數(shù)據(jù)集、計算評估指標、分析結果、監(jiān)控模型性能。除此之外,還可以進行交叉驗證、超參數(shù)調整等操作,以提高模型的性能和準確性。
模型部署是指將訓練好的模型應用于實際生產環(huán)境中,以實現(xiàn)特定的業(yè)務目標。這一過程需要將模型轉化為可執(zhí)行的形式,并集成到現(xiàn)有的系統(tǒng)中。
模型部署涉及到一系列的技術和工具,包括模型解釋、模型優(yōu)化、模型部署平臺等。在部署過程中,需要考慮模型的穩(wěn)定性、可擴展性、可維護性、可靠性、安全性和易用性等因素,以確保模型的可靠性和可持續(xù)性。常見的模型部署平臺包括云計算平臺、服務器、嵌入式設備、移動設備等。模型部署之后,需要定期監(jiān)控和評估模型的性能,并及時迭代更新,以確保模型的穩(wěn)定性和可靠性。
數(shù)據(jù)展示就是將運營數(shù)據(jù)的信息可視化。這是每個機器學習工作都會進行的基本可視化操作,但不同的工作可能會關注來自不同機器學習階段的數(shù)據(jù)。由于機器學習模型的數(shù)據(jù)是實例的集合,因此可視化映射要么關注單個數(shù)據(jù)實例(圖2),要么關注一組實例的聚合(實例/組級別)(圖3)。
圖2 實例級別的展示。(a) 輸入圖像通過散點圖展示,每個圖像對應一個點。?(b) 中間隱藏狀態(tài)通過熱圖展示,每行是一個實例(主成分),每列是一個時間步。?(c) 輸出概率通過PCP展示,每個實例對應一條折線。
圖3 組級別的展示。(a) 表格輸入數(shù)據(jù)被分成子組并呈現(xiàn)為直方圖。 (b) 來自實例子組的中間DNN激活被聚合在ActiVis 中,并呈現(xiàn)為圓圈,其顏色表示活躍水平。 (c) 基于桑基圖的時間混淆矩陣用于呈現(xiàn)樹提升模型訓練期間的輸出預測。
探索數(shù)據(jù)是指使用可視化技術探索數(shù)據(jù)以獲得對數(shù)據(jù)的洞察和理解的過程。它包括兩種類型的探索:垂直探索和水平探索。
如圖2(a1)所示,用戶通過套索選擇來選擇紫色和棕色簇之間的實例(例如,具有相似概率為數(shù)字“4”和“9”的圖像)。圖2(a2)顯示了這些圖像的細節(jié),并使用戶能夠進一步研究單個圖像。圖4(a1,a2)展示了使用 tSNE+散點圖來可視化 DNN 的早期和后期層中所有數(shù)據(jù)實例的激活。這兩種布局清楚地揭示了前向傳播如何將數(shù)據(jù)實例分為不同的類。同樣,圖4(b1, b2)顯示了兩個訓練階段的 DNN 最后一層激活的布局。
圖4 探索不同 DNN 層(a1、a2)或訓練的數(shù)據(jù)迭代(b1,b2)
如圖5(c)所示,原始圖空間和三個嵌入空間呈現(xiàn)為四個并置的散點圖。
機器學習可視化中的數(shù)據(jù)比較可識別操作數(shù)據(jù)的相似性和差異,以支持模型理解或診斷。他們關注單個數(shù)據(jù)實例或實例組,并且通常在實例/組內部或實例/組之間進行比較。
使用 PCP 來呈現(xiàn)在圖像上訓練的 βVAE 的潛在維度(圖5(a))。通過擾動潛在維度的值并交互地將擾動的潛在表示解碼回圖像,用戶 可以得出維度編碼的內容。具體來說,圖5(a)中的六張圖像顯示了同一輸入圖像的六次重建,但在維度 20 上具有不同的值。
如圖5(b)所示,藍色、橙色和紫色三種顏色分別對應于三個圖像激活的神經元??鐚舆B接相同顏色的神經元形成相應圖像的數(shù)據(jù)路徑。作者還設計了一種新的可視化來有效地呈現(xiàn)這些數(shù)據(jù)路徑及其隨時間的演變模式(圖5(b),底部)。
如圖5(c)所示,每個散點圖顯示了一種算法生成的嵌入的降維結果。
如圖5(d) 所示,每一行條形圖都用一個指標(例如準確度、精確度和召回率)來表示所研究模型的性能,并且每個條形條(一行內)代表一個子組。
圖5 (a) 實例內:SCANViz 比較同一圖像的重建。(b) 實例間:AEVis 比較三個圖像的數(shù)據(jù)路徑以診斷對抗性攻擊。(c) 組內:EmbeddingVis 比較來自不同模型的同一組實例的嵌入。(d) 組間:FairVis 比較不同實例組的模型性能。
評估數(shù)據(jù)是指使用可視化技術來評估機器學習模型的輸入和輸出數(shù)據(jù)的質量和偏差,以便更好地理解、診斷和完善機器學習模型。機器學習可視化在數(shù)據(jù)評估方面的努力來自三個主要方向:(1)監(jiān)控輸入數(shù)據(jù)的質量以檢測數(shù)據(jù)缺陷;(2) 評估 ML 模型的輸出以進行評估;(3) 診斷機器學習模型的輸入和輸出,以揭示數(shù)據(jù)和模型中根源的偏差。
如圖8(a1)所示,pi表示第i步的預測誤差,1-pi是準確率。pmin 表示在步驟 i 結束的時間窗口內的最小錯誤率。條形字形顯示了可疑漂移區(qū)域中準確度下降的幅度。根據(jù)掉落級別,使用不同的字形(例如,空心圓圈、實心圓圈/帶十字的三角形)來標記圖8(a2) 中的重要步驟。
如圖8(b)所示,每個方塊代表一個數(shù)據(jù)實例,其垂直位置反映了相應類別(即此處的C3)的概率。
圖 8(c)通過根據(jù)排名分數(shù)對節(jié)點(藍色或橙色方塊)進行聚類,并將同一聚類的節(jié)點組織成水平矩形(帶有黑色筆劃)以實現(xiàn)平等曝光,可解決了內容偏差。
圖8 (a) 旨在識別概念漂移的字形。(b) 每個方塊代表一個實例,其垂直位置顯示類別概率。方塊字形及其位置也編碼預測的正確性。(c) 圖節(jié)點(橙色和藍色)根據(jù)其排名分數(shù)進行聚類,同一聚類的節(jié)點呈現(xiàn)在矩形中以實現(xiàn)相似的曝光。還可以比較兩個模型的排名。
數(shù)據(jù)生成講的是如何通過生成新的具有所需特征的實例來擴展數(shù)據(jù)集,以探索機器學習模型的行為并改進模型的性能。數(shù)據(jù)生成的本質是特征增強,可以直接在數(shù)據(jù)空間或間接在潛在空間中進行。通過生成新的具有所需特征的實例,可以探索模型在不同情況下的行為,例如“假設”分析和對抗性訓練。
如圖9(a)所示,通過直接在原始圖像上添加人工陰影來生成更多的訓練圖像。對它們進行微調的CNN表現(xiàn)出相當大的性能提升。
VAE 編碼器用于將兩個圖像轉換為 10D 潛在空間,如圖 9(b1) 中的 PCP 所示。橙色和藍色折線表示兩個圖像的 10D 潛在表示。然后,兩條折線在各個潛在維度內(即青色帶內)進行線性插值。最后,通過從插值區(qū)域采樣折線并將其輸入到 如圖9(b2)所示,生成的圖像呈現(xiàn)出從數(shù)字“4”(左上角)到“9”(右下角)平滑轉移的特征。)。
圖 9 (a) 通過添加人工生成的陰影來增強圖像。DeepVID 通過對潛在向量 (b1) 進行插值,在待解釋的數(shù)字“4”和“9”(b2) 之間生成圖像。
優(yōu)化機器學習模型可以通過優(yōu)化模型的架構/超參數(shù)或提高輸入數(shù)據(jù)的質量來完成。 隨著前者的技術不斷成熟,模型開發(fā)人員越來越認識到從后者獲得更大的性能提升相對更容易。這導致最近以數(shù)據(jù)為中心的人工智能越來越受歡迎。
TensorBoard是TensorFlow的可視化工具,可以幫助用戶可視化模型的結構、訓練過程和性能指標等。它提供了豐富的可視化功能,如圖表、直方圖、分布圖、嵌入式投影等,可以幫助用戶更好地理解和優(yōu)化模型。官網(wǎng):www.tensorflow.org/tensorboard
Matplotlib 是Python的繪圖庫,它提供了一整套和 matlab 相似的命令 API,可以生成出版質量級別的精美圖形,Matplotlib 使繪圖變得非常簡單,在易用性和性能間取得了優(yōu)異的平衡。官網(wǎng):https://matplotlib.org
使用 Matplotlib 繪制多曲線圖:
# plot_multi_curve.py
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0.1, 2 * np.pi, 100)
y_1 = x
y_2 = np.square(x)
y_3 = np.log(x)
y_4 = np.sin(x)
plt.plot(x,y_1)
plt.plot(x,y_2)
plt.plot(x,y_3)
plt.plot(x,y_4)
plt.show()
Seaborn 是在 Matplotlib 的基礎上進行了更高級的API封裝的Python數(shù)據(jù)可視化庫,從而使得作圖更加容易,應該把 Seaborn 視為 Matplotlib 的補充,而不是替代物。它支持多種圖表類型,如熱力圖、分布圖、分類圖等。官網(wǎng):https://seaborn.pydata.org
使用 Seaborn 繪制 pairplot :
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style="ticks")
df = sns.load_dataset("penguins")
sns.pairplot(df, hue="species")
plt.show()
Plotly是一款開源的交互式可視化工具,支持多種編程語言,如Python、R、MATLAB等。支持40余種圖表類型如散點圖、折線圖、柱狀圖、熱力圖等,涵蓋統(tǒng)計、金融、地理、科學和3D圖表。可以幫助用戶更好地展示數(shù)據(jù)和分析結果。
官網(wǎng):https://plotly.com
使用 plotly 高級API——express:
import plotly.graph_objects as go # 標準引用格式,一般簡寫為:go
import plotly.express as px # 標準引用格式,一般簡寫為:px
tips = px.data.tips() # plotly內置數(shù)據(jù)集:tips
# 使用express繪圖只需要調用一個函數(shù)
px.scatter(tips, x='total_bill', y='tip', width=900, height=600, title='tips').show()
文章轉自微信公眾號@算法進階