隨著開放銀行應用程序的可訪問性、新銀行(Neobanks)的主流采用以及最近科技巨頭進入金融服務行業,零售銀行的格局在過去五年發生了巨大變化。根據福布斯最近的一篇文章在美國,千禧一代現在占全球勞動力的75%,71%的人表示他們“寧願去看牙醫也不願接受銀行的建議”。競爭已經從晚上9點到5點的實體分店網絡轉變為贏得越來越癡迷於簡單、高效和透明概念的精通數字技術的消費者。新一代的人不再對從分行經理那裏聽到一般性的理財建議感興趣,而是希望通過舒適的移動銀行應用程序,通過個性化的實時見解,重新控製自己的財務。為了保持競爭力,銀行必須通過個性化的見解、建議、設定財務目標和報告功能,提供超越傳統銀行的迷人的移動銀行體驗——所有這些都由先進的分析技術提供支持地理空間自然語言處理(NLP)。
考慮到觸手可及的海量數據庫,這些功能可能會特別重要。根據2020年的研究《尼爾森報告》在美國,全球每天大約發生10億筆信用卡交易(僅在美國就有1億筆交易)。也就是說,每天可以利用10億個數據點來造福終端消費者,以更個性化的見解獎勵他們的忠誠(以及使用他們的數據)。另一方麵,這意味著必須獲取、策劃、處理、分類和上下文化10億個數據點,這需要一個既支持數據又支持人工智能的分析環境,並促進工程師、科學家和業務分析師之間的協作。SQL並不能改善客戶體驗。人工智能。
在這個新的解決方案加速器(公開可訪問的筆記本在本博客的最後報告),我們演示如何lakehouse架構使銀行、開放銀行聚合器和支付處理程序能夠解決零售銀行的核心挑戰:商戶分類。通過使用筆記本和行業最佳實踐,我們使客戶能夠通過上下文信息(品牌、類別)豐富交易,這些信息可以用於下遊用例,如客戶細分或欺詐預防。beplay体育app下载地址
理解卡交易
信用卡交易的動態是複雜的。每個操作都涉及銷售點終端、商家、支付處理器網關、獲取銀行、卡片處理器網絡、發行銀行和消費者賬戶。由於涉及卡片交易的授權和結算的實體很多,從商家轉到零售銀行的上下文信息很複雜,有時會誤導最終消費者,通常是反直覺的,需要使用先進的分析技術來提取清楚的品牌和商家信息。對於初學者來說,任何商家都需要同意一個商家類別代碼(MCC),這是一個4位數的數字,用於根據商家提供的商品或服務類型對其進行分類(見列表)。MCC本身通常不足以理解任何業務(例如銷售不同商品的大型零售商)的真實性質,因為它往往太寬泛或太具體。
除了複雜的分類法之外,MCC有時在銷售終端的一個點與另一個點之間是不同的,即使給定的是相同的商家。僅依靠MCC代碼不足以驅動卓越的客戶體驗,必須與附加的上下文相結合,如交易敘述和商家描述,以充分了解所購買商品的品牌、位置和性質。但這裏有一個難題。交易敘述和商家描述是由商家填寫的自由形式的文本,沒有通用的指導方針或行業標準,因此需要數據科學方法來解決數據不一致問題。在這個解決方案加速器中,我們演示如何使用文本分類技術,例如fasttext可以幫助組織更好地理解隱藏在任何交易敘述中的品牌,給定一個商家的參考數據集。交易描述“STARBUCKS LONDON 1233-242-43 2021”與公司“STARBUCKS”有多接近?
需要了解的一個重要方麵是,我們有多少數據可以從中學習文本模式。在交易數據方麵,不同商家的可用數據存在很大差異是很常見的。這是非常正常的,它是由客戶群的購物模式驅動的。例如,可以預期,我們將更容易訪問亞馬遜的交易比角落商店的交易,這僅僅是因為交易發生在這些各自的商家的頻率。自然,事務數據將遵循冪律分布(如下圖所示),其中大部分數據來自少數商家。
我們的模糊字符串匹配方法
從模糊字符串匹配的方法來解決這個問題的挑戰是簡單的,大部分的描述和商家字符串不匹配。任何字符串類型的距離都非常高,而實際上,任何相似度都非常低。如果我們換個角度呢?有沒有更好的方法來模擬這個問題?我們認為,上述問題最好通過文檔(自由文本)分類來建模,而不是字符串相似度。在這個解決方案加速器中,我們演示了fasttext如何幫助我們有效地解決描述到商家的轉換,並解鎖高級分析用例。
最近一種流行的方法是將文本數據表示為數值向量,從而出現了兩個突出的概念:word2vec和doc2vec (看博客).Fasttext自帶內置邏輯,可以基於兩種方法將文本轉換為矢量表示,cbow和skip (看文檔),根據數據的性質,一種表示的性能會比另一種更好。我們的重點不是剖析用於文本向量化的邏輯的內部結構,而是當我們麵對可以將文本分類為數千種類別(商家)時,如何實際使用該模型來解決文本分類問題。
信用卡交易的推廣方法
要使模型的效益最大化,數據消毒和分層是關鍵!機器學習(ML)可以簡單地擴展並在更清潔的數據下執行得更好。考慮到這一點,我們將確保我們的數據是按商戶分層的。我們希望確保能夠為每個商家提供相同數量的數據,供模型從中學習。這將避免模型僅僅因為購物者在他們那裏消費的頻率而偏向於某些商家的情況。為此,我們使用了以下代碼行:
結果= data.sampleBy(自我。target_column sample_rates)
通過Spark sampleBy方法確保分層,該方法需要一個將發生分層的值的列,以及一個地層標簽到樣本大小映射的字典。在我們的解決方案中,我們確保了擁有超過100行可用標記數據的任何商家都被保存在訓練語料庫中。我們還確保零類別(未被識別的商人)在10:1的比例中被過度表示,這是因為交易空間中存在更高的文本困惑,我們的模型無法從中學習。我們保持零級作為一個有效的分類選項,以避免假陽性的膨脹。另一種同樣有效的方法是用一個閾值概率來校準每個類,在這個閾值概率下,我們不再信任模型生成的標簽,默認為“未知商戶”標簽。這是一個更複雜的過程,因此我們選擇了一個更簡單的方法。你應該隻在ML和AI中引入複雜性,如果它能帶來明顯的價值。
從清理的角度來看,我們希望確保我們的模型不會被花在從無關緊要的數據中學習的時間所扼殺。一個這樣的例子是交易敘述中可能包含的日期和金額。我們無法根據交易發生的日期提取商家級別的信息。如果我們考慮到商家在日期方麵不遵循相同的表示標準,我們立即得出結論,日期可以安全地從描述中刪除,這一操作將幫助模型更有效地學習。為此,我們的清潔策略是根據Kaggle博客.作為數據清理參考,我們展示了如何清理和標準化數據的完整邏輯圖。這是一個邏輯管道,該解決方案的最終用戶可以輕鬆地修改和/或擴展這些步驟中的任何一個的行為,並實現定製的體驗。
在將數據轉換成正確的表示形式之後,我們利用了MLflow的力量,Hyperopt和Apache Spark™來訓練具有不同參數的快速文本模型。MLflow使我們能夠跟蹤許多不同的模型運行並進行比較。MLflow的關鍵功能是它豐富的UI,這使得在許多參數和指標上比較數百個不同的ML模型運行成為可能:
有關如何參數化和優化快速文本模型的參考,請參閱文檔。在我們的解決方案中,我們使用了train_unsupervised
培訓方法。考慮到我們擁有的商家數量(1000+),我們意識到不能基於一個度量值正確地比較模型。生成包含1000多個類的混淆矩陣可能不會帶來預期的性能解釋的簡單性。我們選擇了每百分位的準確性方法。我們根據中位數準確率、最差的第25百分位和最差的第5百分位的表現比較了我們的模型。這讓我們了解了模型的性能是如何分布在商家空間中的。
作為我們解決方案的一部分,我們實現了fasttext模型與MLflow的集成,並能夠通過MLflow api加載模型,並通過預打包的Spark udfs大規模應用最佳模型,如下所示:
Logged_model = f'runs:/{run_id}/model' loaded_model = mlflow.pyfunc.load_model(Logged_model) loaded_model_udf = mlflow.pyfunc. loaded_model = /{run_id}/model' loaded_model = mlflow.pyfunc. loaded_model (Logged_model)spark_udf(spark, model_uri=logged_model, result_type="string") spark_results = (validation_data .withColumn(' forecasting ', loaded_model_udf("clean_description")))
應用解決方案時的這種級別的簡單性是至關重要的。一旦訓練和校準了模型,就可以用幾行代碼重新記錄曆史事務數據。這幾行代碼前所未有地解鎖了客戶數據分析。分析師最終可以專注於交付流或批處理的複雜高級數據分析用例,如客戶生命周期價值、定價、客戶細分、客戶保留和許多其他分析解決方案。
性能、性能、性能!
所有這些努力背後的原因很簡單:獲得一個能夠自動完成事務充實任務的係統。對於在自動化運行模式下值得信任的解決方案,每個商家的性能都必須達到較高的水平。我們已經訓練了幾百種不同的配置,並將這些模型與專注於低性能商家的模型進行了比較。我們獲得的第5個最低百分位數的準確率約為93%;我們的中位準確率達到99%。這些結果使我們有信心提出在最少的人力監督下自動化的商家分類。
這些結果很好,但我想到一個問題。我們overfitted嗎?隻有當我們期望從我們的模型中得到大量的泛化時,過擬合才會成為一個問題,這意味著當我們的訓練數據隻代表現實中非常小的樣本,而新到達的數據與訓練數據相差很大時。在我們的例子中,我們有非常簡短的文檔,每個商家的語法都相當簡單。另一方麵,fasttext生成ngram和跳躍圖,在事務描述中,這種方法可以提取所有有用的知識。這兩個考慮因素結合在一起表明,即使我們過擬合這些向量(本質上從知識表示中排除了一些標記),我們仍然會泛化。簡單地說,給定我們的應用程序上下文,該模型對於過擬合是足夠健壯的。值得一提的是,為模型評估產生的所有指標都是在400,000個事務的集合上計算的,並且這個數據集與訓練數據是分離的。
如果我們沒有標記的數據集,這有用嗎
這是一個很難用是或否來回答的問題。然而,作為我們實驗的一部分,我們製定了一個觀點。有了我們的框架,答案是肯定的。我們已經執行了幾個ML模型培訓活動,每個商家的標簽行數量不同。我們利用MLflow、Hyperopt和Spark訓練具有不同參數的不同模型,訓練具有不同數據大小的不同參數的不同模型,並對它們進行交叉引用,並在一組公共指標上進行比較。
這種方法使我們能夠回答以下問題:訓練所提議的模型和為曆史交易數據評分所需的每個商家的最小標記行數是多少?答案是:低到50,是的,5 - 0 !
在每個商家隻有50條記錄的情況下,我們保持了99%的中位數準確率,而排名第五的最低百分位數隻降低了幾個百分點的性能,降至85%。另一方麵,每個商家數據集100條記錄的結果對於最低的第5百分位的準確率為91%。這隻是表明某些品牌的描述語法確實更混亂,可能需要更多的數據。最重要的是,在每個商家隻有50行的邊緣情況下,該係統能夠以優異的中值性能和合理的性能運行。這使得商家分類的進入門檻非常低。
交易豐富以推動高級業務
由於消費者對個性化服務和用戶體驗的期望不斷提高,零售銀行正處於轉型之中,銀行和金融機構可以從其他從批發轉向零售的行業學習大量的消費者參與戰略。在媒體行業,Netflix、亞馬遜(Amazon)和穀歌等公司為新進入者和老玩家都定下了條件,在所有渠道上隨時提供無摩擦的個性化體驗。遊戲行業已經完全從“內容為王”轉變為基於用戶偏好和細分信息的專業化體驗。打造個性化的體驗,讓消費者獲得價值,建立信任,並確保在一個消費者有無數供應商和選擇的市場中,你仍然是首選的平台。Beplay体育安卓版本
向媒體行業的先鋒學習,專注於銀行體驗而非交易數據的零售銀行公司,不僅能夠吸引年輕一代的心靈和思想,還能創造人們喜歡並希望再次使用的移動銀行體驗。在這個以個人客戶為中心的模型中,任何新的卡片交易都將產生額外的數據點,這些數據點可以被進一步利用,從而使終端消費者受益,推動更多的個性化、更多的客戶參與、更多的交易等等——所有這些都在減少流失和不滿。
盡管這裏討論的商家分類技術並沒有涉及個性化金融的全圖,但我們相信,本博客中概述的技術能力對於實現這一目標至關重要。為客戶提供上下文信息的簡單UI(如上圖),而beplay体育app下载地址不是在移動設備上簡單的“SQL轉儲”,這將是實現這種轉變的催化劑。
在未來的解決方案加速器中,我們計劃利用這種能力來推動進一步的個性化和可操作的洞察,例如客戶細分、消費目標和行為消費模式(檢測生活事件),從我們的終端消費者那裏學習更多,因為他們越來越投入,並確保從這些新的洞察中獲得的增值使他們受益。
在這次加速活動中,我們演示了零售銀行需要大幅改變它們處理交易數據的方法,從數據倉庫上的OLTP模式到數據湖上的OLAP方法,以及需要一個湖屋體係結構在行業規模上應用ML。我們還討論了關於培訓數據量的解決方案實施的進入障礙這一非常重要的考慮因素。通過我們的方法,進入壁壘從未如此之低(一個商人進行50筆交易)。
嚐試以下筆記本在Databricks加快您的數字銀行戰略今天和聯係我們了解關於我們如何幫助客戶使用類似用例的更多信息。beplay体育app下载地址