天天看點

阿裡雲工程師用機器學習破解霧霾成因

日前,一位署名為“傲海”的阿裡雲工程師在雲栖社群釋出了一篇分析北京霧霾成因的文章。作者通過機器學習算法分析發現,北京重度霧霾天的出現同大氣中二氧化氮的含量存在強相關性。

人們很早就知道硫酸鹽是霧霾形成的重要原因。住宅及發電廠的燃煤釋放大量二氧化硫,随後轉化為硫酸顆粒造成污染。但困擾科學家的是,二氧化硫究竟是如何轉化成硫酸的?

阿裡雲工程師的發現回答了這個問題,同是也從另一個角度佐證了最近中德兩國研究人員一份研究成果:大氣細顆粒物吸附的水分中二氧化氮與二氧化硫的化學反應是目前霧霾中硫酸鹽的主要生成路徑。該成果通過分析清華大學樓頂氣溶膠成分得出。

文章中,工程師采集了公開的2016年全年北京天氣資料,包含天、小時、pm2.5、pm10、二氧化硫、一氧化碳、二氧化氮(no2)等數字。利用阿裡雲機器學習平台,通過随機森林、邏輯回歸等算法尋找霧霾同某一項名額的相關性。

傲海介紹,他本人就在北京工作,同樣深受霧霾困擾。因為自己是從事機器學習相關的工作,是以就想能否通過政府的公開資料做一些分析。“對抗霧霾,我們每個人都可以做出貢獻”。

據了解,二氧化氮主要來自發電廠及汽車尾氣。由此來看,限行政策将可緩解空氣霧霾。

附工程師分析全文:

本次實驗在阿裡雲機器學習平台上完成

底層計算引擎由阿裡雲數加maxcompute完成

資料源:采集了2016全年的北京天氣名額,采集的是從2016年1月1号以來每個小時的空氣名額。

具體字段如下表:

阿裡雲工程師用機器學習破解霧霾成因

資料探索流程

阿裡雲機器學習平台采用拖拉算法元件拼接實驗的操作方式,先來看下整個實驗流程:

阿裡雲工程師用機器學習破解霧霾成因

我們把整個實驗拆解成四個部分,分别是資料導入及預處理、統計分析、随機森林預測及分析、邏輯回歸預測及分析。下面我們分别介紹一下這四個子產品的邏輯。

1.資料導入及預處理

(1)資料導入:在“資料源”中選擇“建立表”,可以把本地txt檔案上傳。資料導入後檢視:

阿裡雲工程師用機器學習破解霧霾成因

(2)資料預處理:通過類型轉換把string型的資料轉double。把pm2這一列作為目标列,數值超過200的情況作為重度霧霾天氣打标為1,低于200标為0,實作的sql語句如下:

select time,hour,(case when pm2>200 then 1 else 0 end),pm10,so2,co,no2 from ${t1};

(3)歸一化

歸一化主要是去除量綱的作用,把不同名額的污染物機關統一。

阿裡雲工程師用機器學習破解霧霾成因

統計分析

我們在統計分析的子產品用了兩個元件:

(1)直方圖:通過直方圖可以可視化的檢視不同資料在不同區間下的分布。通過這組資料的可視化展現,我們可以了解到每一個字段資料的分布情況,以pm2.5為例,數值區間出現最多的是11.74~15.61,一共出現了430次。

阿裡雲工程師用機器學習破解霧霾成因

以二氧化氮為例,在112.33~113.9這個區間産生了7個目标列為0的目标,産生了9個目标列為1的目标。也就是說當二氧化氮為112.33~113.9區間的情況下,出現重度霧霾的天氣的機率是非常大的。熵和基尼系數是表示這個特征區間對于目标值的影響,數值越大影響越大,這個是從資訊量層面的影響。

阿裡雲工程師用機器學習破解霧霾成因

3.随機森林預測及分析

本案其實是采用了兩種不同的算法對于結果進行預測,我們先來看看随機森林這一分支。我們通過将資料集拆分,百分之八十的資料訓練模型,百分之二十的資料預測。最終模型的呈現可以可視化的顯示出來,在左邊模型菜單下檢視,随機森林是樹狀模型。

阿裡雲工程師用機器學習破解霧霾成因

通過這個模型預測結果的準确率:

阿裡雲工程師用機器學習破解霧霾成因

我們看到auc是0.99,也就是說如果我們有了本文用到的天氣名額資料,就可以預測天氣是否霧霾,而且準确率可以達到百分之九十以上。

4.邏輯回歸預測及分析

再來看下邏輯回歸這一分支的預測模型,邏輯回歸是線性模型:

阿裡雲工程師用機器學習破解霧霾成因

模型預測準确率:

阿裡雲工程師用機器學習破解霧霾成因

邏輯回歸的auc為0.98,比用随機森林計算得到的結果略低一點。如果排除調參對于結果的影響因素,可以說明針對這個資料集,随機森林的訓練效果會更好一點。

結果評估

上面介紹了如何通過搭建實驗來搭建針對pm2.5的預測流程,準确率達到百分之九十以上。下面我們來分析一下哪種空氣名額對于pm2.5影響最大,首先來看下邏輯回歸的生成模型:

阿裡雲工程師用機器學習破解霧霾成因

因為經過歸一化計算的邏輯回歸算法有這樣的特點,模型系數越大表示對于結果的影響越大,系數符号為正号表示正相關,負号表示負相關。我們看一下正号系數裡pm10和二氧化氮最大。pm10和pm2隻是顆粒尺寸大小不同,是一個包含關系,這裡不考慮。剩下的二氧化氮對于pm2.5的影響最大。我們隻要查閱一下相關文檔,了解下哪些因素會造成二氧化氮的大量排放即可找出影響pm2.5的主要因素。

以下是網上是找到的關于二氧化氮排放的論述,文中說明了二氧化氮主要來自電廠和汽車尾氣:《減少二氧化氮與氨或是抑制中國霧霾形成的關鍵》

繼續閱讀