精益敏捷開發的核心思想在於消除浪費、快速迭代和持續交付價值。在機器學習產品交付過程中,這意味著需要關注客戶需求,並透過小步快跑的方式驗證產品功能,同時確保技術實踐的穩健性。從問題定義、原型測試到最終交付,都需要貫徹精益敏捷的理念,才能有效降低風險,提高產品成功率。

Lean 哲學與資料科學與機器學習產品交付

Lean 哲學是一種注重消除浪費和最大化價值的方法論。它認為,系統的各個部分之間存在著複雜的關係,改變系統的一個部分可能會對其他部分產生連鎖反應。

在資料科學和機器學習產品交付中,Lean 哲學可以幫助我們改善資訊流在各個要素之間的協同工作,最大化價值和消除浪費。例如,使用 Lean 哲學可以幫助我們:

  • 確定和消除浪費:例如,重複的資料處理、不必要的機器學習實驗等。
  • 最大化價值:例如,使用自動化工具和指令碼來簡化資料處理和機器學習實驗等。
  • 改善資訊流:例如,使用資料視覺化工具來展示資料品質和機器學習模型的效能等。

資料科學與機器學習產品交付的五個必備學科

資料科學和機器學習產品交付需要五個必備學科的協同工作,包括:

  1. 資料科學:資料科學是指使用統計學和機器學習等方法來分析和解釋資料的學科。
  2. 軟體工程:軟體工程是指使用工程學的原理和方法來設計、開發和測試軟體的學科。
  3. 基礎設施和佈署:基礎設施和佈署是指使用合適的硬體和軟體基礎設施來佈署機器學習模型的學科。
  4. 使用者經驗:使用者經驗是指使用機器學習產品的終端使用者和客戶的需求、反饋和體驗等方面的學科。
  5. 產品設計:產品設計是指機器學習產品的設計和使用者經驗,包括使用者介面、使用者經驗和產品功能等方面的學科。

這五個學科之間存在著複雜的關係,改變其中一個學科可能會對其他學科產生連鎖反應。例如,改變資料品質可能會影響機器學習模型的效能,改變機器學習模型的效能可能會影響使用者經驗等。

精簡敏捷開發:打造高效人工智慧產品的關鍵

在人工智慧(AI)專案中,尤其是機器學習(ML)專案,團隊經常面臨各種浪費和低效。為了克服這些挑戰,採用精簡敏捷開發方法是非常重要的。這種方法不僅能夠幫助團隊更好地服務客戶,還能夠提高開發效率和產品品質。

什麼是精簡敏捷開發?

精簡敏捷開發是一種管理和改進工作流程的方法,旨在消除浪費、最大化價值和提高效率。它起源於豐田生產系統(TPS),後來被詹姆斯·P·沃馬克(James P. Womack)和丹尼爾·T·瓊斯(Daniel T. Jones)在他們的書《改變世界的機器》(The Machine That Changed the World)中推廣。

五個精簡敏捷開發原則

精簡敏捷開發的核心是五個原則:

  1. 確定價值:確定客戶最看重的東西,並專注於最大化這種價值。
  2. 繪製價值流:繪製從概念到交付的整個流程,以確定哪些步驟增加價值,哪些步驟是浪費。
  3. 建立價值流:根據價值流的分析,建立一個新的流程,以消除浪費和最大化價值。
  4. 拉動系統:建立一個拉動系統,以確保只有當客戶需要時才會生產。
  5. 追求完美:不斷改進和完善流程,以消除浪費和提高效率。

精簡敏捷開發在機器學習中的應用

在機器學習專案中,精簡敏捷開發可以幫助團隊更好地服務客戶,提高開發效率和產品品質。透過採用精簡敏捷開發方法,團隊可以:

  • 更好地理解客戶的需求和價值
  • 消除浪費和低效,提高開發效率
  • 提高產品品質和客戶滿意度
  • 不斷改進和完善流程,追求完美

精簡生產五大原則

