機器學習在高德用戶反饋信息處理中的實踐

1.背景
做爲國內領先的出行大數據公司,高德地圖擁有衆多的用戶和合做廠商,這爲高德帶來了海量的出行數據,同時經過各個渠道,這些用戶也在主動地爲咱們提供大量的反饋信息,這些信息是須要咱們深刻挖掘並做用於產品的,是高德地圖不斷進步和持續提高服務質量的重要手段。算法

本文將主要介紹針對用戶反饋的文本情報,如何利用機器學習的方法來提升大量用戶數據的處理效率、儘量實現自動化的解題思路。後端

先來解釋一下重點名詞。網絡

情報:是一種文本、圖片或視頻等信息,用來解決高德地圖生產或者導航中的具體問題,本質上是指與道路或交通相關的知識或事實,經過必定空間和時間通知給特定用戶。架構

用戶反饋:是指用戶藉助必定的媒介,對所使用的軟件等提供一些反饋信息,包括情報、建議和投訴等。機器學習

典型的用戶反饋類型和選項以下圖所示:學習

2.問題及解法大數據

用戶反饋的方式能夠經過手機的Amap端、PC端等進行上報,上報時選擇一些選擇項以及文本描述來報告問題,如下是一個用戶反饋的示例,其中問題來源、大類型、子類型和道路名稱是選擇項,用戶描述是填寫項,通常爲比較短的文本。這些也是咱們可使用的主要特徵。優化

每一個用戶在上報了問題以後,均但願在第一時間內問題可以獲得解決並及時收到反饋。可是高德天天的用戶反饋量級在幾十萬,要想達到及時反饋這個目標很是的不容易。3d

針對這些用戶反饋信息,當前的總體流程是先採用規則進行分類,其中與道路相關的每條反饋都要通過人工覈實,找到用戶上報的問題類型和問題發生的地點,及時更新道路數據,做用於導航。日誌

針對一條反饋的操做須要通過情報識別、情報定位、情報驗證等環節:

1) 情報識別主要是判斷問題類型即給情報打標籤:①分析用戶上報的信息包括問題來源、大類型、子類型和用戶描述等,②查看上傳的圖片資料,包括手機自動截圖和用戶拍照;

2) 情報定位主要是找到問題發生的位置信息即定位座標:①分析用戶反饋問題時戳的位置點即戳點的有效性,②查看用戶上報問題時車輛行駛的位置即自車位置,③分析用戶使用高德軟件過程當中的規劃和實走軌跡等日誌信息;

3) 情報驗證:經過以上兩步肯定了情報標籤和位置座標,此環節須要驗證情報標籤(含道路名稱):①分析影像和大數據熱力圖或路網基礎數據,②查看用戶上傳的資料和採集的多媒體圖片資料。

整個業務處理流程以下圖所示:

在處理用戶反饋問題整個過程秉持的原則是徹底相信用戶的問題存在。若用戶上報的信息不足以判斷問題類型和問題發生地點,則會盡可能經過用戶規劃和實走軌跡等日誌信息進行推理得出偏向用戶的結論。

目前整個用戶反饋問題處理流程存在的主要問題有:規則分發準確率低,人工覈實流程複雜、技能要求高且效率低,去無效誤殺嚴重等。

爲了解決以上問題,咱們但願引入機器學習的方法,以數據驅動的方式提升做業能力。在進行機器學習化的探索過程當中,咱們首先對業務進行了拆解及層級化分類,其次使用算法來替代規則進行情報分類,再次工程化拆解人工覈實做業流程爲情報識別、情報定位和情報驗證等步驟,實現單人單技能快速做業,最後將工程化拆解後的情報識別步驟使用算法實現其自動化。

3.機器學習解題

3.1 業務梳理與流程層級化拆解

原始的用戶反饋問題經由規則分類後,再進行人工情報識別、定位和驗證,最終確認問題及其所在是屬於近百種小分類項中的哪個,進而肯定上一級分類以及整個層級的對應關係。

由此能夠看出,整個問題處理流程只有一個步驟,處理過程至關複雜,對人工的技能要求很高,且效率低下。並且一千我的眼中就有一千個哈姆雷特,我的的主觀性也會影響對問題的判斷。

針對這種狀況,咱們對原有業務流程進行梳理和拆解,但願可以利用機器學習和流程自動化等方式解決其中某些環節,提高總體問題處理的效率。

首先進行有效情報和無效情報的分類即去無效,接着將整個流程拆解爲六個層級,包括業務一級、業務二級、業務三級、情報識別、情報定位和情報驗證。

