1. 程式人生 > >機器學習相關概念梳理

機器學習相關概念梳理

一,迴歸類問題

  • linear regression 線性迴歸

最主要的目的就是尋找某一現象發生的原因,預測,受單一變數影響

通過匹薩價格預測的例子介紹了一元線性迴歸,一個解釋變數和一個響應變數的線性擬合

這幾年我國的肺癌發生率一直在上升,是什麼原因引起的呢,如果我們目前只想考慮一個因素,比如菸草的銷量。那我們就可以粗略的看一下菸草的銷量是不是與肺癌的發生率呈線性關係.

總之,如果你發現了一種現象,又想探索這種現象背後的原因,就可以考慮採用迴歸分析。如果這種現象可以用連續型數值來描述的話,可以考慮採用線性迴歸。

一元線性迴歸擬合模型的引數估計常用方法是普通最小二乘法(ordinary least squares )或線性最小二乘法(linear least squares)。 首先,我們定義出擬合成本函式,然後對引數進行數理統計

  • multiple linear regression 多元線性迴歸

用於預測某類值,受多個變數影響

討論了多元線性迴歸,具有更一般形式的若干解釋變數和一個響應變數的問題

二,流式計算和批量計算的比較

  • 批量計算

目前絕大部分傳統資料計算和資料分析服務均是基於批量資料處理模型: 使用ETL系統或者OLTP系統進行構造資料儲存,線上的資料服務(包括Ad-Hoc查詢、DashBoard等服務)通過構造SQL語言訪問上述資料儲存並取得分析結果。這套資料處理的方法論伴隨著關係型資料庫在工業界的演進而被廣泛採用。但在大資料時代下,伴隨著越來越多的人類活動被資訊化、進而資料化,越來越多的資料處理要求實時化、流式化,當前這類處理模型開始面臨實時化的巨大挑戰。傳統的批量資料處理模型傳統的批量資料處理通常基於如下處理模型:

  1. 使用ETL系統或者OLTP系統構造原始的資料儲存,以提供給後續的資料服務進行資料分析和資料計算。即下圖,使用者裝載資料,系統將根據自己的儲存和計算情況,對於裝載的資料進行索引構建等一系列查詢優化工作。因此,對於批量計算,資料一定需要預先載入到計算系統,後續計算系統才在資料載入完成後方能進行計算。
  2. 使用者/系統主動發起一個計算作業(例如MaxCompute的SQL作業,或者Hive的SQL作業)並向上述資料系統進行請求。此時計算系統開始排程(啟動)計算節點進行大量資料計算,該過程的計算量可能巨大,耗時長達數分鐘乃至於數小時。同時,由於資料累計的不可及時性,上述計算過程的資料一定是歷史資料,無法保證資料的”新鮮”。使用者可以根據自己需要隨時調整計算SQL,甚至於使用AdHoc查詢,可以做到即時修改即時查詢。
  3. 計算結果返回,計算作業完成後將資料以結果集形式返回使用者,或者可能由於計算結果資料量巨大儲存著資料計算系統中,使用者進行再次資料整合到其他系統。一旦資料結果巨大,整體的資料整合過程漫長,耗時可能長達數分鐘乃至於數小時。

批量計算是一種批量、高時延、主動發起的計算。 使用者使用的批量計算的順序是:

  1. 預先載入資料;
  2. 提交計算作業,並且可以根據業務需要修改計算作業,再次提交作業;
  3. 計算結果返回

    • 流式計算

不同於批量計算模型,流式計算更加強調計算資料流和低時延,流式計算資料處理模型如下:

  1. 使用實時資料整合工具,將資料實時變化傳輸到流式資料儲存(即訊息佇列,如DataHub);此時資料的傳輸變成實時化,將長時間累積大量的資料平攤到每個時間點不停地小批量實時傳輸,因此資料整合的時延得以保證。
    此時資料將源源不斷寫入流資料儲存,不需要預先載入的過程。同時流計算對於流式資料不提供儲存服務,資料是持續流動,在計算完成後就立刻丟棄。

  2. 資料計算環節在流式和批量處理模型差距更大,由於資料整合從累積變為實時,不同於批量計算等待資料整合全部就緒後才啟動計算作業,流式計算作業是一種常駐計算服務,一旦啟動將一直處於等待事件觸發的狀態,一旦有小批量資料進入流式資料儲存,流計算立刻計算並迅速得到結果。同時,阿里雲流計算還使用了增量計算模型,將大批量資料分批進行增量計算,進一步減少單次運算規模並有效降低整體運算時延。從使用者角度,對於流式作業,必須預先定義計算邏輯,並提交到流式計算系統中。在整個執行期間,流計算作業邏輯不可更改!使用者通過停止當前作業執行後再次提交作業,此時之前已經計算完成的資料是無法重新再次計算。

  3. 不同於批量計算結果資料需等待資料計算結果完成後,批量將資料傳輸到線上系統;流式計算作業在每次小批量資料計算後可以立刻將資料寫入線上/批量系統,無需等待整體資料的計算結果,可以立刻將資料結果投遞到線上系統,進一步做到實時計算結果的實時化展現。