精簡生產(Lean)是一種管理哲學,旨在最大限度地減少浪費,提高工作效率。其核心是五大原則,分別是:

  1. 價值:從客戶的角度定義價值,確保所有工作都圍繞著創造客戶價值。
  2. 價值流:識別和映射出創造價值的流程,找出哪些步驟增加了價值,哪些步驟沒有。
  3. 流動:創造一個順暢和連續的工作流程,減少浪費和等待時間。
  4. 拉動:根據客戶需求觸發生產,避免過度生產。
  5. 持續改進:不斷努力改進和消除浪費,創造一個高效的價值鏈。

精簡生產在機器學習中的應用

在機器學習(ML)產品交付中,精簡生產原則可以幫助團隊專注於創造價值的工作,避免浪費時間和資源。例如,團隊可以先識別和優先考慮那些對使用者最有價值的功能,然後根據客戶需求拉動生產。這樣可以避免過度生產和浪費,創造一個正面的反饋迴圈,提高客戶滿意度、團隊士氣和交付動力。

價值流對映

價值流對映是一種工具,允許團隊視覺化地表示所有創造價值的步驟和資源。這個工具可以幫助團隊:

  1. 識別價值流:找出創造價值的流程。
  2. 識別浪費:找出過度生產、等待、缺陷、過度加工、過量函式庫存、不必要的運動、過量運輸、不必要的使用原料和不必要的努力等浪費。
  3. 改進流動:創造一個順暢和連續的工作流程,減少浪費和等待時間。
  4. 實施變化:根據價值流對映的分析,重新設計流程,消除浪費,創造一個更高效的流程。

實施價值流對映的步驟

  1. 識別被對映的產品或服務。
  2. 建立當前狀態地圖:視覺化地表示當前流程,包括所有步驟和材料(包括時間和勞動)。
  3. 識別價值增加和非價值增加活動:確定哪些步驟增加了價值,哪些步驟沒有。
  4. 識別浪費:找出過度生產、等待、缺陷、過度加工、過量函式庫存、不必要的運動、過量運輸、不必要的使用原料和不必要的努力等浪費。
  5. 建立未來狀態地圖:根據當前狀態地圖的分析,重新設計流程,消除浪費,創造一個更高效的流程。
  6. 實施變化:根據重新設計的流程,實施變化,持續監控和改進。

透過這些步驟,團隊可以建立一個高效的價值流,消除浪費,提高工作效率,最終提高客戶滿意度和團隊士氣。

精益實踐在機器學習產品開發中的應用

在機器學習(ML)產品開發中,精益實踐扮演著至關重要的角色。它幫助ML團隊縮短反饋迴圈,快速迭代,推出有價值的產品。精益實踐與五個學科(產品、資料、軟體工程、機器學習和商業)交織在一起,形成了一套可以幫助ML團隊快速迭代的實踐。

第一學科:產品

產品學科是ML產品開發的基礎。如果沒有產品學科的指導,其他學科的專業知識(例如ML、資料、軟體工程)就無法幫助團隊有效地交付ML產品。當我們不瞭解使用者的需求和組織的商業模式時,很難從商業層面獲得支援。即使團隊開始了專案,缺乏產品導向的方法也可能導致團隊缺乏產品知識,這種空白很容易被無根據的假設填充,從而導致團隊過度工程化未經驗證的功能,最終浪費了寶貴的能量和資源。

精益思維

精益思維認識到我們的所有想法都是根據需要驗證的假設,其中很多假設可能被證明是錯誤的。精益提供了一套原則和實踐來測試我們的假設,例如透過原型測試、安全失敗實驗和構建-測量-學習迴圈等。每個實驗都提供了幫助我們做出明智決策的見解,從而決定是否堅持、轉向或停止。透過這種方式,我們可以節省時間和資源,專注於為客戶帶來價值的想法。

發現

發現是一套活動,幫助我們更好地理解問題、機會和潛在解決方案。它為在不確定性中導航提供了一個結構,透過快速、時間盒、迭代的活動,涉及各種利益相關者和客戶。正如在《精益企業》(O’Reilly)中所闡述的,建立分享願景的過程始終從清晰地定義問題開始,因為有明確的問題陳述是至關重要的。

