【機器學習PAI實踐三】霧霾成因分析

李博Garvin發表於2017-04-05

一、背景

如果要人們評選當今最受關注話題的top10榜單,霧霾一定能夠入選。如今走在北京街頭,隨處可見帶著厚厚口罩的人在埋頭前行,霧霾天氣不光影響了人們的出行和娛樂,對於人們的健康也有很大危害。本文通過爬取並分析北京一年來的真實天氣資料,挖掘出二氧化氮是跟霧霾天氣(這裡指的是PM2.5)相關性最強的汙染物,從而為您揭祕形成霧霾的罪魁禍首。

這裡我們是用阿里雲機器學習平臺來完成實驗:
https://data.aliyun.com/product/learn

登陸阿里雲機器學習平臺,即可在demo頁選擇實驗並且親手實現整個機器學習的預測分析,完全零門檻。

二、資料集介紹

資料來源:採集了2016全年的北京天氣指標。

採集的是從2016年1月1號以來每個小時的空氣指標,。具體欄位如下表:

欄位名 含義 型別
time 日期,精確到天 string
hour 表示的是時間,第幾小時的資料 string
pm2 pm2.5的指標 string
pm10 pm10的指標 string
so2 二氧化硫的指標 string
co 一氧化碳的指標 string
no2 二氧化氮的指標 string

三、資料探索流程

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

我們把整個實驗拆解成四個部分,分別是資料匯入及預處理、統計分析、隨機森林預測及分析、邏輯迴歸預測及分析。下面我們分別介紹一下這四個模組的邏輯。

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)歸一化
歸一化主要是去除量綱的作用,把不同指標的汙染物單位統一。

2.統計分析

我們在統計分析的模組用了兩個元件:
(1)直方圖
通過直方圖可以視覺化的檢視不同資料在不同區間下的分佈。通過這組資料的視覺化展現,我們可以瞭解到每一個欄位資料的分佈情況,以PM2.5為例,數值區間出現最多的是11.74~15.61,一共出現了430次。

(2)資料檢視
通過資料檢視可以檢視不同指標的不同區間對於結果的影響。

以no2為例,在112.33~113.9這個區間產生了7個目標列為0的目標,產生了9個目標列為1的目標。也就是說當no2為112.33~113.9區間的情況下,出現重度霧霾的天氣的概率是非常大的。熵和基尼係數是表示這個特徵區間對於目標值的影響,數值越大影響越大,這個是從資訊量層面的影響。

3.隨機森林預測及分析

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

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

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

4.邏輯迴歸預測及分析

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

模型預測準確率:

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

四、結果評估

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

因為經過歸一化計算的邏輯迴歸演算法有這樣的特點,模型係數越大表示對於結果的影響越大,係數符號為正號表示正相關,負號表示負相關。我們看一下正號係數裡pm10和no2最大。pm10和pm2只是顆粒尺寸大小不同,是一個包含關係,這裡不考慮。剩下的no2(二氧化氮)對於pm2.5的影響最大。我們只要查閱一下相關文件,瞭解下哪些因素會造成no2的大量排放即可找出影響pm2.5的主要因素。
下面網上是找到的關於no2排放的論述,文中說明了no2主要來自汽車尾氣。no2來源文章

五、其它

參與討論:雲棲社群公眾號

免費體驗:阿里雲數加機器學習平臺

相關文章