2016年11月15日 星期二

First month in Academia Sinica

來到中研院資訊科學所已經一個月了。才發現,這一個月過的超級漫長,但是每一天都過得非常快,有種時光錯亂的感覺XD 每天八點左右到實驗室,晚上七點多離開,中午都是拜託同事幫買個便當,邊吃邊繼續打code,畢竟就是來這裡學習技術的,希望有天自己能夠像陳老師要求的一樣,寫code寫的跟喝水一樣容易,加油~

愛情公寓的分析暫時告一段落,因為要先去接手另一名離職同事的案子,是要分析當熱浪來襲,五種交通工具(捷運、汽車、機車、公車、ubike)運量的變化情形,聽起來好像不會太難,但實際作起來發生非常非常多的問題。
首先是各個運具的資料必須與氣象站進行結合,為此我寫了很多function,之後會再找時間放在github上面。包括經緯度查詢換算距離,統一dataframe的格式,以及不同運具之間用同一個function進行畫圖,結果產出如圖。先以信義區的氣象觀測站為例


汽車
ubike
捷運
可以發現當溫度上升,ubike下降,捷運進站人數跟汽車流量會上升,但是流量的影響其實有非常多的因素,單用溫度來看確實只能看一下大概的趨勢如何,之後還會再套model進行驗證,再來看看結果如何囉。最後用一張各個運具normalized的趨勢圖做結尾,挺漂亮的!
工作日
假日

2016年10月19日 星期三

2016/10/19 decision tree model

剛進來的第一份作業是處理愛情公寓的會員資料,資料筆數約30萬筆,分析會員升級成VIP的可能原因以及VIP退租的可能原因。雖然先前有在網路上學過python的資料處理,但是在實際使用的時候還是常常會卡關,有時可能連簡單刪除列的程式碼都忘記,其中找尋VIP前後購買的函式大概花了我整整一天來撰寫。雖然在這裡不能成為一個即戰力來幫忙,但是希望在中研院的這段時間,能夠將自己訓練成一個即戰力,為往後資料分析職涯鋪路!

已完成工作:
使用python
建立 會員個性矩陣(from binary code)
建立 成為VIP前後購買產品矩陣
繪製 會員註冊至第一次付款所需時間圖表


目前工作為:

運用個性矩陣推估會員成為VIP之可能性,先以decision tree 進行分析。


Decision tree:
決策樹是常見的監督式機器學習演算法,類別與連續變數皆適用,選取最有利的區分變數來將資料進行二元分類。

基本元素:
Root Node:代表原始資料的點(根節點)
Splitting:將節點開始分為子節點
Decision Node:根節點開始分枝後的節點
Leaf/Termial Node:當節點不需再分枝,即為葉或是終結點














決策樹有兩種形式,回歸樹用在應變數為連續變數,分類樹用在應變數為類別變數。
決策樹很容易有overfitting的情形發生,因此控制fit的變數就變得很重要。

  1. Minimum sample split:用來控制overfit,決定一個node至少要存在幾個sample,若沒有設定,容易產生overfit的問題,但是設定過高則會有underfit的問題。
  2. Minimum sample for leaf:最終葉子裡至少要存在幾個sample。通常如果是較不平均的分類問題,其值設定建議較低。
  3. Maximum depth tree:樹的最深為多少
  4. Maximum number of leaf:樹深若為n,則葉子為2^n個
這次的實作,第一次遇到了inbalance的問題。簡單來說,當應變數為類別變數時(0或1)
很容易遇到0特別多或是1特別多的情形,像是疾病的分析,健康的為0,患病的為1,在選取樣本的時候,就很容易遇到非常多健康的樣本,患病的樣本則很少。

遇到這樣的問題時,運用undersampling就可以解決,也可以順利的跑出合理的決策樹結果。



2016年10月11日 星期二

2016/10/11 Data Analysis Job in Sinica

過完雙十連假,開始了我在中研院進行資料分析的工作,原本對於程式是完全陌生的
偶然在網路上看到了資料科學的文章,也體認到未來資料科學的趨勢,決心要踏入這個領域,很高興能有機會以一個非本科系的身分來到中研院資訊所學習,感覺要學的東西非常多,希望自己能夠堅持住,努力往自己的目標邁進,加油~

楊証琨 2016/10/11
今天閱讀重點
how should people approach problems in data science competitions ?
Let me put it down in 9 basic steps:
  1. Understand the problem / objective you are trying to solve.(了解問題,確定目標)
  2. Understand and summarize what data you have / need.(了解並統整現有資料)
  3. Carefully read about the evaluation metric.(了解評估準則)
  4. Explore and visualize the data, build simple, base models for benchmark.(探索分析,建立簡單模型)
  5. Setup a robust / thorough validation framework consistent with the evaluation conditions.(建立評估準則)
  6. Work on feature engineering and optimizing algorithms.(最佳化演算法)
  7. Try out as many different models / ideas as you can.(嘗試不同模型)
  8. Ensemble / Blend / Stack multiple models.(混合或堆疊模型)
  9. Never hesitate in asking questions, taking help or even teaming up with others(討論不同意見)