如上圖所示,拆解後的前三個級別爲情報分類環節,只有後三個級別須要部分人工干預,其餘級別均直接自動化處理。這樣經過層級化、自動化和專人專職等方法極大地簡化了問題同時提升了效率。

3.2 業務與模型適配

咱們能夠看到用戶反饋中既有選擇項又有輸入項,其中選擇項如問題來源等都是有默認值的,須要點擊後選擇相應細分項,用戶不必定有耐心仔細選擇,有耐心的用戶可能會因爲不知道具體分類標準而沒法選擇正確的分類。而用戶描述,是須要用戶手動輸入的內容,是用戶表達真實意圖的主要途徑,是一條用戶反饋當中最有價值的內容。

用戶描述通常分爲三種狀況:無描述、有描述但無心義的、有描述且有意義的。前兩種稱之爲無效描述,後一種稱之爲有效描述。

根據業務拆解結果,業務流程第一步即爲去無效,在這以後,咱們將有效、無效描述的用戶反饋進行區分,分別創建相應的流程進行處理。

1) 有效描述的用戶反饋,逐級分類,第一級分爲數據、產品、轉發三類,其中產品和轉發兩類直接進行自動化處理,數據類別會在第二級中分爲道路和專題,專題是指非道路類的限行、步導、騎行等。

2) 無效描述的用戶反饋,進行一樣的分類,並走同樣的流程,可是樣本集和模型是不一樣的,而且最後沒有算法處理的步驟,直接走人工或者規則處理。

3) 最終根據實際業務須要進行層層拆解後造成了下圖所示的業務與模型適配的結構。

由以上分析可見,情報分類和情報識別均爲多分類的文本分類問題,咱們針對各自不一樣的數據特色,進行相應的操做:

情報分類,每一級類別雖不一樣,可是模型架構倒是能夠複用的,只須要有針對性的作微小改動便可。且有之前人工覈實過(包含情報識別、情報定位、情報驗證等過程)具備最終結果做爲分類標籤的歷史數據集做爲真值,樣本集得到相對容易。

情報識別,其分類標籤是在情報驗證以前的中間結果,只能進行人工標註,而且須要在保證線上正常生產的前提下,儘可能分配人力進行標註,資源很是有限。因此咱們先在情報分類數據集上作Finetuning來訓練模型。而後等人工標註樣本量積累到必定量級後再進行情報識別上的應用。

3.3 模型選擇

首先,將非結構化的文本用戶描述表示成向量形式即向量空間模型,傳統的作法是直接使用離散特徵one-hot表示,即用tf-idf值表示詞,維度爲詞典大小。可是這種表示方式當統計樣本數量比較大時就會出現數據稀疏和維度爆炸的問題。

爲了不相似問題,以及更好的體現詞語之間的關係如語義相近、語序相鄰等,咱們使用word embedding的方式表示,即Mikolov提出的word2vec模型,此模型能夠經過詞的上下文結構信息,將詞的語義映射到一個固定的向量空間中,其在向量空間上的類似度能夠表示出文本語義上的類似度,本質上能夠看做是語境特徵的一種抽象表示。

其次,也是最重要的就是模型選擇,相對於傳統的統計學習方法複雜的特徵工程步驟,深度學習方法更受青睞,NLP中最經常使用的是循環神經網絡RNN,RNN將狀態在自身網絡中循環傳遞,相對於前饋神經網絡能夠接受更普遍的時間序列結構輸入,更好的表達上下文信息,可是其在訓練過程當中會出現梯度消失或梯度爆炸等問題,而長短時記憶網絡LSTM能夠很好的解決這個問題。

3.4 模型架構

將每一個用戶反饋情報的詞向量結果做爲LSTM的輸入,接着將LSTM的最後一個單元的結果做爲文本特徵,與其餘用戶選擇項問題一塊兒merge後做爲模型輸入,而後通過全鏈接層後使用softmax做爲輸出層進行分類,獲得的0~1之間的實數即爲分類的依據。多分類的網絡架構以下圖所示:

4.實戰經驗總結
理清業務邏輯、肯定解題步驟、確認樣本標註排期並跑通了第一版的模型後,咱們以爲終於能夠鬆一口氣,問題應該已經解決過半了,剩下的就是作作模型調參和優化、坐等樣本積累,訓練完模型就能夠輕鬆上線了。

但實際狀況倒是面臨着比預想更多的問題和困難,訓練數據量不夠、單個模型效果很差、超參設置不理想等問題接踵而至,漫長而艱難的優化和迭代過程纔剛剛開始。

