分類
所有筆記 精選筆記

什麼是【資料採礦(Data Mining)】?

在於將資料【處理成應用上想看到的正確】

從交易資料中……
找到「有買筆電」的人:簡單
找到「沒買防窺片」的人:簡單
但找「買完筆電後一週內沒買防窺片」的人呢?
這就有點難度囉……

舉例來說,圖片是會員交易資料,裡面包括:交易日期、客戶名稱、商品名稱、商品金額等等相關資訊。

現在需要如下資料,好準備之後作分析及行銷:

1. 買過筆電但沒買過防窺片的人
2. 已經超過1個月沒有消費的人
3. 只在網站消費過一次的人

原始資料並無法直接給出這三種資料,必須透過某些邏輯判斷,即是「資料採礦」的過程:

1. 找出買過筆電的人,找出沒有買過防窺片的人,做交集。
2. 找出每個人最後一次的消費日期,看誰的最後消費日期距今超過1個月。
3. 計算出每個人消費次數,找出次數只有1的人。(同天的不同次交易,當作1次嗎?是目標嗎?)

透過上述可知,每個人的每次消費,都是正確且重要的資料,但並不需要呈現每一筆資料,卻又必須拿到並使用每一筆資料,才有辦法得到目標。

最終我們將這群人做出了3(+1)種分類,如圖透過資料採礦製作出【O,X】的欄位,至此,即可直接使用這欄位找出目標對象。

 

【資料採礦】的初級、中級、高級怎麼分呢?

舉例來說,如上的3類製作,都屬於初級,或使用Excel樞紐分析表即可處理的,最簡單的如:每月營收、每人總消費金額等等。

當條件越多,所需撰寫語法越多,甚至搭配統計值,所耗工時越長,則難度會漸漸傾向中級甚至高級。例如:「漲停板隔天,也漲停板的機率?」屬於初級,「連續兩個月的波動介於正負10%間,則未來半年先漲10%的機率是多少?先跌10%的機率多少?半年不漲不跌介於正負10%間的機率多少?」這就屬於中高級採礦的範疇了。

資料採礦可能乍看會覺得,嗯?不就肉眼看一看、Excel樞紐分析表拉一拉就好,有什麼了不起的?如果現在只有如圖片中十幾筆資料,確實人工處理就好,但當現在若資料有幾十萬筆……甚至如健保局資料有十幾億筆,千萬不要浪費生命用人工方式去處理。

尤其高級採礦的技術,放眼業界,能達到這樣專業水準的專家也已經不多了。

請儘管相信專業,交給專業。

分類
所有筆記 精選筆記

什麼是【資料清洗(Data Cleansing)】?

在於將資料【處理掉顯而易見的錯誤】

舉例來說,這是某間公司對於會員所收集的性別資料,裡面包括:男、女、男生、女生、男性、女性、男姓(打錯字)、F、f、M、m、Female、Male、female(各種單字縮寫和大小寫不同)……。

這些就算了,我像盛竹如一樣繼續看下去,於是看到093xxxxxxx的手機資料、還有屏東縣xxx的地址資料……裡面何止有兩種?根本有上百種!可以想像性別圓餅圖跑出來,不是一分為二的乾淨俐落,而是如上切分了各種色塊嗎?

資料清洗的過程:
首先決定好最終想要看到什麼,是想要看到【男、女】,還是【M、F】?假設決定最終要設計成【男、女】,則開始做收斂歸類,透過某些程式作業,將男生、男性、男姓、M、m、Male、male等等全數歸類成「男」,「女」的歸類同理。最後,將無法分辨男女的例如手機資料、地址資料,列為null。

真正清洗完的性別資料,只會有三種內容:男、女、null(不存在/空集合)。

【資料清洗】的初級、中級、高級怎麼分呢?

舉例來說,可大致如下區別:
初級:相對單純,使用Excel公式即可處理的,例:性別、日期。
中級:資料本身有橫向位移的狀況,例:性別資料,跑進了備註欄位裡。
高級:地址正規化,把某個地方賦予縣市鄉鎮甚至具體地址,例:「北所」的地址是什麼呢?

可能乍看會覺得,嗯?不就Excel人工改一改就好,有什麼了不起的?如果現在只有如圖片中十幾筆資料,確實人工改一改就好,但當現在若資料有幾十萬筆……甚至如勞保局資料有十幾億筆,千萬不要浪費生命用人工方式去處理。

請儘管相信專業,交給專業。

分類
所有筆記 精選筆記

什麼是【核密度估計(Kernel Density Estimation, KDE)】?

【把長條圖畫成折線圖!】 (就這樣而已~)