圖表翻譯:

  graph LR
    A[問題定義] --> B[發現]
    B --> C[原型測試]
    C --> D[構建-測量-學習迴圈]
    D --> E[決策]

這個流程圖展示了從問題定義到決策的過程,透過發現、原型測試和構建-測量-學習迴圈,最終做出明智的決策。

敏捷開發中的Discovery和Delivery

在敏捷開發中,Discovery和Delivery是兩個重要的紀律。Discovery關注於產品的定義和需求,而Delivery則關注於如何執行和交付產品。

Discovery:探索和定義

Discovery是一個探索和定義產品的過程,目的是瞭解客戶的需求和市場的趨勢。這個過程涉及到多個步驟,包括:

  • 使用視覺化工具,如Lean Canvas和Value Proposition Canvas,來收集和分析客戶的需求和市場的趨勢。
  • 進行使用者旅程對映、情境調查、客戶訪談等活動,以收集客戶的聲音和需求。
  • 制定和測試假設,評估問題和解決方案的匹配度和產品的市場適應度。
  • 使用Data Product Canvas等工具,連線資料收集、機器學習和價值創造之間的點。

Discovery的目的是幫助團隊集中於重要的任務,忽略幹擾,並確保產品符合客戶的需求和市場的趨勢。

Prototype Testing:原型測試

原型測試是一種快速測試想法的方法,可以在成本有效的方式下驗證或駁斥假設和假設。原型可以是簡單的手繪圖或可點選的互動式模擬。原型測試可以幫助團隊縮短反饋迴圈,從幾周或幾個月縮短到幾天。

Delivery:交付

Delivery是指交付ML解決方案的機制,涉及多個學科,包括交付計劃、工程、產品、機器學習、安全、資料等。Delivery的重點是塑造、規模化和排序工作,在三個地平線(從近到遠):使用者故事或功能、迭代和發布。它還涉及團隊如何運作,包括交付計劃、工程和產品等方面。

Delivery的目的是確保ML解決方案的交付高效、有效和安全,同時滿足客戶的需求和市場的趨勢。

敏捷開發中的Delivery

在敏捷開發中,Delivery是指交付ML解決方案的過程,涉及多個步驟,包括:

  • 交付計劃:定義交付的目標、範圍和時間表。
  • 工程:設計、開發和測試ML解決方案。
  • 產品:定義和最佳化ML解決方案的功能和效能。
  • 機器學習:開發和訓練ML模型。
  • 安全:確保ML解決方案的安全性和合規性。
  • 資料:收集、處理和分析資料,以支援ML解決方案。

Delivery的目的是確保ML解決方案的交付高效、有效和安全,同時滿足客戶的需求和市場的趨勢。

Data Product Canvas

Data Product Canvas是一種工具,用於連線資料收集、機器學習和價值創造之間的點。它可以幫助團隊瞭解資料如何被收集、處理和分析,以支援ML解決方案,並如何創造價值。

Data Product Canvas涉及多個步驟,包括:

  • 定義資料收集和處理流程。
  • 開發和訓練ML模型。
  • 最佳化ML模型的效能和功能。
  • 確保資料品質和安全性。
  • 創造價值並交付ML解決方案。

Data Product Canvas可以幫助團隊瞭解資料如何被使用,以支援ML解決方案,並如何創造價值。

敏捷交付實踐:垂直切割工作的重要性

在機器學習(ML)產品開發中,交付是一個常被忽視但至關重要的方面。即使我們在其他領域做得很好,但如果忽視交付,最終可能無法及時、可靠地將產品交付給使用者。這可能導致客戶滿意度下降、競爭力削弱、錯失機會,最終未能實作期望的商業成果。

垂直切割工作:一個更好的交付方法

傳統的水平切割工作方法,將工作分成功能層面,從下往上逐步交付,存在著風險。這種方法可能導致客戶只能在數月甚至數年後的重大工程投資後才能體驗到產品,並提供有價值的反饋。此外,水平切割自然導致了晚期整合問題,增加了發布延遲的風險。