4.1 Fine-tuning

選定了模型以後,情報識別首先面臨的問題是樣本量嚴重不足,咱們採用Fine-tuning的辦法將網絡上已經訓練過的模型略加修改後再進行訓練,用以提高模型的效果,隨着人工標註樣本逐漸增長,在不一樣大小的數據集上均可以取得大約3個百分點的提高。

4.2 調參
模型的調參是個修煉內功煉製金丹的過程,實際上取得的效果卻不必定好。咱們一共進行了近30組的調參實驗,得出瞭如下飽含血淚的寶貴經驗:

1)初始化,必定要作的,咱們選擇 SVD初始化。

2) dropout也是必定要用的,有效防止過擬合,還有Ensemble的做用。 對於LSTM,dropout的位置要放到LSTM以前,尤爲是bidirectional LSTM是必定要這麼作的,不然直接過擬合。

3) 關於優化算法的選擇,咱們嘗試了Adam、RMSprop、SGD、AdaDelta等,實際上RMSprop和Adam效果相差很少,但基於Adam能夠認爲是RMSprop 和 Momentum 的結合,最終選擇了Adam。

4) batch size通常從128左右開始調整,但並非越大越好。對於不一樣的數據集必定也要試試batch size爲64的狀況,沒準兒會有驚喜。

5) 最後一條,必定要記住的一條,儘可能對數據作shuffle。

4.3 Ensemble
針對單個模型精度不夠的問題,咱們採用Ensemble方式解決,進行了多組試驗後,最終選定了不一樣參數設定時訓練獲得的最好模型中的5個經過投票的方式作Ensemble,總體準確率比單個最優模型提升1.5個百分點。

另外爲了優化模型效果,後續還嘗試了模型方面的調整好比雙向LSTM和不一樣的Padding方式,通過對比發如今情報識別中差別不大,經分析是每一個用戶描述問題的方式不一樣且分佈差別不明顯所致。

4.4 置信度區分
當情報識別多分類模型自己的結構優化和調參都達到必定瓶頸後,發現模型最終的效果離自動化有必定的差距,緣由是特徵不全且某些特徵工程化提取的準確率有限、類別不均衡、單個類別的樣本數量很少等。

爲了更好的實現算法落地,咱們嘗試進行類別內的置信度區分,主要使用了置信度模型和按類別設定閾值兩種辦法,最終選擇了簡單高效的按類別設定閾值的方法。

置信度模型是利用分類模型的標籤輸出結果做爲輸入,每一個標籤的樣本集從新分爲訓練集和驗證集作二分類,訓練後獲得置信度模型,應用高置信的結果。

在置信度模型實驗中,嘗試了Binary和Weighted Crossentropy、Ensemble的方式進行置信度模型實驗,Weighted Crossentropy的公式爲:

爲了不溢出,將公式改成:

其中,表示:

實驗的結果是Binary方式沒有明顯效果提高,Ensemble在95%置信度上取得了較高的召回率,可是沒有達到98%置信度的模型。

借鑑了情報分類算法模型落地時按照各個類別設定不一樣softmax閾值的方式作高置信判斷即按類別設定閾值的方式,在情報識別中也使用相似的方法,取得的效果超過了以前作的高置信模型效果,因此最終選擇了此種方式,這部分能夠很大地提升做業員的做業效率。同時爲了減小做業員的操做複雜性,咱們還提供了低置信部分的top N推薦,最大程度節省做業時間。

5.算法效果及應用成果

5.1 情報分類

算法效果:根據實際的應用需求,情報分類算法的最終效果產品類準確率96%以上、數據類召回率可達99%。

應用成果:與其餘策略共同做用,總體自動化率大幅提高。在經過規則優化後實際應用中取得的效果,做業人員大幅度減小,單位做業成本下降4/5,解決了用戶反饋後端處理的瓶頸。

5.2 情報識別

算法效果:根據使用時高置信部分走自動化,低置信走人工進行標註的策略,情報識別算法的最終效果是有效描述準確率96%以上。

應用成果:完成情報標籤分類模型接入平臺後經過對高低置信標籤的不一樣處理,最終提高做業人員效率30%以上。

6.總結與展望
經過此項目咱們造成了一套有效解決複雜業務問題的方法論,同時積累了關於NLP算法與業務緊密結合解題的實戰經驗。目前這些方法與經驗已在其餘項目中很好的付諸實施,而且在持續的積累和完善中。在不斷提高用戶滿意度的前提下儘量的高效自動化的處理問題,是咱們堅持不懈的願景和目標。

相關文章
相關標籤/搜索