在資料科學中,怎樣是一個好的第一步呢?
最近在做 Social network Anaysis,可以發現這種重視連線(點與點之間)關係的案例具備有一定的實用性;不過也因為太過複雜,我認為初學者最多就是利用現成套件描繪出圖形,對於進階議題的探討幫助可能不大。不過在Social network Anaysis中,計算距離的概念,其實在很多初階的多變量課本中都有提到,我認為是相當好的入門題,有趣卻又不失直覺 (總不能一開始就叫初學者去學時間序列分析吧…)
想像一個簡單的例題如下:
A | B | C | D | E | F | |
核四興建 | 1 | 2 | 10 | 9 | 5 | 9 |
反服貿 | 9 | 8 | 1 | |||
破音歌神 | 2 | 9 | 4 | 5 | 4 | |
石虎保育 | 10 | 10 | 1 | 2 | 5 | 2 |
這是一個蠻常見的例子,有7個人對於4種議題的贊同程度予以評分。分數由1~10分進行評比,為了簡化,先假設都是整數…1表示非常不同意,10表示非常同意… 而常常會有人針對特定議題不想要表態,所以有的資料有所缺漏。
在實務上,我們可以把議題置換為其他主題;例如你是一個電子商務老闆,你應該會支持特定的人應該會特別支持特定的商品的這種想法。那些沒有填資料的人,你可以想像是有潛力的客戶,但到底會不會購買呢?? 以我的例子來看 B 應該是比較接近A,而比較不接近 C ,如果你花了大筆的錢針對 B 促銷 “破音歌神” 這項產品,應該是沒有太大的效果…
當然因為我給的例子很簡單,如果今天是有20萬筆資料呢?有1000項商品呢? 那我們適必需要資料科學加以協助…
(1)個體間的差異?最簡單直覺的想法就是用距離的方式
例如 A與C的距離程度 = 9+8+7+9 > A與b的距離程度=1+1+0
A | C | 差異(取絕對值) | |
核四興建 | 1 | 10 | 9 |
反服貿 | 9 | 1 | 8 |
破音歌神 | 2 | 9 | 7 |
石虎保育 | 10 | 1 | 9 |
A | B | 差異(取絕對值) | |
核四興建 | 1 | 2 | 1 |
反服貿 | 9 | 8 | 1 |
破音歌神 | 2 | 跳過去不算 | |
石虎保育 | 10 | 10 | 0 |
當然你事後會發現這樣的方式有很多問題,但是反過來說在 Big Data 的狀況下,很多時候不特別採用抽樣技術,反正我手邊的資料就是母體,只要分析的結果具備商業價值也就夠了… 一般來說距離求算的技術至少有3種。
在此例中,我們也發現在計算距離中,處理 Null 值的議題…同樣的東西如果要在Excel不利用VBA方式而用函數直接處理的話,往往要寫成很長的公式。而且Excel Sheet對於任意抽2個來計算並不是很擅長,所以我們會使用類似 Python或是R這種語言來協助。
在算出了距離後呢?
(2)接下來就是要找出那些是相似的?
舉例來說,如果以A為例的話,平均距離計算如下 (定義=總歫離/有評分的議題)
可以將 A B 視為是較接近的族群,而A C 之間的距離最遠,彼此間的差異最大
(3)進階處理 Null ? Null值可以用其他值加以取代嗎
回到原先的範例(把一開始的表格再複製一次)
A | B | C | D | E | F | |
核四興建 | 1 | 2 | 10 | 9 | 5 | 9 |
反服貿 | 9 | 8 | 1 | |||
破音歌神 | 2 | 9 | 4 | 5 | 4 | |
石虎保育 | 10 | 10 | 1 | 2 | 5 | 2 |
B D E F 都有不願意表態的項目
但是我們可以試著將 B 在”破音歌神”的Null值用A的值來取代?
Why 為什麼不用D的值來取代呢? 這樣子的演算法的規則是什麼?主要是因為在這例中,B與A的距離最為接近,自然是採用最接近的來進行取代。
其他衍生議題
(1)D 與 F 之間的距離最短為0,但是他們同意都不對「反服貿」議題表態..違反了一開始我們設定的簡易演算法規則
(2)E這位仁兄看來是採取二手政策對於各項議題都採取相對中立的態度…有什麼手法可以將這種誤差予以排除?
(3)在這個範例中,每個人只針對一個議題表達一項意件。而在實務中,往往一個人對於一項產品,不會只購買一次;例如:愛打籃球的高中男生 A,可能在一年內就消費了5雙nike籃球鞋…
所以我說這樣的例題,可以一再衍生很多資料科學中的進階議題;而隨著問題的複雜化,在程式語法中所要熟悉的東西就會從基本的變數設定、資料輸入/輸出、一定延伸至函數、Class撰寫等等議題…
否則對一個半路出家但有志於資料科學的人卻和資工系的學生進行一樣的訓練方式,這樣不是很奇怪嗎?
沒有留言:
張貼留言