為了減輕這些風險,我們可以使用垂直切割工作方法。垂直切割工作指的是將工作分成獨立的、可交付的價值單元,包含從使用者介面到後端的所有必要功能。這種方法使我們能夠更快地交付價值給客戶,並收集反饋。

垂直切割工作的原則

垂直切割工作的原則不僅適用於個別功能,也適用於更廣泛的交付層面。以下是垂直切割工作在交付學科中的三個層面:

  1. 故事層面:我們在每個故事中闡述和展示商業價值。
  2. 迭代層面:我們計劃和優先排序故事,以實作有形的成果。
  3. 發布層面:我們計劃、排序和優先排序故事集合,以創造可展示的商業價值。

最小垂直切割單元的挑戰

但是,如果最小垂直切割單元無法滿足預期的模型效能呢?例如,如果我們正在訓練一個函式庫存供應預測模型,模型的預測可能無法滿足生產環境的要求。在這種情況下,我們需要重新評估和調整我們的垂直切割工作方法,以確保我們能夠交付符合客戶需求的價值。

機器學習實務中的挑戰與解決方案

在機器學習(ML)實務中,預測錯誤可能導致數百萬美元的實際成本和收入損失。這是所有ML從業者都可能面臨的情況,幸好有幾種技術可以幫助我們減少這種情景的風險和成本。例如,在原型測試中,早期和快速地進行原型模型訓練,可以幫助我們測試ML方法解決商業問題的可行性和可行性。盡早在發現階段進行這些工作,可以避免在構建可能導致死衚衕的垂直切片上浪費數周和數月的交付努力。

我們還可以應用「定框ML問題」(Framing ML Problems)的技術,與相關客戶或利益相關者合作,找到適合ML系統的責任邊界。當我們執行實驗以測試想法時,我們會生成學習成果,告訴我們ML在哪裡和如何(或不)適合解決商業問題。這些內容將在後面的ML學科部分進行更詳細的描述。

橫向切割團隊:跨功能團隊

另一個常見的ML交付陷阱是根據功能將團隊分開,例如將團隊分為資料工程、產品工程和其他獨立團隊。這種結構導致兩個主要問題。首先,團隊不可避免地陷入待辦事項耦合中,即一個團隊依賴另一個團隊交付功能。根據一項非正式分析,待辦事項耦合增加了完成任務所需的時間。

第二個問題是康威定律的體現,即團隊設計系統和軟體的現象,反映了其溝通結構。例如,我們曾經看到過兩個團隊為同一產品建立了兩個不同的解決方案,以解決在低延遲下提供模型推理的相同問題。這就是康威定律在起作用。最小阻力路徑導致團隊傾向於尋找區域性最佳化,而不是協調分享功能。

圖表翻譯:

  graph LR
    A[商業問題] --> B[ML方法]
    B --> C[原型模型]
    C --> D[可行性評估]
    D --> E[垂直切片]
    E --> F[交付努力]
    style A fill:#f9f,stroke:#333,stroke-width:4px
    style B fill:#f9f,stroke:#333,stroke-width:4px
    style C fill:#f9f,stroke:#333,stroke-width:4px
    style D fill:#f9f,stroke:#333,stroke-width:4px
    style E fill:#f9f,stroke:#333,stroke-width:4px
    style F fill:#f9f,stroke:#333,stroke-width:4px

內容解密:

上述流程圖描述了從商業問題到交付努力的過程。首先,我們需要明確商業問題,然後選擇適合的ML方法。接下來,我們建立原型模型以評估其可行性,最後決定是否進行垂直切片並投入交付努力。這個過程需要跨功能團隊的合作,以避免待辦事項耦合和康威定律的影響。

如何透過跨功能團隊改善產品開發流程

在產品開發中,團隊的結構和溝通方式對於最終的成果有著重要的影響。傳統的功能性團隊(functional teams)結構可能會導致溝通不暢、決策效率低下和重複工作等問題。為瞭解決這些問題,我們可以採用跨功能團隊(cross-functional teams)的方法,將前端元素(如使用者經驗設計、UI設計)和後端元素(如機器學習、MLOps、資料工程)整合到同一個團隊中。

