首頁  >  文章  >  科技週邊  >  結合基於規則和機器學習的方法來建立強大的混合系統

結合基於規則和機器學習的方法來建立強大的混合系統

WBOY
WBOY轉載
2023-05-25 09:04:05840瀏覽

經過這些年的發展,我們都確信ML即使不能表現得更好,至少也可以在幾乎所有地方與前ML時代的解決方案相匹配。比如說一些規則約束,我們都會想到能否把它們替換為基於樹的ml模型。但是世界並不總是黑白分明的,雖然機器學習在解決問題上肯定有自己的位置,但它並不總是最好的解決方案。基於規則的系統甚至可以勝過機器學習,特別是在可解釋性、健壯性和透明度至關重要的領域。

在本文中,我將介紹一些實際的案例,以及如何將手動規則和ML結合使得我們的方案變得更好。

基於規則的系統

基於規則的系統是透過預定義規則來為決策提供支持,系統根據儲存的規則評估數據,並根據映射執行特定操作。

以下是幾個例子:

詐欺偵測:在詐欺偵測中,基於規則的系統可用於根據預定義規則快速標記和調查可疑交易。

比如說國際象棋的作弊者,他們的基本作法是在另一個視窗中安裝電腦象棋應用程序,使用程式進行對弈,對於程式來說無論多複雜,每一步都需要4- 5 秒才能完成。所以加上「閾值」來計算玩家每一步的時間,如果在浮動不大就有可能被判斷為是作弊者,如下圖所示:

結合基於規則和機器學習的方法來建立強大的混合系統

醫療保健產業:基於規則的系統可用於管理處方和防止用藥錯誤。它們還可以非常有用地幫助醫生根據先前的結果為患者開出額外的分析處方。

供應鏈管理:在供應鏈管理中,基於規則的系統可用於產生低庫存警報、協助管理到期日或新產品推出。

基於機器學習的系統

機器學習 (ML) 系統使用演算法從資料中學習並做出預測或採取行動,且無需明確編程。機器學習系統使用透過大量資料訓練所獲得的知識來對新資料進行預測和決策。隨著更多資料用於訓練,ML 演算法可以提高其效能。機器學習系統包括自然語言處理、影像和語音辨識、預測分析等。

詐欺偵測:銀行可能會使用機器學習系統從過去的詐騙交易中學習並即時識別潛在的詐騙活動。或者,它可能會對系統進行逆向工程並尋找看起來非常“異常”的交易。

醫療保健:醫院可能會使用 ML 系統來分析病患數據,並根據某些 X 光預測病患罹患某種疾病的可能性。

結合基於規則和機器學習的方法來建立強大的混合系統

對比

基於規則的系統和ML系統都有各自的優點和缺點

基於規則的系統的優點很明顯:

  • 易於理解並解釋
  • 快速實作
  • 易於修改
  • 健壯的

缺點:

  • 涉及大量變數的問題
  • 約束條件多的問題
  • 限於現有規則
##基於ml的系統的優點也很明顯

    自主學習系統
  • 解決更複雜問題的能力
  • 與基於規則的系統相比,減少了人為幹預,提高了效率
  • 透過不斷學習,靈活地適應數據和環境的變化
#缺點:

    需要的數據,有時很多
  • 僅限於先前看到的資料ML
  • 認知能力有限
透過對比我們發現,這兩種系統的優缺點並不衝突,並且是互補的,那麼有沒有一種方法可以將他們的優點結合起來呢?

混合型系統

結合基於規則和機器學習的方法來建立強大的混合系統

混合系統,結合了基於規則的系統和機器學習演算法,最近變得越來越流行。它們可以提供更健壯、準確和有效的結果,特別是在處理複雜問題時。

讓我們來看看可以使用租賃資料集實現的混合系統:

結合基於規則和機器學習的方法來建立強大的混合系統

#特徵工程:將樓層轉換為三個類別之一:高、中或低,取決於建築物的樓層數。這樣可以提高ML模型的效率

硬編碼規則可以用作特徵工程過程的一部分,以識別和提取輸入資料中的重要特徵。例如,如果問題領域清晰明確,規則可以輕鬆且準確地定義,硬編碼規則可以用來創建新特徵或修改現有特徵,以提高機器學習模型的效能。雖然硬編碼規則和特徵工程是兩種不同的技術,但它們可以結合使用以提高機器學習模型的性能。硬編碼規則可以用於創建新特徵或修改現有特徵,而特徵工程可以用於提取不易透過硬編碼規則捕獲的特徵。

後處理:四捨五入或歸一化最終結果。

