2012年9月30日 星期日

[筆記] 從推薦系統到Apache Mahout

Source: apache-mahout

最近閒暇之餘在研究一個題目 - 推薦系統,怎麼會想要研究這個題目呢?因為鳥先生最近熱血於規劃他的美食推薦系統(不過那又是另一個故事了),而我們的分工方式就是他負責前端,我負責後端,結果這個恐怖的推薦系統似乎就落到我頭上!? 推薦系統.....一點概念也沒有,於是乎上網搜尋了相關資訊,看到了這篇"How to build a recommender system presentation" 。看完了整個發毛,遙想當年統計學低空掠過,畢業後就還給老師了,上了研究所去旁聽machine learning,也因為統計學早就還給老師了所以整個鴨聽雷...囧rz...

直到今天看到了一個影片,就突然喚醒了我的記憶 (隨著年紀增長記憶力越來越低落...)

(老外真的都很會做一些淺顯易懂的影片~:P)

Mahout ! 就是那道光,於是我又想起了今年Java Two 王建興大師演講的題目似乎就是在介紹利用Mahout實作的推薦系統[1] (原諒我到處趕場,就是沒聽到這場),然後才發現一系列他寫的關於推薦系統的文章[2][3][4],其中這一段真是打動我的心啊
當站在Mahout的肩膀來開發推薦系統時,你會發現,過去我們在開發推薦系統或機器學習的應用中,最耗費時間的環節之一,也就是開發這些演算法甚至是打 造應用程式框架,突然間都消除了。而且,更重要的是,和你一起競爭的開發者或團隊,也都站在和你一樣的立足點上一起出發,因為大家都可以憑藉著 Mahout的力量,立即得到這一切,開發應用程式的關鍵和瓶頸似乎轉移了。

不過這是大師的觀點,對於我們這種Machine Learning 小白,看完文章後只有劉姥姥進大觀園的感覺,除了驚嘆Mahout 的強大外,更暗自覺得不妙(要新學的東西也太多了吧....囧),因為Mahout被建造的目的主要是提供Machine Learning 所需要的各種演算法引擎(推薦只是Machine Learning 的子集),所以除了推薦系統外(Mahout中專指協同過濾式的推薦),更提供分類演算法、群集演算法、模式探勘(Pattern Mining)、降維(Dimension Reduction),以及向量相似度(Vector Similarity)....等[5]各種演算法引擎。所以說這就好像進到了蝙蝠俠的武器庫裡,擁有各式各樣殺傷力強大的武器,但在使用前還是得先去了解每個武器的特性,適合使用的場合,不然只會浪費了這麼好的武器,甚至還會被後座力傷到。

所以在使用前似乎應該先服用coursera 的線上課程,有個基礎的了解?
(那個誰誰誰...快去唸書啊...Orz...)

除了了解原理外,所以接下來該怎麼玩?

1. 利用Mahout 單機板模是學習使用這些工具與API
2. 架設單機版 Hadoop 嘗試讓 Mahout 的程式能在上面跑
3. 如果要進入Production ,我想最方便的方法就是讓程式跑在 AWS Elastic MapReduc

很好...看樣子有得忙了...

延伸閱讀:

IBM - Mahout 介紹

Reference:

[1] 沙中撈金術﹣談開放原始碼的推薦系統
[2] 適合現實應用的混合推薦系統
[3] 以人數與內容特徵建立推薦系統
[4] 憑藉推薦系統來活化長尾的部分
[5] 大象背上的男人:Mahout

2012年9月27日 星期四

SaaS Template AWS CloudFormation



今天去參加Amazon 的 workshop 才赫然發現,原來心目中理想的SaaS Template Amazon已經有提供類似的功能叫做CloudFormation,CloudFormation 是透過Json的格式來描述整個SaaS 要佈署的內容與配置,所以以後只要費一次供配置好你的系統架構,之後就可以快速的複製,就如同上圖的梗,一個複製兵如果撐不起服務,那就多開幾個複製兵就好了~XD

流程如下圖所示,有興趣的可以去玩玩看,教學連結"Howto"

 Source: AWS

如果剛開始不知道怎麼編輯,可以參考這裡有提供sample template,不過看樣子似乎目前沒有Editor tools,所以對於一般人來說只能先研究template然後再做修改,不過看起來有點困難,得花點時間研究看看,看有沒有辦法做一個圖形化的template editor,或是把現有的group export 成template。

