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