摘要:由於信息來源不同、處理方式差異等原因,來自不同氣象臺的天氣預報信息經常會出現不一致的情況,這會給需要知道準確未來天氣的人產生困擾。本文旨在通過機器學習和信息檢索的方法,搜集來自不同氣象臺的天氣信息,然後使用隱馬爾科夫模型、眾包模型、自回歸模型等方法,對不一致的天氣預報進行整合。通過提出統一的MO-HMM模型給出一個更加精確、可信度更高的天氣預報。根據本文所提出的算法,我們搭建了一個眾包深度整合天氣預報系統,這一系統也提供了通過前三天天氣預測未來更多天天氣預報的方法,而且在本文實現的系統中,也提供了歷史天氣查詢等豐富的功能。
1、研究背景
在生活中,天氣是我們安排行程活動所不得不考慮的一個因素,而看天氣預報則是很多人所堅持的生活習慣。如果天氣預報第二天有雨,則需要提前準備好雨傘,而如果第二天大降溫,則出門前要穿好厚衣服。如果提前知道接下來的幾天都適合晴空萬裡,我們則可以安排一趟愉快的戶外旅程。在這些場景中,對未來天氣相對精確地把握可以說是至關重要的。
目前隨著網絡和智慧型手機的普及,人們獲取天氣預報的途徑得到了很大的擴展,不同的網站,不同的信息渠道都能為我們提供豐富的天氣信息,包括天氣狀況,最低氣溫,最高氣溫,風速,風力等等,很多網站還提供了包括PM2.5,生活指數等等豐富的信息。可以說在一定程度上滿足了我們的需求,然而在信息的精確程度上,有的信息來源卻無法保證,比如下圖中出現的這種情況。同樣是預測第二天的天氣,第一家氣象來源預報第二天為晴轉多雲,而第二家氣象來源則預測為雷陣雨,另外包括最低氣溫,最高氣溫等信息也有明顯的不一致。在這種情況下,必然有一家氣象來源提供的信息不夠準確,亦或者兩家提供的信息都有錯誤。
觀察到這一現象之後,我們做了一些先期的調研工作,通過查詢一些天的天氣信息,我們發現不同來源提供的天氣信息不一致現象十分普遍,即對於同一地區,同一天的天氣預報,他們往往會給出不一致的值,有時甚至是匯報完全相反的結果,這樣導致的後果則是想要知道未來準確天氣的我們無所適從,不知道從哪裡獲取信息。
這種在天氣預報中出現的不一致現象實際上在很多領域都有出現,而在眾包領域則對這一問題有著比較深入的研究。隨著時代進步,網際網路開始逐漸的影響到人類社會的方方面面,人們日常生活中的購物、就醫、教育等大多數場景都在計算機技術和網際網路的影響下得到了大幅度優化和改善。與此同時,網際網路的便捷也使得數據的製造者從專家變為了普通網民。以新聞等網站為例,傳統的網際網路網站大都由專業的編輯採寫新聞,然後通過審核後整版發出,網民能做的僅僅是通過網際網路獲取數據信息,直到BBS等信息發布類網站產生後,網民才有了在網上發表信息的機會,近年來,隨著社交媒體的快速發展,網際網路上由普通網民生成的數據量已經有了超越專業數據的趨勢。網際網路的發展為普通網民提供了方便快捷發表自己觀點的機會,在任何時間、任何地點都可以通過電腦、手機等網際網路終端獲取和發布信息,這種人人都可參與的形式也使得通過網際網路集合眾人智慧解決複雜問題變得可能。「眾包」(Crowdsourcing)正是在這一條件下產生的一種新型商業模式。
傳統情況下當大型公司或個人面臨複雜問題需要解決時,通常需要聘請相關領域的專家來處理,這種情況下往往需要花費大量的資金,同時解決問題的時間周期也比較長。然而現在通過「眾包」網站,可以把問題發布到網際網路上,供來自世界各地各個領域的人進行研究解決 [1],儘管大多數人並不具備相關領域的專業知識,然而當我們把他們給出的結果通過某種方式進行整合後,時常能夠綜合給出較好的結果,並且只需要付出相對較少的資金投入和較短的任務完成周期。「眾包」這一概念最早由Howe和Mark Robinson [2] 於2006年在美國《連線》發表的文章中提出,它描述的正是這樣一種基於網絡的商業模式:公司或組織公開地把自己遇到的問題發布到一個分布式公共網絡中,使得來自網絡的各個個體可以協作的解決問題。這一方式在網際網路逐步普及的今天相對於傳統解決方式有很大的優勢。目前,Amazon Mechanical Turk等「眾包」網站已經得到了廣泛的應用,而在國內,統稱為威客的與「眾包」類型相似的網站也在不斷發展,有很大影響力。
針對我們就在天氣預報中遇到的情況,我們希望能夠通過整合眾包數據的思想,通過一個比較規整的模型以及大量天氣預報數據的支持,來整合來自不同數據來源的天氣預報,最終給出一個比較合理的預測結果。
2、氣象整合問題分析
為了很好的解決天氣信息整合的問題,我們首先需要分析產生預報差異的原因。天氣預報源自各種天氣觀測數據,這些數據來自於分布全世界的氣象觀測站、衛星、雷達圖像。所有的數據,使用天氣數學模型又計算機來進行預報。由於地球自然條件複雜,對於大氣的數據採集並不完整,自然天氣預報的算法和模型也不會完美。而不同國家的氣象局,使用不一致的預報算法,因此預報結果自然也會有差異。天氣預報的結果,表現為大氣壓、溫度、降水量在一定地區地圖上的分布。性能更強勁的超級計算機,可以產生高解析度的「預報」地圖,針對某一個城市的預報結果可能更準確。氣象臺也從全球氣象觀測站網絡和專用的計算機信息系統獲取數據,根據他們的氣象模型和數據,得出自己的預報。
另外天氣預報結果,和預報員的經驗以及他們如何解釋氣象模式也有關係。比如一些模型特別適合解釋某種氣象類型(比如颶風、暴雪),一些模型主要面向中長期預報,還有一些模型的精確度較差。氣象預報員的職責之一,就是了解各種天氣預報模型在行業內所共知的優劣,對預報結果進行調整。
總的來說我們認為天氣預報信息有所差異的主要原因有以下幾點:
1.不同氣象站使用不同的天氣預測模型,他們可能適合不同的情形。
2.不同氣象站預測天氣時在時間和空間上的粒度不同,因此在天氣變化比較迅速的情況下很容易產生差異。
3.氣象預報員自身有一定的出錯概率,例如把特定天氣預測錯誤。
因此當我們希望用一個統一的模型來整合這些天氣來源時,需要考慮以上這些出錯原因。這一模型借鑑了我們在處理眾包標註整合問題中用到的思想,因此下文中將首先對眾包標註整合問題進行介紹。
3、眾包標註整合問題
當我們希望通過「眾包」的方式處理問題時,往往需要面對許多與傳統處理模式不同的困難。在傳統模式下,我們聘請相關領域專家來處理問題,他們所給出的結果往往是很值得信賴的,換句話說,當專家給出確定的結果後,我們無需要再對這一結果進行質疑與修正,只需要在此基礎上做進一步分析即可。如果一位專家無法給出肯定的答案,也可以通過多名專家商討後給出一個最終的答案,然而在「眾包」的模式下這一前提不再成立。
當通過開放、分布式的方式從大量人群中獲取結果時,我們無法對這些參與者做精細的篩選,更無法判斷他們是否具有解決問題的背景知識,而且由於問題的正確答案正是想要獲知的,我們甚至無法對特定參與者給出的結果進行評價,更無法獲知其正確與否。為了克服這種不確定性的影響,通過「眾包」處理問題時一般情況下都會選擇多個不同的人為同一問題給出答案,這種情況下多個不同人給出的結果一般會顯示出某種一致的傾向,通過進一步分析就有可能得到一個較好的估計結果 [1]。
作為一個特例,我們把關注範圍限定在機器學習領域使用「眾包」對大型數據集做標註這一特定問題上。一般數據集由N條數據記錄(或稱作樣例、項目)組成,每一條語音、文字或是圖片,都可以使用一個數據向量xi來表示,我們的最終目標就是對每一條數據記錄xi給出其真實標註yi,對於一幅圖,其標註可能是圖片中鳥類的真實類屬,對於語音記錄,標註可能是其所對應的文本信息,也可能是文章中中含有多少個表示喜悅的詞語等等。為了通過「眾包」的方式獲得數據的真實標註,對每一條數據,我們都需要通過多個不同的標註者獲取它的標註,這樣對於每條數據記錄xi,假設有Ti位標註者對它進行了標註,我們就會有wi1,wi2,wi3,一直到wiTi條對同一數據的標註,這些標註可能相同也可能不同,因此接下來要做的就是對所有這些數據通過特定方法進行整合,最終給出一個對真實內容的較好估計。這一問題嚴格的定義如下:
Dawid和Skene在1979年提出了一個多值混淆矩陣估計模型 [5],他們假定每一個標註者出現特定種類錯誤的概率是確定的,這樣就可以用一個統一的混淆矩陣來描述所有情況出現的概率,最終通過最大似然估計就可以得到所有參數值,包括每張圖片的真實標註。
在多值情形下,假設我們可以用一個定值來表示第n位標註者把本屬於第d類別的圖片標註為第l類別的概率,我們把所有{}稱之為第n位標註者的個人錯誤率,也就是他的混淆矩陣,對於一個二分類問題,一個標註者的混淆矩陣可能具有如下表1中的形式。
在真實情形中因為每一類別的圖像都有著其公共特徵,並且與其他類別之間都有著確定的相似程度,因此以上假定一般情況下都可以認為近似符合。比如對於一般人而言,在鳥類標註問題中把鴨類錯分為鵝的概率一定比錯分為大雁的概率要大。這種類別之間的概率差異對於兩個類別的個體而言也會在很大程度得到體現。基於這一假設,如果已知每一項目的真實標註,對的估值可以通過一個簡單的式子得到:
公式(1)表示等於所有被第n位標註者標過,且屬於第d類的項目中,被標註為l的項目所佔的比例。由於假設我們可知,所有標註者在標註過程中的表現相互獨立,並且同一標註者在不同的標註任務中的表現也相互獨立,這樣我們就可以通過以上公式給出這一假定下參數取值的似然概率如下:
上式中表示第d個標註出現的先驗概率。在整個推算過程中,Dawid和Skene採用的是期望最大化算法,即EM算法。這一算法主要分為計算期望和最大化兩部分。對應於在本算法中的應用,計算期望的(E)步驟對應的是通過一個給定的當前最優預測值來估計其它兩個參數,即q以及p的表達式,而最大化(M)步驟則是再使用計算得到的q以及p的當前值,來估計最有可能的取值。
期望最大化算法適用於在參數較多的情況下,求所給概率表達式最大值的一類問題,分別控制隱含值和其它參數求解極值點,經過多次迭代最終獲得全局最優點,這一算法可以通過理論嚴格證明其收斂性,每經過一輪迭代,其給出的值都更加接近最優解,選擇合適的截止條件就可以高效的求得每張圖片的估計標註以及每個標註者的混淆矩陣。
這一算法相對於多數投票模型增加了許多細節,它對標註者出錯的來源有了一個初步的假設,並且通過概率的方法給出了一個較為嚴謹的問題表述,最終還提出了通過期望最大化算法求解問題的方法,總的來說是一套比較完整的思路,經過試驗驗證,其效果在大多數情況下都穩定的優於多數投票模型,特別當標註者偏差較大時,多數投票模型的效果迅速下降,而基於混淆矩陣的模型仍然有著相對較好的表現。下面我們介紹如何將這一算法應用於天氣整合問題之中。
4、天氣整合MO-HMM算法
為了更加準確的預測天氣預報以及未來天氣,我們採用了一個類似多觀測值的隱馬爾科夫模型(MO-HMM)來整合我們所獲得的天氣信息。隱馬爾科夫鏈是描述離散空間時序信息的合適模型,在天氣預報的場景裡,不同的天氣正好對應不同的隱狀態,而觀測值則對應氣象臺的預報信息。
在應用這一模型時,主要分為兩部分,第一是基於眾包的天氣信息整合,第二部分是基於馬爾可夫鏈的未來天氣預測,下面將從這兩部分來分別展開。
4.1眾包思想的天氣預報整合
眾包是應用眾人智慧來解決問題的一種思想,而在天氣預報的應用中,則是通過多家氣象臺的信息來獲取真是天氣信息。在這一模型中,假定每一個氣象臺出現特定種類錯誤的概率是確定的,這樣就可以用一個統一的混淆矩陣來描述所有情況出現的概率,最終通過最大似然估計就可以得到所有參數值,包括每張圖片的真實標註。
假設我們可以用一個定值來表示第個氣象臺把天氣類別預測為天氣類別的概率,因為每一天氣類別都有著特定的屬性,並且與其他類別之間都有著確定的相似程度,因此以上假定一般情況下都可以認為近似符合。比如對於氣象站而言,把晴天錯分為陰天的概率一定比錯分為大雪的概率要大。這種類別之間的概率差異對於兩個類別的個體而言也會在很大程度得到體現。基於這一假設,對的估值可以通過一個簡單的式子得到:
式中表示所有取值中滿足條件的值的個數。式(2-3)表示等於所有被第個氣象臺標為天氣的天數中,屬於天氣類別的所佔的比例。因此對於第個氣象臺,他給出特定預測,的概率可以用來表示,具體公式如下:
由於假設我們可知,所有氣象臺在預測過程中的表現相互獨立,這樣我們就可以通過以上公式給出這一假定下參數取值的似然概率如下:
上式中表示氣象臺可能給出的天氣總數。在推斷的步驟中我們把每天的真實天氣提了出來單獨處理,這樣實際上是把每天的真實天氣各個值出現的概率在估計過程中當作了已知量,當其它通過最大似然的方法求得以後,也可以通過它們來表示,具體表達式如下:
求得的以及的表達式後,使以上似然概率函數取得最大值,即調整的取值,使得概率到達極值點,我們最終可以得到每天真實天氣的預測值。
4.2馬爾可夫鏈預測未來天氣
在得到每天天氣的預測值之後,我們可以使用馬爾可夫鏈來預測未來天氣。對於天氣這種時序變化信息,在得到了前兩天的天氣之後,後一天天氣情況可以通過一個概率分布來表示,具體表示如下圖示意:
因此在預測過程中,我們可以發現,下一天的天氣可以用以下式來表示:
後面所示的P矩陣為轉移概率矩陣,他的值可以直接通過統計所有轉移情況,計算相應比例即可得到。
4.3.自回歸模型預測未來氣溫
在預測未來以及整合天氣時,上述方法已經提出了一個很好地解決方案。然而天氣預報中,氣溫、氣壓、溼度等信息都是連續變量,因此無法直接通過前述離散變量的做法來解決,因此我們在這裡使用了自回歸模型來預測未來的氣溫信息,即認為後一天的氣溫為前幾天氣溫的線性組合,一般情況下,這一假設在氣溫預報情形下一致收斂,因此可以得到應用。
5. 系統功能描述
我們製作的天氣預報信息深度整合系統中,主要實現了三大塊內容:
1.搜集——多來源天氣信息匯集,甚至整合歷史天氣預報。即把來自幾個不同天氣信息來源的天氣預報統一格式,並列顯示,以觀察它們之間的差異,來讓用戶自己選擇出更加可信的信息來源。歷史天氣部分是為了滿足一些特殊的需求,通過制定城市和特定的歷史信息,我們都可以給出當天的天氣情況。
2.整合——天氣信息深度整合,當不同天氣來源匯報天氣不同時,給出整合結果。通過我們的眾包算法,對不同來源的天氣信息按照出錯概率來進行整合,最終給出一個算法預測的結果。
3.預測——預測未來天氣情況,給出更多天的天氣預報信息。在預測天氣方面,使用馬爾可夫鏈來表達天氣的序列變化規律,從而預測未來的天氣,在氣溫等連續性屬性的變化上,我們使用了自回歸模型來描述其內在規律。
下面在表2中我描述了後臺實現的主要功能。
5.1.整體框架
為了使系統開發過程中,前端後端可以並行開發,另外也為了系統更具擴展性,應用後臺開發過程中主要基於Web Service的思想。即前端和後端相對隔離,後端提供Web API,前端通過特定格式的Get請求來獲得信息,然後再在頁面上進行展示。
後臺開發時使用了Python語言,這主要是因為Python的Web編程十分方便。為了實現網絡功能,我們使用了Django平臺進行後臺與外界交互的相關操作。
整個後臺API的編寫符合WSGI API的規範,因此可以被更廣泛的調用,也可以再後續的更複雜應用中發揮作用,返回給前臺的信息採用JSON格式傳輸,易於解析。
5.2.後臺接口
後臺提供給前臺的接口結構十分簡單,主要由三部分構成。
其中第一部分areaname為需要查詢的城市名稱,按照中文格式輸入即可。Date則是需要查詢的天氣日期,需要精確到分鐘,這是因為在查詢當前天氣時,有的氣象站可以按分鐘來匯報天氣。
Type則是請求的類型。當類型為forecast3d時,將返回幾家氣象站對於未來3天的天氣預報,這裡主要採用了百度天氣和open weather兩家信息來源,以及天氣網提供的歷史天氣信息。而類型為cforecast3d時,將提供未來三天天氣預報的整合輸出。而hmmforecast5d返回的結果則是通過查詢到的信息和隱馬爾科夫模型預測的第四和第五天天氣預報。
這裡提供一個樣例的查詢地址來做參考:
這個地址請求的是西安在2015年9月15日的天氣預報。返回的結果是通過機器學習模型整合得到的天氣信息。
5.3.輸出格式
對於不同的請求,返回值都將通過JSON的格式提供,由於返回內容較多,這裡在表3中只以請求未來3天天氣的返回值進行詳細解釋。
通過此表可以看出,我們的返回結果十分豐富,包括了風力,風速,溫度,溼度,氣壓等等,但是由於前端展示空間的限制,很多信息並沒有展示。
6. 效果評價
總的來說,經過我們的測試,天氣預報整合系統基本達到了我們製作的初衷。實現了我們包括信息集成展示、信息深度整合、未來天氣預測等三大塊內容,並且後臺的機器學習算法也得到了完整的實現,給出了相對符合預期的結果。
我們將系統的相關服務都部署在Sina App Engine上,這一服務目前在線,可以通過地址http://tianweather.sinaapp.com/static/iisstart.htm訪問來查看效果。經過對過去一個月的天氣進行回測,我們可以評價天氣預報算法的準確程度。然而由於天氣比較存在內在的困難性,我們無法通過數值的方法算出我們的算法在準確率上的領先程度。為解決這一困難,我們只統計我們的眾包整合算法優於其他天氣預報的天數,經過人工驗證,我們的算法在過去30天中,至少20天可以比Open Weather 和百度天氣提供更準確的天氣預報。這一結果驗證了我們算法的有效性。
參考文獻
[1] A. P. Dawid and A. M. Skene. Maximum likelihood estimation of observer error-rates using the em algorithm. J. Roy. Statistical Society, Series C, 28(1):20–28, 1979. 1, 2, 5, 6
[2] D.M. Green and J.M. Swets. Signal detection theory and psychophysics. John Wiley and Sons Inc, New York, 1966. 5
[3] V.C. Raykar, S. Yu, L.H. Zhao, A. Jerebko, C. Florin, G.H. Valadez, L. Bogoni, and L. Moy. Supervised Learning from Multiple Experts: Whom to trust when everyone lies a bit. In ICML,2009. 1, 2
[4] V.S. Sheng, F. Provost, and P.G. Ipeirotis. Get another label? improving data quality and data mining using multiple, noisy labelers. In KDD, 2008. 1, 2
[5] P. Smyth, U. Fayyad, M. Burl, P. Perona, and P. Baldi. Inferring ground truth from subjective labelling of Venus images. NIPS, 1995. 1, 2
[6] M. Spain and P. Perona. Some objects are more equal than others: measuring and predicting importance. In ECCV, 2008. 1, 2
[7] L. von Ahn, B. Maurer, C. McMillen, D. Abraham, and M. Blum. reCAPTCHA: Human-based character recognition via web security measures. Science, 321(5895):1465–1468, 2008. 2
[8] PeterWelinder and Pietro Perona. Online crowdsourcing: rating annotators and obtaining costeffective labels. In IEEE Conference on Computer Vision and Pattern Recognition Workshops (ACVHL), 2010. 1, 2, 3
[9] T. D. Wickens. Elementary signal detection theory. Oxford University Press, United States,2002. 5
[10] Neal, Radford M. "Markov Chain Sampling Methods for Dirichlet Process Mixture Models." Journal of Computational & Graphical Statistics9.2(2012):249-265.
[11] Zhou, Dengyong, et al. "Aggregating Ordinal Labels from Crowds by Minimax Conditional Entropy." Proceedings of International Conference on Machine Learning (2014).
[12] Zhou, Dengyong, John Platt, Sumit Basu, and Yi Mao. "Learning from the wisdom of crowds by minimax entropy." In Advances in Neural Information Processing Systems 25, pp. 2204-2212. 2012.
(責編:王妍(實習)、燕帥)