越是深入使用AWS,越發現許多架構與功能的設計巧思與眉角,這些功能與服務真的都是累積了無數大型系統維運的經驗,以及解決客戶問題所累積出來的技術門檻,到底台灣的IaaS要怎麼追的上呢...Orz...

延伸閱讀:

2012年9月24日 星期一

雲端運算策略研討會 - 早場政令宣導



本週為跑趴週(這週有非常多的研討會@@),今天的是雲端運算策略研討會,一開始的開幕儀式非常令人噴飯(好啦官方做儀式本來就會這樣),儀式內容(影片)是這樣,檯面上放一個被切兩半的彩虹,一半代表政府一半代表業界,然後所有參與雲端開發測試平台的廠商陸續上台,把代表公司的貼紙貼在彩虹上面,貼完後再把兩半的雲合起來,代表產官合作建造雲端服務.....

圖片:開幕儀式

下面小弟我就針對每個Session嘗試記錄一些重點,如果懶得看,那就直接跟你講重點! 簡單一句話"把以往的政府e化改成雲化",以上報告。

雲端開發測試平台


詳情請見雲端開發測試平台網站,這個網站設立的目的就是一來讓各家廠商揭露初他們的研發成果,二來還可以達到招商的作用。


資料來源:測試申請服務流程

至於要怎麼來測試是真雲還是假雲,根據這張投影片(測試食品雲),似乎是由以下幾種方法:


1. 測試資源是否可以彈性調度 (how?)
2. 大量服務連線測試
3. 服務不中斷測試
4. 大量資料及邏輯處理















醫療雲


澳洲是全世界第一個挑戰,建立一個中央集權的電子病歷系統(PHR)

而台灣有500家醫院,兩萬家診所,目前台灣作法,電子病歷還是留在醫院,但是把Index Server 放在政府端,但是仍需要民眾同意(病人同意書-紙本),政府目前正在推行三年計畫,已經有127家醫院有這樣的服務(醫院必須有伺服器安裝體Gateway),跨院國家電子病歷系統,完成簽章後儲存於EMR主機,目前只交換報告(文字資料約30k),目前計畫把Gateway 虛擬化後放在IaaS,讓各家小醫院診所可以直接擁有這些Gateway,系統架構如下圖所示:


教育雲


簡單一句話把所有學校的機房電腦和校務系統,Mail系統,統一集中到教育雲上(某個IaaS上),降低學校管理維運成本。

食品雲


目標明年超商50%以上的產品可以在"食品雲"上查詢,建立跨平台跨部會的資料交換,此外政府輔導食品業者資訊化,雲端化....架構圖上赫然發現Hadoop、Hbase Cluster,然後報告的長官很快速的就帶過去。(長官辛苦了~XD)

展場攤位

今天新聞亮點:中華電信的Virtuoso

HiCloud 是由Vmware Solution所架構的IaaS,而Virtuoso則是由XCP 所架構出來的IaaS所以在成本上可以降低很多,但是少了Vmware 的加持,就必須要花費更大的心力去研發做到真正的彈性擴充功能,只能說中華電信加油!

小小的展場,居然有兩家公司還有請Show Girl,不過我不敢拍~:P

乎~感受到記者截稿壓力...至於下午場因為有智財權,不能把拍照的照片放上,我就不特別報告了~:P

台北市政府創業育成課程


圖片來源:Gwen

為什麼會放這張圖,一來我老婆是美術設計(工商服務:有興趣的歡迎下單委託設計~XD),二來就如同這張圖的意境參加創業育成課程有兩種人,一種是湊熱鬧想看看這個課程可以學到什麼,另一種人就是為了取得20小時的上課時數,然後才可以跟台北市政府申請創業貸款。

上課時數?創業貸款?是不看的一頭霧水,且聽我娓娓道來,身為合法繳稅的台北市民,怎麼可以不多關心自己的權益呢!話說有某一天在亂逛網站時發現了中小企業學習網上有許多免費課程,其中一個是由台北市政府產業發展局所舉辦"台北市融資貸款行政支援暨企業關懷輔導計畫-創業育成課程"