這種跨功能團隊的做法被稱為逆康威操縱(Inverse Conway Maneuver),它能夠帶來四個主要的好處:

  1. 改善決策速度和品質:分享的背景和節奏減少了討論和迭代的摩擦,讓團隊成員可以更快速地做出決定和調整。
  2. 減少反覆傳遞和等待:當團隊是自治的時候,它們可以自行設計和交付功能和端對端的功能,不需要依賴或等待其他團隊。
  3. 減少盲點透過多樣性:具有不同能力和觀點的多元化團隊可以確保機器學習專案是全面的,考慮到所有相關的因素。
  4. 減少批次大小:在較小的批次中工作有很多好處,是Lean軟體交付的核心原則之一。較小的批次可以提供更快的反饋、降低風險、減少浪費和提高品質。

跨功能團隊的第一三個好處——改善溝通和合作、最小化傳遞、多元化專長——使得團隊可以減少批次大小。例如,不需要先工程化和完善一個功能然後才可以分享給更廣泛的使用者進行反饋,跨功能團隊就可以包含必要的產品和領域知識來提供這種反饋。

雖然跨功能團隊不是完全沒有問題,但我們認為,透過正確的工程實踐,可以有效地解決這些問題。另外,還有許多方法可以幫助對齊產品團隊,例如實踐社群、平臺團隊等。我們將在後續深入討論這些主題。

團隊拓樸學與敏捷團隊管理

在前面的章節中,我們探討了團隊拓樸學的基本概念和原則。在本章中,我們將深入探討如何將這些原則應用於機器學習團隊的敏捷管理。

團隊形態和互動模式

團隊形態和互動模式是敏捷團隊管理的核心。不同的團隊形態和互動模式可以影響團隊的效率、協作和創新能力。然而,沒有任何一種團隊形態或互動模式能夠適用於所有情況。團隊形態和互動模式的選擇取決於多種因素,包括團隊的大小、成員的技能和經驗、專案的複雜性等。

敏捷團隊管理的實踐

敏捷團隊管理的實踐包括多種方法和工具,例如Scrum、Kanban、極限程式設計等。這些方法和工具可以幫助團隊實作敏捷的核心價值:個體和互動、可工作的軟體、客戶合作、回應變化。

然而,實踐敏捷團隊管理時,團隊容易陷入一些常見的陷阱。例如,團隊可能只注重形式而忽略實質,或者只關注短期目標而忽略長期價值。為了避免這些陷阱,團隊需要深入理解敏捷的原則和價值,並根據自己的具體情況進行調整和最佳化。

交付指標的衡量

交付指標的衡量是敏捷團隊管理的重要組成部分。交付指標可以幫助團隊評估自己的效率和品質,找出需要改進的地方。常見的交付指標包括迭代速度、週期時間、缺陷率等。

此外,團隊還可以使用四個關鍵指標來衡量軟體交付效能:交付時間、佈署頻率、平均還原時間和變更失敗率。這些指標可以幫助團隊確保交付流程的穩定性和高品質。

內容解密:

在這個章節中,我們探討了敏捷團隊管理的實踐和交付指標的衡量。敏捷團隊管理需要根據團隊的具體情況進行調整和最佳化,交付指標的衡量可以幫助團隊評估自己的效率和品質。以下是本章節的程式碼示例:

import numpy as np

# 定義交付指標
def calculate_delivery_metrics(iteration_velocity, cycle_time, defect_rate):
    delivery_lead_time = iteration_velocity * cycle_time
    deployment_frequency = 1 / cycle_time
    mean_time_to_recovery = defect_rate * cycle_time
    change_failure_rate = defect_rate / iteration_velocity
    return delivery_lead_time, deployment_frequency, mean_time_to_recovery, change_failure_rate

