商業智慧 === ###### tags: `Notes` ## 第二章 - 資料前處理 - 在現實世界中資料往往無法直接使用,資料中可能含有噪音、可能不完整或者有缺漏,因此在訓練模型前將資料整理乾淨便成了非常重要的任務。 本章節大致介紹了幾種常見的資料前處理方法,對於不同樣貌的資料有不同的處理方式;針對缺漏值進行補值、使用統計方法或KNN找出離群值並剔除、對資料進行正規化...等等,面對不同的問題需要以相應的解決方法來應對。 而當資料過於雜亂,難以進行分析時,可以透過特徵篩選方法來精簡資料、對資料進行降維。然而特徵篩選和資料降維並不是同一件事情,特徵篩選是透過不同的方法篩選出原本資料集中的特徵,不涉及對資料的轉變;而資料降維如PCA等方法則是創造出特徵的新組合。 特徵篩選主要包含過濾法、包裹法和嵌入法。 - 過濾法:顧名思義就是將不同的特徵過濾出來,透過不同標準查看各特徵之間的關聯程度後將其篩選出來。 - 包裹法:選定一個算法後將不同的特徵組合丟入後檢視成果,可以由少加到多也有由多減到少的作法,最後找出結果最佳的組合。 - 嵌入法:類似正規化的概念,透過不同的正規化方式將部分特徵的權重值變成零,而達到特徵篩選的功能。 以上三者特性不同,其解決方法的方式也有所異,過濾法是在模型訓練之前先挑出各種特徵組合,此時資料並未參與訓練;包裹法則是在各種特徵組合訓練完後比較其成果;而嵌入法則是一邊訓練模型,一邊篩選出特徵。 而資料降維所做的事情則是將一個具有n個特徵空間的樣本,轉換維僅具有m個特徵空間的樣本,並且m<n,而其中較著名的方法有PCA、LDA、T-SNE...等等方法。 - PCA:對標準化的資料建立共變異數矩陣,之後利用奇異值分解求特徵向量及特徵值,之後選取n個特徵值與特徵向量,並把原本的資料映射到該特徵向量上,得到新的特徵數。該方法為直觀的線性降維,若特徵之間非呈線性關係,使用該法所得之結果可能在模型上欠擬和。 - T-SNE:此方法更為複雜,總之是一種迭代訓練的非線性降維法,主要輔助我們視覺化地理解特徵分布。 第二章介紹了許多資料前處理著名的方法,在進行資料分析時往往花費最多時間的便是資料前處理的部分,因好的資料品質一定程度決定了訓練結果的好壞,因此如何對資料進行操作便是非常重要的學問。 ## 第三章 - 基礎分類方法 - 第三章主要內容在介紹決策樹及過擬合問題,決策樹是一種解釋性很高的分類模型,像一棵樹一般,從樹根開始將資料的特徵進行分割,而其分割的依據是Information Gain,期望在分割後能得到最大的IG,而常見的IG又分為Entropy及Gini不純度;根據不同算法又分為許多種類如C4.5、ID3、CART......等等。不同種算法間各有異同,而許多算法被提出則是用來解決先前算法所存在的問題,或者對於已存算法無法解決的問題之解決方法,大致可以用分支度、支援的數據類型(ordinal、nominal)、算法的速度等等的差別來進行區分,而他們對不同規模的數據量之適應性也相對有差別,若要細究,可以是一門獨立的課程。 - 而關於過擬合問題,簡單理解之就是模型過度地學習了,造成模型過擬合的原因很多,無論是資料量太少、模型過於複雜、參數過多等等,都可能是造成過擬合的原因。要解決過擬合的問題必須從問題的根源著手。在決策樹中,解決過擬合的方法大致分為預修剪(pre prunning)和事後修剪(post prunning)。預先修剪可以理解為我們所熟知的early stopping,在模型長成最終模樣前就停止他的學習,在實作上可以藉由查看Gini不純度是否不再改善。事後修剪則是任其生長,然後自底向上的對非葉節點進行檢驗,若將該節點對應的sub tree換為葉節點能夠帶來性能的提升,則把該sub tree替換為葉節點。 - 簡單紀錄決策樹的優缺點,其優點為所建構的結果非常直觀,符合人的邏輯,可解釋性非常高,在參數上也無需過多調整。而其缺點是其過擬合的可能性很高,且當要分許多類別時,計算就會變得非常複雜。 ## 第四章 - 關聯規則 - 當提到關聯規則,就不能不提到最著名的啤酒尿布案例,以及有名的Apriori算法。在關聯規則中重要的兩項指標為支持度(Support)以及信賴度(Confidence),支持度可理解為出現的頻率,如在10筆交易資料中含有5筆購買啤酒的交易紀錄,則啤酒的支持度則為50%;信賴度則是指兩個商品間的條件機率,即在購買A的情況下,B也被購買的機率值。 - Apriori解決方法的概念是採用迭代的方法搜尋出項集中各Item支持度,並剪去小於最小支持度的集合,得到新的集合後再剪去該集合中小於最小支持度的集合、直到找不到可剪的集合為止。 - 而Apriori中有幾項定律,其一是找出各種集合{A,B},當集合{A,B}大於預先設定好的最小支持度,則他的子集{A}和{B}出現的次數必定大於等於最小支持度,其二則是當集合{A}出現次樹小於最小支持度,則他任何的集合{A,B}、{A,C}......等等出現的次數必定小於最小支持度。 - 在學習Apriori時最好的方法是搭配實例逐步學習該算法的思路,在[Apriori Algorithm — Know How to Find Frequent Itemsets](https://medium.com/edureka/apriori-algorithm-d7cc648d4f1e)文中清楚地解釋了Apripori在找出項目集中的關聯時之歷程,在該文的圖文帶領之下可以更快理解這個著名的關聯規則算法。 ## 第五章 - 分群 - 分群是在資料探勘中也很有名的一項任務,透過分群可以將資料區分為不同群體,各群體間的相似性高而相異於不同的其他群體,透過分群可以有效將龐大的資料進行先一步的整理。 - 計算相似性的方法非常多種,常見如歐式距離、明氏距離...等等,而分群的方法也非常多樣,藉由不同的思路區分出非常多種分群法,有明顯分離(well seperated)的分群法、基於中心的分群法(center based)、基於圖的(graph based)、基於密度的(Density based)......等等。 - 明顯分離: 不同群間任意兩點的距離都大於群內任意兩點的距離。 - 基於中心: 每群中都會有一個中心,而群中各值到該群的中心距離會比到其他群還要來得更近。 - 基於圖: 各資料點可想像為一個節點,而邊則是資料點間的關係,各群中的資料點會互相連通,但不相連到其他群的點。 - 基於密度: 每個群都有資料密度高的特性。 其他還有概念性如Conceptual的分群方法等等。 - 而分群中重要的算法則是K-means,k-means算法中的k可以隨意定義,端看要分為幾群。在K means中可以簡單分為以下步驟 - 1、設定好要分幾群(k) - 2、在特徵空間中找出k個資料中心點 - 3、所有資料都會計算與這k個資料中心點的距離 - 4、將每筆資料分到最近的群中 - 5、分完之後,根據分到的這些資料再計算出新的中心點 - 重複3~5直到收斂 - k-means簡單好懂,但存在一些問題,如各群實際size不同時,透過k means會分為尺寸相近的資料群;或者當各群實際上有重疊時,k means無法進行區分以及各群實際形狀不是圓形時,k means也會將其分為接近圓形的群。 - 而另一種分群法為DBSCAN則是一種基於密度的分群法,藉由資料密度的判斷,可以有效找出離群點而不將他們分入群內。在使用DBSCAN時所要設定的參數為eps及min_pts,前者代表的是以該eps為半徑劃分出的圓形為該eps區域,後者則是設定構成一個群所要求的最少資料數。找出每個資料點的eps區域中資料數目是否滿足最小資料量,若是則分為一群;但若在資料點eps區域中並未滿足最小資料量的條件,該點卻已在群中的話,亦會分入該群。 - DBSCAN對應於k means可以解決不同型態的資料,也不需要設定所要分成的k個群;然而當資料間的分布狀態有不同的密度並且差異很大,同一數值的eps值就無法有效分群,且該eps資料也需要人為先備對該資料集的理解才可以設定得好。 ## 第六章 - 進階分類 - 該章節介紹了更多不同的分類器,從KNN、貝氏分類器、邏輯斯回歸到深度學習等等,每個分類器的發展都是不同的思路。 - KNN較易理解,透過找出「k」個最近的「鄰居」來決定心的資料應該被分為什麼類。具體來說,當有新的無標籤資料進入資料集中,我們便算出這個資料與所有資料的距離,找到最近的k個資料點,看在這k個資料點中,哪一個分類的標籤比較多,我們就將這個新資料點分給這一類。KNN有個硬傷就是資料量大時計算量非常大,再者對於不平衡資料集中小樣本的預測能力十分弱。 - 貝氏分類器: 貝氏分類器基於高中學過的貝氏定理,簡言之是透過條件機率來預測資料的類別,舉例來說,當我們看到郵件內容含有XX周年慶時,會預測該信件為垃圾郵件,因為先驗的機率上,我們所收到大部分含有XX周年慶的信件都是垃圾郵件。換句話說,貝氏分類器是透過各事件在不同組合下發生的機率來判定該筆新資料屬於哪一個類別。 - 邏輯斯回歸: 邏輯斯回歸主要在預測「會不會」、「是不是」的問題,如借一個人錢他會不會還?客人會不會回購?相比一般的回歸問題在找到一條線,使資料點盡量靠近這條線,邏輯斯回歸一樣是在找這條線,盡可能以這條線區分出兩個類別。邏輯斯回歸藉由對Odds ratio取對數來建立回歸方程式,並透過sigmoid函數對ln(odds ratio)進行轉換,便可以得到一個介於[0,1]的機率值進而做預測。 接著需要提到一下反向傳遞法和梯度下降法,相關的知識在網路上已有許多精闢的講解,而對於深度學習來說這兩個先備知識都只算是使用深度模型的入門磚,簡單來說,深度模型在層層相連的情況之下,透過反向傳遞(主要基於chain rule)來逐步調整各層神經元中的參數,而調整方式則是透過梯度下降法,梯度下降法主要用於找出cost function的局部最小值(算斜率的概念),根據學習率,梯度下降的走速也會有所不同。 - 捲積: 捲積的概念很好理解,也是近來熱門的研究項目之一,其運作方式就像許多片濾鏡滑過資料,透過更新這片濾鏡的權重來找到使分類結果最好的值,除了在圖像上,於文字領域中也已有許多的實現。 - SVM: 中文翻譯為支援向量機,旨在找到一個「Margin」最大的方程,使其可以最好地區隔不同類別的資料。SVM最大的貢獻在於其可以分類非線性的資料,簡述其流程,透過一個核函式,將資料點映射到高維空間中,此時找出不同類別中的support vector使得分割超平面的margin最大化,便得到了最終的分割超平面。以上雖然很抽象,但搭配圖例解釋的話便會較容易理解一點。 本章節大致介紹了各種主流、常見的分類器,以及對於NN概念進行初步的解說,大多數分類器都需要大量數學推導或具備古典機率、線性代數的知識才會更好理解,若無法完全理解其中奧妙,至少也需要知道這些分類器解決問題的思路,以及可以應用之處。 ## 第七章 - 關聯規則的延伸 本章節介紹進階於第四章基礎篇的進階關聯規則,主要可用於連續性的資料,找出其中的關聯(如網頁訪問的時序關係圖),而要處理這類資料前,必須先對其進行各類的資料前處理,例如將資料區間化,或定義為新的資料類別...等等。 在處理這類資料時,主要分為四類不同的解決策略,分別為階層式的概念、時序間的模式、圖論中子圖的概念、以及非頻繁的模式。在階層式概念中,起因於過低階層的關聯可能無法提供太大的幫助,且過低階的關連可能導致類似過擬合的情況。時序模式則是找出相同時序中,不同使用者所產生的相同事件,並在之後的時序中亦找到相同的其他事件,則這兩事件間便有可能有關聯。而圖法則是應對資料以node、edge關係呈現的情況,透過不同的subgraph可以找出可能的關聯,此部分可能需要一些圖論的概念才能較好地理解。最後是非頻繁的模式,這類方法主要是要找出negative的關聯,即A出現會造成B出現的機率降低的情況。 本章節對於數學上的理解並不需要太多,但必須清楚對於連續性或categorical類型的資料必須如何應對,以及各種應對方式需要使用的場合以及方法。 ## 第八、九章 - 進階分群 本章節介紹了許多較進階的分群方法,中心法(原型法)中介紹了EM(非常近似於K means,細節部分稍有不同)、Fuzzy c-means(資料不再被硬性分到群中,而是以不同的機率呈現在各群中出現的可能性)、SOM(神經網路的結構,只有輸入和輸出層,透過競爭學習的方式來更新權重)。而其他種的方法由於細節較多,還未完全整理清楚。總的來說,雖然各類算法很多種,但面對不同資料時仍需要許多專業知識才可以判斷使用哪種算法可能可以得到較佳的結果,對於不同算法的特性都應有基本程度的掌握才可以應用得當。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up