創業育成課程的舉辦目的如下:
青輔會自98年5月1日起,將受過20小時以上的創業輔導課程,列為青創貸款申請必備資格條件之一,包含大專校院、政府自辦或委辦或政府認可之民間團體所 辦理的創業課程在內,只要經認證後,都具備申請青創貸款資格。而青輔會為了提升青年創業知能,協助青年創業,今年特別擴大辦理青年創業育成課程,並於全國 各地開辦55班次的「青年創業知能育成專班」,課程完全免費,只要年齡介於20~45歲,創業5年內及3個月內準備創業的青年朋友,都可撥打青創諮詢專線 查詢報名。 
沒錯,這個講座主要的目的就是取得貸款資格,而且光是台北市就有三種貸款可以申請唷,詳情請見下面三個實施要點:
PS. 除了台北市政府外,也有其他如中小企業處,青輔會...等補助計畫都可以上網查的到。

其實這個課程立意良善,讓有心創業的人先來上上看,了解創業前需要先了解什麼,不管是心態、法規、財務...等相關知識,不要只是一頭熱的就想創業,創業之路是很艱辛的!不過說實在短短三天的課程,要講的內容包含以下內容:
  • 創業資源介紹 - 臺北市相關融資貸款介紹
  • 創業基本認識與準備 - 行業商機與未來趨勢、創業條件與型態說明、創業風險評估
  • 創業財務與稅務 - 創業相關會計、成本利潤分析、工商登記、營利事業所得稅、營業稅、租稅規劃及運用
  • 營運計畫書撰寫技巧 - 計畫書目的與重點、邏輯概述、撰寫原則
  • 行銷策略概述 - 行銷策略規劃與產品定位及定價
  • 商圈評估 - 評估方式、非商圈經營手法
  • 營運計畫書撰寫實務 - 計畫書目的與重點、邏輯概述、撰寫原則撰寫項目說明、案例說明

看到課程大綱就知道幾乎都只能點到為止,光是財務稅務相關的內容就可以講超過20個小時吧,不過還好講師們都是非常有實務經驗,所以會"重點"提醒~XD (台北市豪華顧問群)


全程都有在錄影,畢竟這也是台北市政府的KPI ~XD

陳其華顧問 - 創業有如摸著石頭過河

最後放一張陳其華顧問的創業有如摸著石頭過河,充滿未知,前人安全走過的路對你來說也不一定適用,因為市場環境隨時都在變,你也只能戰戰兢兢隨時的調整與測試。



補充資料(產發局寄上課學員的Email內容):

經濟部中小企業處的【微型及個人事業支援輔導計畫】誠摯為您服務,本計畫針對個人工作室及五人以下的事業體,提供創業、經營相關諮詢及服務,希望能在您創業之路助您一臂之力!

    1.免費諮詢專線:0800-051638

微型及個人事業支援輔導計畫,提供免費的諮詢專線,取其諧音為你我一路相伴,希望在您有需求時,可以幫助您解決問題,給予協助。

    2.免費輔導、課程

當您開始創業時或是經營中,對於許多事物一定常有困惑,並且希望能有人從旁指導,我們提供輔導或是研習課程,給予您諮詢的後援。

    3.免費網路平台:http://micro.sme.gov.tw

在行銷通路方面,我們也打造免費網路平台,除了提供本計畫相關資訊之單向發佈及雙向交流外,您還能展示自家產品,增加曝光機會。

2012年9月23日 星期日

PaaS 將會是雲端運算的下一個主戰場


圖片來源: Azure Advantage 


昨天剛好看到一篇文章提供另一個趨勢研判的方法,就是觀察美國startup研發的焦點,目前都專注於發展哪些技術,那邊就可能是接下來的趨勢發展。

這位觀察家發現,過去兩年美國根據他觀察指標性的27家的startup 大多專注於以下兩種領域
  • 開發用來管理雲端系統以及營運環境的工具 (27家裡面有13家在做這個)
  • 研發最佳雲端儲存方案 (27家裡面有6家在做這)
兩年過去了,現在整個研發的焦點已經開始轉向了,根據他新觀察的32家指標性startup
  • 開發用來管理雲端系統以及營運環境的工具 (32家裡面有7家在做這個)
  • PaaS and other …as a Service (32家裡面有10家在做這個)
  • 各種大量資料的分析與運算(Big Data and social analytic) (32家裡面有7家在做這個)
  • Hosted mobility solutions (32家裡面有6家在做這個)
