如果要人們評選當今最受關注話題的top10榜單,霧霾一定能夠入選。如今走在北京街頭,随處可見帶着厚厚口罩的人在埋頭前行,霧霾天氣不光影響了人們的出行和娛樂,對于人們的健康也有很大危害。本文通過爬取并分析北京一年來的真實天氣資料,挖掘出二氧化氮是跟霧霾天氣(這裡指的是PM2.5)相關性最強的污染物,進而為您揭秘形成霧霾的罪魁禍首。
這裡我們是用阿裡雲機器學習平台來完成實驗:
<a href="https://data.aliyun.com/product/learn?spm=a2c0j.7906235.header.11.I2EEKW">https://data.aliyun.com/product/learn</a>
登陸阿裡雲機器學習平台,即可在demo頁選擇實驗并且親手實作整個機器學習的預測分析,完全零門檻。
資料源:采集了2016全年的北京天氣名額。
采集的是從2016年1月1号以來每個小時的空氣名額,。具體字段如下表:
字段名
含義
類型
time
日期,精确到天
string
hour
表示的是時間,第幾小時的資料
pm2
pm2.5的名額
pm10
pm10的名額
so2
二氧化硫的名額
co
一氧化碳的名額
no2
二氧化氮的名額
阿裡雲機器學習平台采用拖拉算法元件拼接實驗的操作方式,先來看下整個實驗流程:
我們把整個實驗拆解成四個部分,分别是資料導入及預處理、統計分析、随機森林預測及分析、邏輯回歸預測及分析。下面我們分别介紹一下這四個子產品的邏輯。
(1)資料導入
在“資料源”中選擇“建立表”,可以把本地txt檔案上傳。
資料導入後檢視:
(2)資料預處理
通過類型轉換把string型的資料轉double。把pm2這一列作為目标列,數值超過200的情況作為重度霧霾天氣打标為1,低于200标為0,實作的SQL語句如下。
(3)歸一化
歸一化主要是去除量綱的作用,把不同名額的污染物機關統一。
我們在統計分析的子產品用了兩個元件:
(1)直方圖
通過直方圖可以可視化的檢視不同資料在不同區間下的分布。通過這組資料的可視化展現,我們可以了解到每一個字段資料的分布情況,以PM2.5為例,數值區間出現最多的是11.74~15.61,一共出現了430次。
(2)資料視圖
通過資料視圖可以檢視不同名額的不同區間對于結果的影響。
以no2為例,在112.33~113.9這個區間産生了7個目标列為0的目标,産生了9個目标列為1的目标。也就是說當no2為112.33~113.9區間的情況下,出現重度霧霾的天氣的機率是非常大的。熵和基尼系數是表示這個特征區間對于目标值的影響,數值越大影響越大,這個是從資訊量層面的影響。
本案其實是采用了兩種不同的算法對于結果進行預測,我們先來看看随機森林這一分支。我們通過将資料集拆分,百分之八十的資料訓練模型,百分之二十的資料預測。最終模型的呈現可以可視化的顯示出來,在左邊模型菜單下檢視,随機森林是樹狀模型。
通過這個模型預測結果的準确率:
我們看到AUC是0.99,也就是說如果我們有了本文用到的天氣名額資料,就可以預測天氣是否霧霾,而且準确率可以達到百分之九十以上。
再來看下邏輯回歸這一分支的預測模型,邏輯回歸是線性模型:
模型預測準确率:
邏輯回歸的AUC為0.98,比用随機森林計算得到的結果略低一點。如果排除調參對于結果的影響因素,可以說明針對這個資料集,随機森林的訓練效果會更好一點。
上面介紹了如何通過搭建實驗來搭建針對PM2.5的預測流程,準确率達到百分之九十以上。下面我們來分析一下哪種空氣名額對于PM2.5影響最大,首先來看下邏輯回歸的生成模型:
因為經過歸一化計算的邏輯回歸算法有這樣的特點,模型系數越大表示對于結果的影響越大,系數符号為正号表示正相關,負号表示負相關。我們看一下正号系數裡pm10和no2最大。pm10和pm2隻是顆粒尺寸大小不同,是一個包含關系,這裡不考慮。剩下的no2(二氧化氮)對于pm2.5的影響最大。我們隻要查閱一下相關文檔,了解下哪些因素會造成no2的大量排放即可找出影響pm2.5的主要因素。