流計算是一種持續、低時延、事件觸發的計算作業。,使用者使用流計算的順序是:

  1. 提交流計算作業;;
  2. 提交流計算作業;
  3. 計算結果持續不斷對外寫出;

    • 模型對比
對比指標 批量計算 流式計算
資料整合方式 預先載入資料 實時載入資料實時計算
使用方式 業務邏輯可以修改,資料可重新計算 業務邏輯一旦修改,之前的資料不可重新計算(流資料易逝性)
資料範圍 對資料集中的所有或大部分資料進行查詢或處理 對滾動時間視窗內的資料或僅對最近的資料記錄進行查詢或處理
資料大小 大批量資料 單條記錄或包含幾條記錄的微批量資料
效能 幾分鐘至幾小時的延遲 只需大約幾秒或幾毫秒的延遲
分析 複雜分析 簡單的響應函式、聚合和滾動指標

三,分類

1,定義

  • 分類是資料探勘中應用非常廣泛的一項技術,利用分類演算法可以從資料集中提取描述資料類的一個函式或模型,並把資料集中的每個物件歸結到某個已知的類別中;
  • 從機器學習的觀點,分類屬於監督學習,每個訓練樣本的資料物件已經有類標識,通過學習可以形成表達資料物件與類標識間對應的知識;
  • 資料探勘的目標就是根據樣本資料形成的類知識並對資料進行分類,以預測未來資料的歸類。分類具有廣泛的應用,例如醫療診斷、信用卡的信用分級、影象模式識別、營銷使用者畫像等;
  • 分類挖掘所獲的分類模型可以採用多種形式加以描述輸出。其中主要的表示方法有:分類規則、決策樹、數學公式和神經網路等;

  • k 近鄰演算法

定義:(kNN,k-Nearest Neighbors)演算法是一種基於例項的分類方法;

描述:該方法就是找出與未知樣本x距離最近的k個訓練樣本,看這k個樣本中多數屬於哪一類,就把x歸為那一類。k-近鄰方法是一種懶惰學習方法,它存放樣本,直到需要分類時才進行分類,如果樣本集比較複雜,可能會導致很大的計算開銷,因此無法應用到實時性很強的場合。

  • 決策樹

定義:決策樹是用於分類和預測的主要技術之一,決策樹學習是以例項為基礎的歸納學習演算法,它著眼於從一組無次序、無規則的例項中推理出以決策樹表示的分類規則

描述:構造決策樹的目的是找出屬性和類別間的關係,用它來預測將來未知類別的記錄的類別。它採用自頂向下的遞迴方式,在決策樹的內部節點進行屬性的比較,並根據不同屬性值判斷從該節點向下的分支,在決策樹的葉節點得到結論。主要的決策樹演算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT演算法等。它們在選擇測試屬性採用的技術、生成的決策樹的結構、剪枝的方法以及時刻,能否處理大資料集等方面都有各自的不同之處

  • 樸素貝葉斯

定義: 貝葉斯(Bayes)分類演算法是一類利用概率統計知識進行分類的演算法,如樸素貝葉斯(Naive Bayes)演算法

描述: 這些演算法主要利用Bayes定理來預測一個未知類別的樣本屬於各個類別的可能性,選擇其中可能性最大的一個類別作為該樣本的最終類別。由於貝葉斯定理的成立本身需要一個很強的條件獨立性假設前提,而此假設在實際情況中經常是不成立的,因而其分類準確性就會下降。為此就出現了許多降低獨立性假設的貝葉斯分類演算法,如TAN(Tree Augmented Na?ve Bayes)演算法,它是在貝葉斯網路結構的基礎上增加屬性對之間的關聯來實現的。

  • 支援向量機