可以看到開管理雲端系統的工具廠商已經減少了(市場淘汰機制啟動?含金量太低?趨向成熟化),而已經漸漸轉移到其他的領域,根據他結論如下:
  • 目前市面上基本的IaaS已經夠成熟,而且有足夠的管理工具
  • 他預測PaaS將來會發展的比IaaS更快
  • Mobility已經變成採用雲端技術的一個重要驅動力
根據這些邏輯邏輯,這個推論是可以參考參考,不過讓我更好奇的是上述都是觀察美國的startup,那台灣目前的發展狀況呢?

放眼望去台灣,目前檯面上雲端運算喊的響亮的就是那幾間大公司(看一下常辦得雲端研討會),要做的東西幾乎都是跟IaaS有關,為什麼台灣就這麼小,但是許多大公司就卻搶著做IaaS呢?

參考政府計畫一貫的思維脈絡,並且推敲 "產業升級雲端化"這個口號,一切就顯而易見,於是我整理出下圖,直接進行無痛產業升級!XD


圖片來源: 自行編輯

套用產業無痛雲端化升級公式!傳統的Hosting 和伺服器產業立馬升級成為IaaS

對這些大廠來說,這是他們最了解,也最容易理解的,也是一直在經營的。可惜的是也只局限於HW 和 Hosting的程度,並沒有考慮到IaaS最重要的是那個能讓系統資源可以任意增加,Scale out 的系統架構,不過openstack 和 cloudstack 的出現似乎也成為台灣雲端產業的救贖,人家都寫好了,我只要拿來改,增加自己的feature,就可以賣啦~~Windows如此,Linux 如此,Android也如此 (沒禮貌,這叫做Value Added)


同樣的,許多網站和系統進入雲端運算時代,就都突然變成了所謂SaaS了,話說回來為什麼遊戲業從來沒說自己是雲端產業,或者硬要把自己定義成某個類型?比如說SaaS?大概本身就夠賺錢了,不需要來淌雲端這個渾水,或者沾光,好啦這邊先不管SaaS 的定義,這不是我要討論的重點。

我想要討論的觀點是上圖紅色的部份,就是IaaS和SaaS最終都會向PaaS靠攏,在這邊先定一下,狹義的PaaS就是類似Container 的概念,而廣義的PaaS其實就是一種Eco-System的概念,我講的比較偏向廣義的PaaS。

IaaS為了要提高客戶的使用量,降低開發門檻,勢必會提供更多API朝PaaS發展(像Amazon),而SaaS為了提高進入障礙,回朝向平台化建立Eco-System (像Facebook、SalesForce.com...)。

結論?我沒有結論...囧rz...只有一點點感觸....

看到平台這個Key word 就讓我想到在資策會的年代,每個計畫都是要做平台,但強如Facebook和salesforce也是要先專注一個domain發展,等到夠強了才要朝平台發展,一開始就要做平台,只會死的很慘....

另外政府和大廠想要先建構IaaS也事情有可原,畢竟台灣還是得發展自己的DatCenter 和IaaS,不然總不能讓政府和教育單位將來都只能用國外的Solution (Amazon、M$ Azure..等),也不希望最後Infrstructure也都還是選國外大廠的Solution(IBM、HP...等),只希望國內的先進和夥伴們可以努力至少位台灣保留點研發能量,如果這邊也沒守住,那之後台灣就真的沒剩什麼了...

2012年9月15日 星期六

Standford 線上課程 The Lean LaunchPad

Source: edvardas

話說我腦充血買了The Startup Owner's Manual 之後,閱讀的進度卻十分緩慢,在偶然的機會下發現這本書的作者 Steve Blank,以這本書為教材在Stanford Technology Ventures Program有開一門叫做The Lean LaunchPad – Teaching Entrepreneurship as a Management Science的課程,而現在我們也不需要乾瞪眼了,因為整個課程已經放在網路上可以讓大家免費上課了!! (這個年代真的是只要有心學習,資源越來越隨手可得啊~~)

以下是課程介紹和課程大綱:

  • Lecture 1: What We Now Know

    Why startups are not smaller versions of large companies
  • Lecture 2: Business Models and Customer Development

    How to articulate and test hypotheses
  • Lecture 3: Value Proposition

    How do you find your minimum viable product?
  • Lecture 4: Customer Segments

    How do you find your customer archetype?
  • Lecture 5: Channels

    How does your product gets to customers?
  • Lecture 6: Customer Relations

    How do you get, keep and grow customers?
  • Lecture 7: Revenue Models

    How do you make your money?
  • Lecture 8: Partners

    Who are your partners and suppliers?
  • Lecture 9: Resources, Activities and Costs

    What is most important for the business?