# 測試交付指標
iteration_velocity = 10
cycle_time = 5
defect_rate = 0.1
delivery_lead_time, deployment_frequency, mean_time_to_recovery, change_failure_rate = calculate_delivery_metrics(iteration_velocity, cycle_time, defect_rate)
print("交付時間:", delivery_lead_time)
print("佈署頻率:", deployment_frequency)
print("平均還原時間:", mean_time_to_recovery)
print("變更失敗率:", change_failure_rate)

圖表翻譯:

以下是本章節的Mermaid圖表:

  graph LR
    A[敏捷團隊管理] --> B[交付指標的衡量]
    B --> C[迭代速度]
    B --> D[週期時間]
    B --> E[缺陷率]
    C --> F[交付時間]
    D --> F
    E --> F
    F --> G[軟體交付效能]
    G --> H[交付時間]
    G --> I[佈署頻率]
    G --> J[平均還原時間]
    G --> K[變更失敗率]

這個圖表展示了敏捷團隊管理和交付指標的衡量之間的關係,同時也展示了軟體交付效能的四個關鍵指標。

敏捷開發中的測量和工程實踐

在敏捷開發中,測量和工程實踐是兩個至關重要的方面。測量有助於團隊瞭解工作進度和目標達成情況,而工程實踐則關注於縮短反饋迴圈,以便快速迭代和改進。

測量的重要性

測量是敏捷開發中的關鍵組成部分。透過測量,團隊可以瞭解工作進度、目標達成情況以及需要改進的領域。然而,測量也可能被誤用或濫用,從而導致不良的結果。根據Goodhart的法則,當一個指標變成目標時,它就不再是一個好的指標。因此,團隊必須確保測量的是正確的結果,並持續改進以找到適合組織的ML實踐的合適指標。

工程實踐:縮短反饋迴圈

工程實踐的核心目的是縮短反饋迴圈。這意味著團隊需要快速地開發、測試和佈署變更,以便及時收集反饋並進行改進。自動化測試是實作這一目標的關鍵工具。透過自動化測試,團隊可以加速實驗、減少認知負擔、並快速獲得反饋。

自動化測試的重要性

自動化測試在ML專案中尤其重要。沒有自動化測試,變更就會變得容易出錯、耗時且令人緊張。自動化測試可以幫助團隊加速實驗、減少認知負擔、並快速獲得反饋。它們讓團隊可以快速地執行想法並正確地完成故事。

重構的挑戰

重構是軟體開發中的另一個重要方面。隨著時間的推移,程式碼函式庫會變得越來越複雜和脆弱,使得修改程式碼變得痛苦和容易出錯。ML專案尤其容易受到複雜性的影響,因為沒有自動化測試,重構就會變得非常困難和風險高。因此,重構變得非常重要,以保持程式碼函式庫的健康和可維護性。

內容解密:

  • 測量是敏捷開發中的關鍵組成部分。
  • 自動化測試是實作縮短反饋迴圈的關鍵工具。
  • 重構是軟體開發中的重要方面,可以幫助保持程式碼函式庫的健康和可維護性。

圖表翻譯:

  graph LR
    A[敏捷開發] --> B[測量]
    B --> C[工程實踐]
    C --> D[自動化測試]
    D --> E[重構]
    E --> F[縮短反饋迴圈]

在這個圖表中,我們可以看到敏捷開發中的測量、工程實踐、自動化測試、重構和縮短反饋迴圈之間的關係。透過自動化測試和重構,團隊可以加速實驗、減少認知負擔、並快速獲得反饋,從而實作縮短反饋迴圈的目標。

敏捷團隊的重構之道

在軟體開發的過程中,重構是一項至關重要的工作,但常常被延遲或忽略,最終變成一個沉重的技術債務。然而,有效的團隊可以將重構融入日常工作中,使其變得安全且容易。這些團隊通常具備三個特點:

  1. 全面的測試:他們擁有完善的測試套件,可以快速反饋重構是否保留了行為。
  2. 高效的編輯器組態:他們利用現代編輯器的能力,執行重構操作,如重新命名變數、提取函式和修改簽名。
  3. 健康的技術債務和工作量:他們保持著合理的技術債務和工作量,能夠在功能交付的過程中進行重構,以提高程式碼品質和可讀性。

