2025年6月22日 星期日
Metadata後設資料:精準搜尋、一找就中,數據就是資產!教你活用「描述資料的資料」,加強資訊的連結和透通
2021年11月14日 星期日
Google Analytics 疑難雜症大解惑:讓你恍然大悟的37個必備祕訣
在網站營運成效分析的領域,Google Analytics已經業界公認的標準工具,不過此工具雖然背後的技術含金量不低,但訴求的使用者主要為負責網站商業營運的產品、行銷人員,因此即使是網頁程式開發者,也不是每個人都有機會接觸到這個數字味很重的平台。專業分工的好處讓每個人能專心投入手上的工作,程式人員不用額外操心研究GA平台。但缺點容易浮現在網頁開發者無法正確地瞭解程式功能的具體成效,建立良好的A/B測試思維。更有可能因為產品、行銷人員對程式技術的陌生,不知道如何跟程式人員溝通,去實踐許多GA能提供的機制,讓網站成效更容易呈現。以網站經營為主的企業,特別是電子商務公司,如能提早讓員工(特別是產品、行銷和程式開發人員)建立GA使用的基礎知識,將會減少團隊間的溝通成本,進而增進網站的優化效率。
本書重點知識繁多,整理精要如下:
讓GA可以對側錄網站進行流量資料搜集的前題是埋入一小片段的JavaScript,全名是GATC(Google Analytics Tracking Code)。目前又分成兩個版本,一是目前普及率最高的analytics.js,另一個是新版本的gtag.js。說穿了,GA是利用瀏覽器的Cookie機制來記錄與傳送追蹤資料,在沒有實作Cookie的手機APP環境,GA只能改用GA函式庫來讓使用者自行傳遞資料。不是APP也非網站的可連線裝置(像自販機、E-Mail),GA也提供了一種使用量測量協定(Measurement Protocol)來滿足流量追蹤的需求。
免費版的GA在目標追蹤、自訂維度和自訂指標上都有20個額度的上限,付費版的GA才沒有使用額度的限制。不過可以藉由在同一個網站中埋入一組以上的GATC來將流量導向多個GA追蹤ID,每個ID都擁有20個額度。
Cookie也是GA用來辨識新舊訪客的機制,GA會利用三種Cookie來追蹤訪客行為。
1._ga cookie:用來辨識不同訪客,每兩年更新一次。
2._gat cookie:用來讀取JavaScript函式庫,加快網頁回應速度。
3._gid cookie:用來辨識相同或不同訪客在不同頁面上的行為。
其中_ga cookie的編碼內容,會對初次進站的訪客給予一組唯一客戶代號,再加上初進訪客造訪的時間戳記,組合成足以辨識新舊訪客的客戶ID(Client ID)。也由於是此機制是透過瀏覽器的Cookie實作,因此在下列的情況時,新舊訪客的判斷將會失準。
1.訪客用不同裝置造訪。
2.訪客用不同瀏覽器造訪。
3.訪客清除Cookie後造訪。
4.訪客使用無痕模式造訪。
5.訪客離初次造訪時間已間隔兩年(_ga超過期限)。
使用GA時第一個挑戰就是要面對一些新名詞,如果沒能搞懂這些名詞背後的意義,那肯定是無法正確解讀GA。「維度」和「指標」是最核心的兩個觀念,維度(Dimension)是分析時要區隔的屬性或分類,像裝置類別、瀏覽器名稱、網頁網址名稱、年紀、性別、地區等,非數值型的標籤。指標(Metric)則是我們真正關心的數值資料,像是工作階段數、平均工作階段時間長度、跳出率、轉換率。藉由不同的維度和指標排列組合,就足以讓使用者從各個不同角度切入、檢視網站的經營成效。
「使用者人數(User)」、「工作階段(Session)」和「瀏覽量(Pageview)」已經是評定網站成效的公認指標。
1.使用者是「不重複訪客數」,可進一步拆分成「新訪客」和「回頭訪客」。但在報表上常常出現「新訪客+回頭訪客」不等於「使用者數」,這是因為在不重複訪客數的計算時間區間內,訪客可能同時有新訪客和回頭訪客的身份。同理,依單日計算的使用者數加總起來也會不等於指定日期範圍的使用者數。
2.工作階段數也就是HTTP中定義的Session數,也可以簡稱為造訪數,逾時時間為30分鐘(可以在「工作階段設定」自行調整時長),所以在30分鐘內的所有瀏覽行為都算在同一個工作階段。在GA統計上又多了一條跨日限制,只要跨日便視為新的工作階段。舉例來說使用者在23:58進到網站遊逛到隔日的01:08,則這兩天都各計有一次的工作階段數。另外由不同來源進入到網站時,也被拆分成不同的工作階段(例如:直接進站、由FB廣告進入、搜尋引擎導入...),而各自計算次數。
3.瀏覽量是最容易虛胖的指標,只要網頁被開啟一次就會將計次加一。也因此GA有另一個「不重複瀏覽量(Unique Pageivew)」的指標,是指在單一工作階段中計算不重複的網頁瀏覽次數。
網站營運團隊最討厭的數字大概就是「跳出率」和「離開率」了吧,這兩項指標是如此重要,所以更需釐清他們的定義。
1.跳出率的公式是「單頁工作階段數/全部工作階段數」,計算單位為工作階段數。單頁工作階段是指使用者在單次造訪中,只瀏覽了一個頁面就離開(沒有後續的網頁瀏覽行為)。此指標可以用來找出使用者離開網站的關鍵頁面,讓團隊檢視網頁內容是否有修正的必要。在利用跳出率數字時,要一併考慮網頁性質,並且和「網頁停留時間」和「轉換率」等其它指標一同討論,才能正確地解讀此數字。
2.離開率的公式較為複雜,公式是「單頁為工作階段的最後一頁/單頁出現在工作階段的次數」,計算單位一樣是工作階段。離開率高的網頁,表示它已成為多數使用者在遊逛行為中的最後一頁,應該模擬使用者的瀏覽行為來檢視該頁是否存有問題。有些網頁性質本來就會產生出明顯偏高的離開率,像是購物車的最後一頁、內容網站中的文章等。因此在解讀離開率時,一樣要和網頁停留時間等其它數字一同評量,才能判斷該網頁是否有吸引到使用者。
對於導流到側錄網站的來源,也是非常需要關注的評量項目,它幫助經營團隊檢視各項投入的行銷資源是否有獲得回報。GA定義了與此相關的兩個名詞,「來源」和「媒介」。預設的「來源」有「direct(不透過媒介的自然流量)」和「google、yahoo...(各大網路平台)」。無法被歸屬到各大平台的流量來源,多半都被列為direct,包括下面的各種情況:
1.直接輸入網站網址。
2.點擊瀏覽器的書籤、我的最愛。
3.掃QR Code。
4.從離線文件(PDF、Word)中點擊連結。
5.從手機APP點擊網站連結。
6.從E-mail點擊網站連結。
7.從手機中的FB網站點擊連結。
也由於絕大多數的使用者行為都被歸到direct,因此GA另外有自訂來源的機制。預設的「媒介」有「none(無媒介)」、「organic(自然搜尋流量)」、「referral(推薦流量)」和「cpc(關鍵字廣告流量)」。藉由在導流連結中埋入GA的「utm_source」和「utm_medium」參數,相當輕鬆地就可以使用自訂來源和自訂媒介的功能。
因為HTTP的限制,網頁追蹤技術始終無法正確地得知使用者真正離開的時點。也因此GA的「平均網頁停留時間」和「平均工作階段時間長度」都和使用者實際操作時長不太一樣。
1.平均網頁停留時間是由「停留時間加總/(總造訪頁數-離站頁)」,最後離站頁所停留的時間無法被得知,也不計入除法的分母。
2.平均工作階段時間長度則是「網頁停留時間加總/工作階段總數」,工作階段總數的數字會受到「工作階段逾時時長」影響,不同的設定值變動幅度差異會很大。
除了基本的程式設定、名詞解說外,書中也說明了屬於GA進階功能的「篩選器(Filter)」、「事件追蹤」、「實驗」、「目標」、「網頁活動分析」、「區隔」、「電子商務追蹤」、「內容分組」、「自訂快訊」、「自訂維度和指標」、「自訂報表」和「歸因模式分析」。其中「歸因模式」會直接影響「網頁轉換次數」與「網頁轉換價值」的計算方法。GA提供下列數種歸因模式:
1.最終互動。
2.上次非直接造訪點擊模式。
3.對AdWords廣告的最終點擊模式。
4.最初互動模式。
5.線性。
6.時間衰退模式。
7.根據排名模式。
GA進階報表包括了「效期價值報表」、「同類群組分析報表」、「工作階段品質報表」、「基準化報表」和「流程報表」等。其中「使用者流程報表」是最直觀可以用來分析網頁成效的工具,透過它呈現出來流量流入和流量流出資訊,能確認地評估網頁上各超連結的重要性。最後,GA報表中常見的「not set」,依據查看的報表不同,也有不同的含義:
1.「目標對象」的not set,可能是使用者以無痕模式瀏覽網頁或是使用白牌手機。
2.「客戶開發」的not set,utm_source和utm_medium參數設定錯誤。
3.「轉換」的not set,使用者在完成最終目標前,並沒按照設定的步驟走完所有的前置目標路徑。
看完「Google Analytics 疑難雜症大解惑」,基本上已經對GA大致的功能有初步的瞭解,再回頭查閱網路上相關的GA技術文章,像是https://www.webguide.nat.gov.tw/News_Content.aspx?n=531&s=2935,突然覺得豁然開朗,「Google Analytics 疑難雜症大解惑」確實是本讓人受益良多的好書。
2019年10月6日 星期日
Spark學習手冊
常常和同為軟體工程師的同事開玩笑,歐萊禮出版的書像是雞肋一樣,「食之無味、棄之可惜」。這樣的評論當然有失公道,畢竟和市面上其它專門出版資訊書的業者相比,歐萊禮的編譯品質一直深受信賴。(提外話,這本「Spark學習手冊」依舊有錯字和翻得不到位的句子,相較來說「Deep learning深度學習必讀:Keras大神帶你用Python實作」一書的品質令人驚豔)。不過編譯的水準和內文的定位是兩回事,歐萊禮的「動物系列」(封面都是採用稀有動物的素描)主打的是以「技術行家」為目標受眾,詳細羅列了包含設定、結構、函式、監控等面向的支微末節,讓有心對某技術想追根究底的人,可以輕易地邁起步伐前進,用不著大費周章地解讀原始碼(如果是開源技術)。
個人從事大數據開發,這兩年從原本熟悉的Hadoop平台逐漸地轉換到Spark平台,在研究開發階段,大部份是憑藉著閱讀多本電腦資訊書籍來學習Spark技術(當然還有Stack Overflow)。這本「Spark學習手冊」就是在那個時空背景下,放到我的購書清單裡。坦白說,「林大貴」的「Python+Spark 2.0+Hadoop機器學習與大數據分析實戰」是真正奠定我在Spark開發上的基礎能力。而後續的「大數據(Big Data)分析與應用:使用Hadoop與Spark」以及「Hadoop+Spark大數據巨量分析與機器學習整合開發實戰」則是溫故知新地加深我對此技術的體悟與熟練度。因此我在2019年的時點來翻閱這本「Spark學習手冊」,對於前半介紹的基礎觀念已經了然於心,難免會感覺書中的亮點有限。
「Spark學習手冊」全書內容有其它書籍不曾提到的系統參數值設定方法並說明參數所帶來的影響。然而當我嘗試在實務環境中使用這些參數去調校程式時,卻沒有顯著改善程式的執行效能。(又聯想到雞肋了)。總結來說「Spark學習手冊」還是值得收藏,因為它有針對Spark平台細節的參數具體說明,可以低輕開發人員去查閱官方文件的辛勞。(當然有時候去Google一下更快)。再者它針對Spark Streaming和Spark MLlib的介紹寫得相當淺顯易懂。這兩章節是個很好的起點,讓有興趣進一步研究的讀者,在還沒細讀串流分析以及機器學習的Spark專書前,可以透過「Spark學習手冊」的內文掌握核心觀念,有助於後續的專研。
2019年9月20日 星期五
Deep learning 深度學習必讀:Keras 大神帶你用 Python 實作
如果「TensorFlow+Keras深度學習人工智慧實務應用」是打開大門讓讀者走進Keras的玄關,那「Deep learning 深度學習必讀:Keras 大神帶你用 Python 實作」就是邀請我們走到Keras的客廳好好地聊天喝茶。本書作者「François Chollet」是Keras的原創者,講解Keras又有誰能比他更權威?初章詳實說明「人工智慧」、「機器學習」以及「深度學習」三者之間的相交關係,替讀者建立扎實的基礎觀念。像是「深度學習」的「深度」指的是神經網路擁有「二層以上」的神經層,有別於最早的單層神經網路。還有數學「微分」當用在多維空間時便稱為「梯度」,而「梯度下降」是反向傳播(Backpropagation)算法的運作原理。
第二章則用來補充神經網路中所需要瞭解的數學概念。對離開學校多年的社會人士而言,這樣的章節設計真的是有打到痛點。閱覽機器學習的書籍時,最怕看到一堆唸不出來的數學符號與公式,讓讀者不求甚解地翻完,卻沒學到有用的知識。相反地「Deep learning 深度學習必讀:Keras 大神帶你用 Python 實作」不羅列複雜的數學方程式,而是只補充對後續討論必須瞭解的數學算法(向量計算)。第三章一開始就讓讀者感受到Keras的威力,就像書封文案所說,透過短短六行程式碼,就已經建好一個能運作的神經網路模型。藉由作者巧思設計的範例,我們不費吹灰之力地使用了深度學習做出機器學習的典型應用「迴歸預測」。
接下來花了一個章節針對機器學習開發時種種的基礎知識進行介紹。包括「如何評估模型」、「資料的預處理」、「特徵工程」以及「過度擬合」等。在原作者以及編譯的高水準創作下,以深入淺出的文字具體而微地把這些觀念說清楚,相較之下市面上不少「機器學習」的教學書藉,在觀念部份都是語意不清地讓讀者摸不著頭緒。
五到八章算是第二篇的「深度學習應用範例」,恰好呈現「深度學習」與傳統「機器學習」最大的差異所在。我們可以說,這幾年的人工智慧浪潮,源自於神經網路在「視覺」、「圖像」以及「語音」辨識能力的驚人成績。而這些領域就是傳統「單純貝氏」、「支持向量機」和「隨機森林」等演算法表現不佳的領域。第五章的圖像處理、第六章的文字序列資料以及第八章的生成式神經網路,都是現今人工智慧運用的重點項目。隨著書中範例的一步步引導,讀者像學徒般已經被師傅領進門,站在這個基礎上再去打造自己的A.I.服務,讓我們面對人工智慧實作,不會再有霧裡看花的焦慮。
若硬要挑這本書的毛病,第七章有關「Keras函數式API」的內容,不像前面章節那樣提供由淺而深的引導式範例。以我個人而言,學到的內容可以說是囫圇吞棗,體會不到「函數式API」的精髓在那裡。另外第八章「生成式神經網路」的內容則是另一種問題。可能因為生成式深度學習的太過雜複,這章的範例不同於前面章節學到的Keras程式風格,程式碼的說明也草草帶過。歸究原因,VAE(變分自編碼器)以及GAN(生成對抗神經網路)原本就是很難理解的進階神經網路演算法。連作者都說光這兩個演算法本身就可以獨自出成一本書,作者嘗試只用一個章節的篇幅來介紹,是很難讓讀者理解演算法的全貌。雪上加霜的是,第八章的翻譯語句恰好變得不太流暢(有幾句怪怪的),添加了該章學習的困難度。
個人因為從事大數據開發,因而開啟了機器學習的研究之路,而近年來研究機器學習,又不得不去摸索深度學習的相關技術。對一位沒有相關學術背景的軟體工程師而言,能藉由Keras框架的簡潔、易用,來避開使用Tensorflow打造神經網路模型的高門檻,是一件幸運的事。隨著A.I.工具發展與普及,未來的人們能更輕鬆地打造出自己心中的人工智慧應用。相信Keras依舊扮演著重要的角色,而「Deep learning 深度學習必讀:Keras 大神帶你用 Python 實作」是當下你不可錯過的工具書。
2019年1月14日 星期一
Hadoop+Spark大數據巨量分析與機器學習整合開發實戰
「Hadoop+Spark大數據巨量分析與機器學習整合開發實戰」一書,算是姐妹作「Python+Spark 2.0+Hadoop機器學習與大數據分析實戰」的前身。就是藉由許多實作的練習,一步步教導讀者學會使用Spark平台進行大數據分析以及機器學習預測。
Hadoop HDFS、Hadoop Map/Reduce等大數據重要觀念也一併收入到書中。不誇張地說,只要好好研習書中介紹的技術並且詳加練習,讀者將在大數據以及機器學習上打下了穩固的基礎。依時序來看以Python 語言為主的「Python+Spark 2.0+Hadoop機器學習與大數據分析實戰」才是續作,也反映出目前業界在機器學習領域中,Python儼然成為非正規的標準語言,有最多人投入研習與實作。
諷刺地是我反倒是先看完「Python+Spark 2.0+Hadoop機器學習與大數據分析實戰」之後,才再看「Hadoop+Spark大數據巨量分析與機器學習整合開發實戰」這本書。主要原因是透過PySpark開發出來的預測系統在執行效能上不甚理想。透過Python轉Py4J最後在Spark上執行中Context Switch,讓程式運算耗掉太多轉換時間,對於建置線上預測系統而言,是一大致命傷。因此只要回過頭來研究如何用Scala語言來開發Spark機器學習,畢竟Scala號稱能比PySpark快上數倍。
對於不在意採用Scala來實作機器學習的人,這本書不遜於Python的那本續作。只是因為此書出版較早,所以重點多在解說Spark RDD,而在Spark Dataframe的章節相對不足。另外開發工具也建議採用IDEA,不要使用書中介紹的Eclipse(Spark plugin)這樣就沒問題了。
2018年9月23日 星期日
Python+Spark 2.0+Hadoop機器學習與大數據分析實戰
自從2014年同事J離職後,我開始接手大數據專案,機器學習的課題就始終三不五時的出現。畢竟大數據是機器學習成長的推手,也是外界眾多驚人應用的背景關鍵核心。為此也曾研究過Apache Mahout的專書,但試過幾個範例後總覺得Mahout的框架不夠簡潔,效能也不理想。加上那時候的推薦系統在應用上著重關聯規則算法,根本用不到機器學習裡典型的迴歸、分類、分群等演算法,所以也沒再多投入心力在相關技術的鑽研。
時至2018年,同事A和H開始研究起Apache Spark大數據平台,也在公司建置了Spark叢集進行機器學習的初步導入。我覺得時機剛好,推薦系統的應用已經步入成熟階段,後續可以來和同事一起研究先前未能確切理解的機器學習技術。「Python+Spark 2.0+Hadoop機器學習與數據分析實戰」,就是在這個背景下列入我的閱讀書單裡。
在開頭的章節中,先概略地提到Spark機器學習平台的相關技術,帶到書中後續要學習的各個單元。再來詳細說明如何建置一個可用來練習與實作的Hadoop平台。接著就用一連串淺顯易懂的範例練習來教導HDFS以及Map/Reduce運算的核心觀念。其中講述的內容與其它專論Hadoop的書籍相比毫不遜色,很適合想在短時間內掌握Hadoop平台原理的讀者。
中間章節開始介紹PySpark的開發工具IPython Notebook,這個工具真的讓人一用就會愛上,也是我目前最常使用的Python開發工具。另外也介紹了另一種基於Eclipse IDE的PyDev開發工具的解決方案。最後一次講齊PySpark平台上的三種執行模式與建置方法,讓讀者不用另外在網上搜尋平台建置細節。
在瞭解相關平台與工具後,中半段的內容就開始講述第一個機器學習案例,基於ALS演算法的推薦系統。再來就是一連串關於兩元分類、迴歸、多元分類的演算法介紹與範例練習,所有章節都有具體可行的執行範例也經過充分地講解說明。雖然書中缺少了分群演算法,但這本書是我目前看過最適合程式人員進入機器學習領域的入門書。不會使得工程師一頭陷入無止盡的演算法數學公式,而是讓人第一時間掌握具體機器學習具體的開發流程。從而引導出是否能有更進一步運用分類、迴歸算法到未來的專案中的可能性。
強烈推薦給每一位對機器學習有興趣也有心想動手做做看的工程師們~