對非本科的而言,這肯定又是一個乍看即令人敬而遠之的專有名詞,若再直接搭配它給的各種機率密度函數,幾乎是讓人一眼就放棄瞭解,但其實它的概念非常單純。

更簡單一點來說,當我只是把A圖改畫成B圖,我就可以說:「我作了核密度估計。」或是推推眼鏡說:「沒什麼,KDE一下而已。」而把A畫成B這工作之簡單,甚至只是軟體中改個呈現方式(長條圖改折線圖)、或語法中改個參數(hist改成kdeplot)這樣罷了。

也因此,如果能懂長條圖在幹嘛,也能看著圖解釋其中意思,那當它變成折線圖時,有什麼好突然變得不懂的呢?

會不懂的原因發生在,過往我們學習過程,面對這艱澀難看超有距離感的專有名詞長相先不談,首先面對到的都是機率密度函數,在我根本還不知道它只是想做到「把長條圖畫成折線圖」這件事之前,告訴我機率密度函數,到底是要幹嘛?

這東西要教人,講者要先告訴大家:「我現在要做一件事:把長條圖改畫成折線圖。」然後千萬先不要提到「核密度估計」這麼令人絕望的五個字,也都先不要秀出機率密度函數,我相信台下能繼續聽下去的人肯定大增。

 

困難的點發生在,怎麼畫的?
如果我人工要畫,我該怎麼畫?

長條圖轉換成折線圖有一個很大的定義落差,在於:

長條圖是離散型,每根長條有自己的定義,例如20~29歲有多少人、30~39歲有多少人…,但這已經把20~29歲的人看成是同一群人,同一群沒有年齡差異的人;但變成折線圖時並不是,折線圖是連續型的概念,它根據你給的20~29歲有多少人、30~39歲有多少人…,去「估計」每個連續數值:20歲有多少人、20.1歲有多少人、20.2歲有多少人(甚至切分到無窮個小數點)……進而去畫出連續不中斷的折線圖。

其實直到上面這段敘述,都還不難理解,就算一時之間沒有理解,相信也是卡在連續型無窮細分的這個哲學議題裡,最難的是:該怎麼估計?如果20~29歲有10人、30~39歲有16人,那我估計30歲的人可能有13人,這方式OK嗎?

於是有了各種估計方式:Gaussian、Triweight、Epanechnikov……,然後各自有各自的機率密度函數(就是你給了它一個歲數,可以是38.8787歲,函數會告訴你估計起來有幾個人),這才是困難點。

但現在這個時代,我們真有必要去深入了解這些估計方式的機率密度函數,才能使用KDE嗎?不瞭解就會被人說不求甚解連用都不能用嗎?問我答案絕對是否定的。

 

我覺得啦,要鑽研理論、要欣賞機率密度函數之美、要熱愛微積分,那是一回事,但拿來實用作圖等等的,直接參數改了就知道現在用的是哪個估計方式,這完全是實務領域的另外一回事。

在實務領域,長條圖解釋、折線圖解釋,前後幾乎不會有差異,一樣是在談幾歲的人有幾個、整張圖的趨勢如何,只是前者是一群一群看、後者是某條平滑線直接看。

縱使折線圖上是估計的點,我們也並不會真的去討論這樣的「估計」準不準、也不會去討論該用哪種估計方式,因為我們看折線圖通常是看趨勢,而不是去看折線圖當中的某一個點!

既然如此,何必要浪費時間執著在懂不懂有哪些估計方式和它實際函數長相?

話再說回來,實務上到底為什麼要把長條圖畫成折線圖?
真的沒什麼,就單純視覺上比較好看罷了!

可以想像當現在是兩種顏色的長條圖比較,如果改成兩種顏色的折線圖比較,是不是折線圖會更清楚?

上圖是不是一眼就能看出紅線那一群的人偏年輕?很清楚嘛,比長條圖清楚太多了。

而平常需要換成折線圖,也只是因為「清楚」這個原因,而不會去追究哪個歲數要有多麼「精準」的預估人數。

 

總結一下,概念上很單純的「將長條圖改畫成折線圖」這個動作,有個專有名詞叫做【核密度估計(Kernel Density Estimation, KDE)】。

循序漸進,由淺入深,要難可以很難,要深究可以很深究,但實務運用上我們往往不需真得學到這麼難。也不需要講出專有名詞好像彰顯自己很懂很了不起。

「這個長條圖可以改成折線圖嗎?」
「這張圖可以改用核密度估計嗎?」

不覺得在職場上講出類似後面那句話的人,
故意要把一個很簡單的東西講得好像很深奧的人,
真的很讓人討厭嘛……