定義:支援向量機(SVM,Support Vector Machine)是Vapnik根據統計學習理論提出的一種新的學習方法;

描述:它的最大特點是根據結構風險最小化準則,以最大化分類間隔構造最優分類超平面來提高學習機的泛化能力,較好地解決了非線性、高維數、區域性極小點等問題。對於分類問題,支援向量機演算法根據區域中的樣本計算該區域的決策曲面,由此確定該區域中未知樣本的類別;

  • 人工神經網路

定義:人工神經網路(Artificial Neural Networks,ANN)是一種應用類似於大腦神經突觸聯接的結構進行資訊處理的數學模型。

描述:在這種模型中,大量的節點(或稱”神經元”,或”單元”)之間相互聯接構成網路,即”神經網路”,以達到處理資訊的目的。神經網路通常需要進行訓練,訓練的過程就是網路進行學習的過程。訓練改變了網路節點的連線權的值使其具有分類的功能,經過訓練的網路就可用於物件的識別。
目前,神經網路已有上百種不同的模型,常見的有BP網路、徑向基RBF網路、Hopfield網路、隨機神經網路(Boltzmann機)、競爭神經網路(Hamming網路,自組織對映網路)等。但是當前的神經網路仍普遍存在收斂速度慢、計算量大、訓練時間長和不可解釋等缺點;

  • 基於關聯規則的分類

定義: 關聯規則挖掘是資料探勘中一個重要的研究領域;

描述: 近年來,對於如何將關聯規則挖掘用於分類問題,學者們進行了廣泛的研究。關聯分類方法挖掘形如condset→C的規則,其中condset是項(或屬性-值對)的集合,而C是類標號,這種形式的規則稱為類關聯規則(class association rules,CARS)。關聯分類方法一般由兩步組成:第一步用關聯規則挖掘演算法從訓練資料集中挖掘出所有滿足指定支援度和置信度的類關聯規則;第二步使用啟發式方法從挖掘出的類關聯規則中挑選出一組高質量的規則用於分類。屬於關聯分類的演算法主要包括CBA[44] ,ADT[45] ,CMAR[46] 等

  • 整合學習(Ensemble Learning)

定義:實際應用的複雜性和資料的多樣性往往使得單一的分類方法不夠有效;

描述: 學者們對多種分類方法的融合即整合學習進行了廣泛的研究。整合學習已成為國際機器學習界的研究熱點,並被稱為當前機器學習四個主要研究方向之一。
整合學習是一種機器學習正規化,它試圖通過連續呼叫單個的學習演算法,獲得不同的基學習器,然後根據規則組合這些學習器來解決同一個問題,可以顯著的提高學習系統的泛化能力。組合多個基學習器主要採用(加權)投票的方法,常見的演算法有裝袋[47] (Bagging),提升/推進[48, 49] (Boosting)等。
有關分類器的整合學習見圖2-5。整合學習由於採用了投票平均的方法組合多個分類器,所以有可能減少單個分類器的誤差,獲得對問題空間模型更加準確的表示,從而提高分類器的分類準確度;

  • 選擇各種分類演算法的主要評判依據:

    1. 預測的準確率。模型正確地預測新樣本的類標號的能力;
    2. 算速度。包括構造模型以及使用模型進行分類的時間;
    3. 強壯性。模型對噪聲資料或空缺值資料正確預測的能力;
    4. 可伸縮性。對於資料量很大的資料集,有效構造模型的能力;
    5. 模型描述的簡潔性和可解釋性。模型描述愈簡潔、愈容易理解,則愈受歡迎。

2,分類技術應用中的過度擬合問題

分類技術應用中的過度擬合問題
你有一份資料,通過這份資料構建模型,過度擬合就是說你的模型過度的提取了這份樣本資料的特徵,將此模型進行應用其他資料時會出現準確性並不高。
也及一個假設在訓練資料上能夠獲得比其他假設更好的擬合,但是在訓練資料外的資料集上卻不能很好的擬合數據;

過度擬合產生的原因:

  1. 噪聲資料導致過度擬合;
  2. 缺乏代表性樣本導致過度擬合;

免過度擬合的策略:提前停止樹的增長或者對已經生成的樹按照一定的規則進行後剪枝。

四,聚類