硬編碼規則可以作為後處理階段的一部分來修改機器學習模型的輸出。例如,如果機器學習模型輸出一組預測結果與某些已知規則或限制條件不一致,硬編碼規則可以用來修改預測結果,使其符合規則或限制條件。例如過濾或平滑等後處理技術可以透過消除雜訊或錯誤,或提高預測的整體準確性來精細機器學習模型的輸出。當機器學習模型輸出機率預測或輸入資料存在不確定性時,這些技術尤其有效。在某些情況下,後處理技術也可以用於使用額外資訊增強輸入資料。例如,如果機器學習模型是在有限資料集上訓練的,後處理技術可以用來從外部來源(如社交媒體或新聞提要)中提取額外的特徵,以提高預測的準確性。

案例

醫療保健

讓我們來看看心臟病的數據:

結合基於規則和機器學習的方法來建立強大的混合系統

##如果我們用隨機森林來預測目標類別:

clf = RandomForestClassifier(n_estimators=100, random_state=random_seed
 X_train, X_test, y_train, y_test = train_test_split(
 df.iloc[:, :-1], df.iloc[:, -1], test_size=0.30, random_state=random_seed
 )
 clf.fit(X_train, y_train))

這裡選擇隨機森林的原因之一是它的建構特徵重要性能力。下面可以看到用於訓練的特徵的重要性:

結合基於規則和機器學習的方法來建立強大的混合系統

#看看結果:

y_pred = pd.Series(clf.predict(X_test), index=y_test.index
 cm = confusion_matrix(y_test, y_pred, labels=clf.classes_)
 conf_matrix = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=clf.classes_)
 conf_matrix.plot())

結合基於規則和機器學習的方法來建立強大的混合系統

結合基於規則和機器學習的方法來建立強大的混合系統

f1_score(y_test, y_pred): 0.74
 recall_score(y_test, y_pred): 0.747

這時一位心臟科醫生看到了你的模型。基於他的經驗和領域知識,他認為地中海貧血特徵(thal)比上面所示的要重要得多。所以我們決定建立一個直方圖並查看結果。

結合基於規則和機器學習的方法來建立強大的混合系統

然後指定一個強制性規則

y_pred[X_test[X_test["thal"] == 2].index] = 1

結果的混淆矩陣變成這樣:

結合基於規則和機器學習的方法來建立強大的混合系統

#
f1_score(y_test, y_pred): 0.818
 recall_score(y_test, y_pred): 0.9
結果有了很大的提升。這就是領域知識在評估患者得分方面發揮了重要作用。

詐騙交易

下面的資料集是銀行詐騙交易。

結合基於規則和機器學習的方法來建立強大的混合系統

資料集高度不平衡:

df["Class"].value_counts()
 0 28431
 1 4925

為了建立規則,我們查看特徵的分佈箱線圖:

結合基於規則和機器學習的方法來建立強大的混合系統

我們們要寫一個自己的HybridEstimator類,他將作為我們手動規則的預估器:

from hulearn.classification import FunctionClassifier
 rules = {
 "V3": ("<=", -2),
 "V12": ("<=", -3),
 "V17": ("<=", -2),
 }
 def create_rules(data: pd.DataFrame, rules):
 filtered_data = data.copy()
 for col in rules:
 filtered_data[col] = eval(f"filtered_data[col] {rules[col][0]} {rules[col][1]}")
 result = np.array(filtered_data[list(rules.keys())].min(axis=1)).astype(int)
 return result
 hybrid_classifier = FunctionClassifier(create_rules, rules=rules)

我們可以比較純基於規則的系統和kNN方法的結果,這裡使用kNN的原因是,它可以處理不平衡資料:

##############可以看到,我們只寫了3個規則,就比KNN模型的表現好######總結######我們這裡的例子可能並不非常的確切,但是它足以說明,混合模型提供了實際的好處,例如快速實施、對異常值的穩健性和增加的透明度。在將業務邏輯與機器學習結合時,它們是有益的。例如,醫療保健中的混合規則-ML 系統可以透過結合臨床規則和分析患者資料的機器學習演算法來診斷疾病。機器學習能夠在許多任務上取得出色的結果,但是它也需要領域知識的補充。領域知識可以幫助機器學習模型更好地理解數據,並更準確地進行預測和分類。 ###

混合模型可以幫助我們將領域知識和機器學習模型結合起來。混合模型通常由多個子模型組成,其中每個子模型都針對特定的領域知識進行了最佳化。這些子模型可以是基於硬編碼規則的模型,也可以是基於統計方法的模型,甚至可以是基於深度學習的模型。

混合模型可以利用領域知識來指導機器學習模型的學習過程,從而提高模型的準確性和可靠性。例如,在醫學領域中,混合模型可以結合醫生的專業知識和機器學習模型的能力,以診斷患者的疾病。在自然語言處理領域,混合模型可以結合語言學知識和機器學習模型的能力,以便更好地理解和產生自然語言。

總之,混合模型可以幫助我們將領域知識和機器學習模型結合起來,從而提高模型的準確性和可靠性,並且在各種任務中都有廣泛的應用。

以上是結合基於規則和機器學習的方法來建立強大的混合系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除