現在就趕快去註冊和上課吧,How to Build a Startup (ep245)

為什麼Google analytic 收集到的訪客數跟bloger 不一樣?

Source: network

這一陣子比較沒有在寫新的文章(惰性啊...),但是卻還是有在觀察自己blogger的流量,卻發現一個讓我感到疑惑的,blogger 的訪客流量分析與google analytic 的流量分析差很多,根據blogger顯示的統計數據,就算我都沒有新增文章了,平均每天都有一百多個人次的訪客 (謎之音:這種小鳥流量有啥好觀察的...)。不過很多時候流量來源都是怪怪的國外網站,我都懷疑是國外的機器人爬過來....=_=,唯一依次爆量就是去參加Scrum大師講座的心得,因為有被大咖 teddy ihower 轉貼連結,造成很多流量跑過來。(肝嗯唷~~XD)


但是相對比較起來Google analytic 所觀察到的幾乎是一灘死水,根本沒啥人在看~XDD


因次我非常好奇的上網研究,在stackoverflow有人回答,每個流量統計工具,之所以產生不同的數據,通常是因為以下原因:
  1. 他們定義 "參觀" 的方法不一樣
  2. 他們使用不同的追蹤訪客技術
  3. 其中一個可能是使用採樣的資料(sampled data)
那我就更好奇啦,同樣都是google 出品的blogger 和 Google analytic,為什麼對於訪客計算方式會有不同的定義或是採用不同的追蹤技術呢?於是又google 到兩篇解說這個原因的Bloger:
 整理有以下結論:
  • Google Analytic is showing the "more" correct statistics of user activity on your blog
  • Google analytic 使用較為精確的測量方式,透過使用者瀏覽器的Cookie
  • 因為使用cookie 所以會把不是真實使用者的bot 都濾掉 (果然很多都是機器人><~)
  • 如果有引用到3rd-party(外站) JavaScript 或是圖片,也可能會觸發blogger的流量
至於想要深入了解Google Analytic 是如何計算的可以參考一下文章:

2012年9月12日 星期三

Facebook world hack Day 參觀筆記


第一次參加這種活動,感覺非常新鮮,尤其是看到這麼多高手(和Mac) 在現場Coding,此外這次活動場地真的很高級,算是最近參加許多workshop 和 conference 最高級的場地吧(餐飲也最好~XD)。

這次活動早上在介紹如何利用Open Graph開發 Facebook App,以及許多重要的工具網站:
然後下午就是開始大家組隊(打副本)利用Facebook API Hacking。


有許多團隊是整個公司直接殺過來,甚至還有制服(像是圖中衣服上有QR Code的)



Facebook 的工程師輪番上陣,介紹他們的平台以及開發方式

活動舉辦在全豐盛信義105大樓15F,場地外面還有一個露天的聊天區真不賴

怕大家無聊,現場還有提供實體版Angry Bird 可以給大家玩





一眼望去幾乎都是用Mac~~~~




場地的另一邊,有提供黑板給團隊討論用

另外有高腳椅風景區,和沙發區任均挑選




到了晚上才突然發現居然有高手~~帶mac mini + LCD 來現場~XDDD


活動結束後離開大樓還有美麗的夜景可以看


話說回來,對於網路業和startup 來說Java 似乎太笨重? 就連facebook對於java 的支援程度都很低,必須仰賴3rd party 的支援,官方版早在很久以前就不支援了,這次活動提供(建議?)的開發平台的是Heroku (開發方便?用完就丟~~:P)。光是了解於熟悉開發環境就花了我不少時間,所以早早就自暴自棄,到處閒晃拍照和玩Facebook API~XD

下面整理的一些筆記,如何在Herokua 上開發java app

安裝Eclipse Plugin
http://eclipse-plugin.herokuapp.com/

Source (https://github.com/heroku/heroku-eclipse-plugin)

在Heroku 上Create java app
http://java.heroku.com/
https://devcenter.heroku.com/articles/java-learn-more

教學
http://www.jamesward.com/2012/03/15/screencast-java-template-apps-on-heroku
https://devcenter.heroku.com/articles/facebook