1,定義

  • 聚類與分類的不同在於,聚類所要求劃分的類是未知的。聚類的目的是使得屬於同類別的物件之間的差別儘可能的小,而不同類別上的物件的差別儘可能的大。因此,聚類的意義就在於將觀察到的內容依據相應演算法組織成類分層結構,把類似的事物組織在一起;
  • 與分類技術不同,在機器學習中,聚類是一種無監督學習。也就是說,聚類是在預先不知道欲劃分類的情況下,根據資訊相似度原則進行資訊聚類的一種方法。通過聚類,人們能夠識別密集的和稀疏的區域,因而發現全域性的分佈模式,以及資料屬性之間的有趣的關係;
  • 從統計學的觀點看,聚類分析是通過資料建模簡化資料的一種方法。常見的聚類演算法包括:K-均值聚類演算法、K-中心點聚類演算法、層次聚類、DBScan、EM聚類、層次聚類等。聚類分析廣泛應用於金融、營銷、電力、交通、教育等多種行業領域;
  • 聚類分析是一種探索性的分析,在分類的過程中,人們不必事先給出一個分類的標準,聚類分析能夠從樣本資料出發,自動進行分類。聚類分析所使用方法的不同,常常會得到不同的結論。不同研究者對於同一組資料進行聚類分析,所得到的聚類數未必一致;

2,分類與聚類的對比

分類

  • 分類屬於監督學習;
  • 這些類別是已知的,通過對已知分類的資料進行訓練和學習,找到這些不同類的特徵,再對未分類的資料進行分類;
  • 根據文字的特徵或屬性,劃分到已有的類別中;

聚類

  • 聚類屬於無監督學習;
  • 壓根不知道資料會分為幾類(研究人員可以指定聚類數),通過聚類分析將資料聚合成幾個群體;
  • 需要分析人員找出各類使用者的重要特徵;
  • 需要通過各類別的特徵解釋含義以及為各類別命名;

3,總結分類和聚類

在實際應用中,除了二者的獨立應用外,兩種技術的結合應用有更大的實踐價值。尤其在大資料時代背景下,資訊隱藏在雜亂的資料裡,需要綜合多種資料探勘方法以獲取足夠的資訊。分類技術針對於已知分類,對於未知分類的資料則需要聚類技術的輔助

4,四種常用聚類演算法研究

  • k-means聚類演算法

k-means是劃分方法中較經典的聚類演算法之一。由於該演算法的效率高,所以在對大規模資料進行聚類時被廣泛應用。目前,許多演算法均圍繞著該演算法進行擴充套件和改進。

k-means演算法以k為引數,把n個物件分成k個簇,使簇內具有較高的相似度,而簇間的相似度較低。

  • 層次聚類演算法

根據層次分解的順序是自底向上的還是自上向下的,層次聚類演算法分為凝聚的層次聚類演算法和分裂的層次聚類演算法。

凝聚型層次聚類的策略是先將每個物件作為一個簇,然後合併這些原子簇為越來越大的簇,直到所有物件都在一個簇中,或者某個終結條件被滿足。絕大多數層次聚類屬於凝聚型層次聚類,它們只是在簇間相似度的定義上有所不同

  • SOM聚類演算法

SOM神經網路[11]是由芬蘭神經網路專家Kohonen教授提出的,該演算法假設在輸入物件中存在一些拓撲結構或順序,可以實現從輸入空間(n維)到輸出平面(2維)的降維對映,其對映具有拓撲特徵保持性質,與實際的大腦處理有很強的理論聯絡

SOM網路包含輸入層和輸出層。輸入層對應一個高維的輸入向量,輸出層由一系列組織在2維網格上的有序節點構成,輸入節點與輸出節點通過權重向量連線。 學習過程中,找到與之距離最短的輸出層單元,即獲勝單元,對其更新。同時,將鄰近區域的權值更新,使輸出節點保持輸入向量的拓撲特徵

  • FCM聚類演算法

>

1965年美國加州大學柏克萊分校的扎德教授第一次提出了‘集合’的概念。經過十多年的發展,模糊集合理論漸漸被應用到各個實際應用方面。為克服非此即彼的分類缺點,出現了以模糊集合論為數學基礎的聚類分析。用模糊數學的方法進行聚類分析,就是模糊聚類分析[12]。
FCM演算法是一種以隸屬度來確定每個資料點屬於某個聚類程度的演算法。該聚類演算法是傳統硬聚類演算法的一種改進

五,推薦 recommendation

基於使用者(user-based)和基於物品(item-based)兩種

  • 基於物品的推薦,slope-one 演算法
  • 分散式推薦
  • 基於使用者的推薦,協同過濾,collaborative filtering