編輯器的力量

現代編輯器提供了許多強大的功能,幫助開發者更有效地編寫程式碼。編輯器可以處理低階別的細節,讓開發者的認知能力專注於解決更高層次的問題。例如,編輯器可以自動重新命名變數、匯入函式等,減少手動操作的需要。

持續交付與機器學習

持續交付(Continuous Delivery)是一種軟體工程方法,它可以幫助機器學習從業者減少重複性工作、加速實驗和打造高品質的產品。透過應用持續交付原則和實踐到機器學習專案中,團隊可以縮短反饋迴圈、建立品質控制,確保軟體和機器學習模型的高品質和安全、高效地佈署到生產環境。

研究表明,持續交付可以顯著提高團隊的效率和品質。透過採用這種方法,機器學習從業者可以更快地實作想法、解決問題和交付價值。

# 使用 Python 實作簡單的持續交付
import os
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris

# 載入 iris 資料集
iris = load_iris()
X = iris.data
y = iris.target

# 定義模型
model = RandomForestClassifier(n_estimators=100)

# 執行交叉驗證
scores = cross_val_score(model, X, y, cv=5)

# 列印結果
print("Accuracy:", scores.mean())
  flowchart TD
    A[開始] --> B[載入資料]
    B --> C[定義模型]
    C --> D[執行交叉驗證]
    D --> E[列印結果]
    E --> F[結束]

圖表翻譯:

此圖表示了一個簡單的機器學習工作流程,從載入資料開始,接著定義模型,然後執行交叉驗證,最後列印結果。這個流程展示瞭如何使用 Python 和 Scikit-learn 實作一個基本的持續交付過程。

內容解密:

在上述程式碼中,我們使用 cross_val_score 函式來執行交叉驗證,這是一種評估模型效能的方法。透過設定 cv 引數為 5,我們可以執行 5 折交叉驗證。結果將是模型在不同折上的準確率列表。最終,我們計算並列印預出平均準確率。這個過程展示瞭如何使用 Python 實作簡單的持續交付和模型評估。

機器學習的技術實踐

機器學習(ML)是一個涵蓋多個領域的技術,涉及資料科學、軟體工程和商業戰略。它不僅僅是訓練和佈署模型,也包括了問題定義、系統設計、可解釋性、可靠性、負責任的AI和治理等多個層面。

問題定義

在機器學習專案的早期階段,通常需要明確定義問題,包括問題的定義、目標、相關利益相關者和解決方案的價值。這個過程被稱為問題定義(Problem Framing)。一個好的問題定義可以幫助團隊更好地理解需求,避免誤解和浪費資源。

有多種工具可以幫助我們定義機器學習問題,例如資料產品畫布(Data Product Canvas)和假設畫布(Hypothesis Canvas)。假設畫布是一種工具,幫助我們快速地提出和測試假設,跟蹤學習過程,並根據客戶或利益相關者的反饋進行迭代。

從技術架構視角來看,將精實敏捷開發應用於機器學習產品交付的核心在於縮短反饋迴圈,並透過跨功能團隊實作價值的最大化。文章深入探討了精實敏捷的五大原則、價值流對映、垂直切割工作法以及如何避免常見的交付陷阱,例如水平切割工作和功能性團隊造成的溝通瓶頸。透過強調持續交付、自動化測試和重構的重要性,文章清晰地闡述瞭如何構建一個高效的機器學習產品開發流程。然而,文章並未深入探討如何應對最小垂直切割單元無法滿足預期模型效能的挑戰,這在實務中是一個常見的難題。未來可以進一步探討如何調整垂直切割策略或採用其他方法來應對此類挑戰。玄貓認為,精實敏捷開發的理念與實務結合,將是機器學習產品開發團隊提升效率和交付價值的關鍵所在。接下來,如何將這些原則有效地整合到現有的開發流程中,並建立相應的團隊文化,將是機器學習領域持續探索的重要方向。