官术网_书友最值得收藏!

1.4 機器學習算法

機器學習算法是一類通過自動分析從數據中獲得規律,并利用規律對未知數據進行預測的算法,可以分成有監督學習、無監督學習、強化學習等類別。

(1)有監督學習是從有標記(注)的訓練數據中學習一個模型,然后根據這個模型對未知樣本進行預測。其中,模型的輸入是某一樣本的特征,函數的輸出是這一樣本對應的標簽。常見的有監督學習算法包括回歸分析和統計分類。有監督學習包括分類和數字預測兩大類別,前者包括邏輯回歸、決策樹、KNN、隨機森林、支持向量機、樸素貝葉斯等,后者包括線性回歸、KNN、梯度提升(Gradient Boosting)和自適應提升(Adaptive Boosting AdaBoost)等。

(2)無監督學習又稱為非監督學習,它的輸入樣本并不需要標記,而是自動從樣本中學習特征實現預測。常見的無監督學習算法有聚類和關聯分析等,在人工神經網絡中,自組織映像(Self-Organization Mapping,SOM)和適應諧振理論(Adaptive Resonance Theory,ART)是最常用的無監督學習。

(3)強化學習是通過觀察來學習做什么樣的動作。每個動作都會對環境有所影響,智能體根據觀察到的周圍環境的反饋來做出判斷。強化學習強調與環境交互學習合適的行動策略,以取得最大化的預期利益。其靈感源于心理學中的行為主義理論,即有機體如何在環境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預期,產生能獲得最大利益的習慣性行為。

根據機器學習的任務分類,常見機器學習任務可以分為分類、聚類、回歸等類型。某些機器學習算法可能同時屬于不同的分類,如深度學習算法可能存在于有監督學習,也可能用于強化學習,在實踐過程中可依據實際需要進行選擇。

熟悉各類分析方法的特性是分析方法選擇的基礎,不僅需要了解如何使用各類分析算法,還要了解其實現的原理,這樣在參數優化和模型改進時可減少無效的調整。在選擇模型之前要對數據進行探索性分析,了解數據類型和數據特點,發現各自變量之間的關系以及自變量與因變量的關系。特別注意,在維度較多時容易出現變量的多重共線性問題,可應用箱圖、直方圖、散點圖查找其中的規律性信息。

模型選擇過程中先選出多個可能的模型,然后對其進行詳細分析,并選擇其中可用于分析的模型,在選擇自變量時,大多數情況下需要結合業務來手動選擇自變量。在選擇模型后,比較不同模型的擬合程度,可統計顯著性參數、R2、調整R2、最小信息標準、BIC和誤差準則、Mallow's Cp準則等。在單個模型中可將數據分為訓練集和測試集,用來做交叉驗證并分析結果的穩定性。反復調整參數使模型趨于穩定和高效。

1.分類算法

分類算法是應用分類規則對記錄進行目標映射,將其劃分到不同的分類中,構建具有泛化能力的算法模型,即構建映射規則來預測未知樣本的類別。分類算法包括預測和描述兩種,經過訓練集學習的預測模型在遇到未知記錄時,應用規則對其進行類別劃分,而描述型的分類主要對現有數據集中特征進行解釋并進行區分,例如對動植物的各項特征進行描述,并進行標記分類,由這些特征來決定其屬于哪一類目。

主要的分類算法包括決策樹、支持向量機(Support Vector Machine,SVM)、KNN、貝葉斯網絡(Bayesian Network)和神經網絡等。

(1)決策樹

顧名思義,決策樹是一棵用于決策的樹,目標類別作為葉節點,特征屬性的驗證作為非葉節點,而每個分支是特征屬性的輸出結果。決策樹擅長對人物、位置、事物的不同特征、品質、特性等進行評估,可應用于基于規則的信用評估、比賽結果預測等。決策過程是從根節點出發,測試不同的特征屬性,按照結果的不同選擇分支,最終落到某一葉節點,獲得分類結果。主要的決策樹算法有ID3、C4.5、C5.0、分類回歸樹(Classification And Regression Tree,CART)、卡方自動交互檢測(Chi-squared Automatic Interaction Detectin,CHAID)等,還有以這些算法為基礎的集成算法,例如隨機森林、梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)、AdaBoost、極端梯度提升(eXtreme Gradient Boosting,XGBoost)、輕量梯度提升機(Light Gradient Boosting Machine,LightGBM)等。

決策樹的構建過程是按照屬性的優先級或重要性來逐漸確定樹的層次結構,使其葉節點盡可能屬于同一類別,一般采用局部最優的貪心策略來構建決策樹。決策樹算法將在第3章介紹。

(2)SVM

SVM是由瓦普尼克(Vapnik)等人設計的一種分類器,其主要思想是將低維特征空間中的線性不可分進行非線性映射,轉化為高維空間的線性可分。此外,應用結構風險最小理論在特征空間優化分割超平面,可以找到盡可能寬的分類邊界,特別適合二分類的問題,例如,在二維平面圖中某些點是雜亂排布的,無法用一條直線將其分為兩類,但是在三維空間中,可能通過一個平面將其劃分。

為了避免在低維空間向高維空間轉化的過程中增加計算復雜性和“維度災難”,SVM應用核函數,不需要關心非線性映射的顯式表達式,直接在高維空間建立線性分類器,優化了計算復雜度。SVM常見的核函數有線性核函數、多項式核函數、徑向基函數和二層神經網絡核函數等。

SVM的目標變量以二分類最佳,雖然可以用于多分類,但效果不好。與其他分類算法相比, SVM對小樣本數據集的分類效果更好。

SVM將在第8章中詳細介紹。

(3)KNN

對樣本應用向量空間模型表示,將相似度高的樣本分為一類,對新樣本計算與之距離最近(最相似)的樣本的類別,那么新樣本就屬于這些樣本中類別最多的那一類。可見,影響分類結果的因素分別為距離計算方法、近鄰的樣本數量等。

KNN 算法支持多種相似度距離計算方法:歐氏距離(Euclidean Distance)、曼哈頓距離(Manhattan Distance)、切比雪夫距離(Chebyshev Distance)、閔可夫斯基距離(Minkowski Distance)、標準化歐氏距離(Standardized Euclidean Distance)、馬氏距離(Mahalanobis Distance)、巴氏距離(Bhattacharyya Distance)、漢明距離(Hamming Distance)、夾角余弦(Included Angle Cosine)、杰卡德相似系數(Jaccard Similarity Coefficient)、皮爾遜相關系數(Pearson Correlation Coefficient)。

KNN算法的主要缺點有:①在各分類樣本數量不平衡時誤差較大;②由于每次比較要遍歷整個訓練樣本集來計算相似度,因此分類的效率較低,時間和空間復雜度較高;③近鄰的數量選擇不合理可能會導致結果的誤差較大;④在原始近鄰算法中沒有權重的概念,所有特征采用相同的權重參數,這樣計算出來的相似度易產生誤差。

(4)貝葉斯網絡

貝葉斯網絡又被稱為信念網絡(Belief Network),是基于貝葉斯定理繪制的具有概率分布的有向弧段圖形化網絡,其理論基礎是貝葉斯公式,網絡中的每個點表示變量,有向弧段表示兩者間的概率關系。

與神經網絡相比,貝葉斯網絡中的節點都具有實際的含義,節點之間的關系比較明確,可以從貝葉斯網絡中直觀看到變量之間的條件獨立和依賴關系,可以進行結果和原因的雙向推理。在貝葉斯網絡中,隨著網絡中節點數量的增加,概率求解的過程非常復雜并難以計算,因此在節點數較多時,為減少推理過程和降低復雜度,一般選擇樸素貝葉斯算法或推理的方式實現以減少模型復雜度。

貝葉斯網絡將在本書第7章中詳細介紹。

(5)神經網絡

神經網絡包括輸入層、隱層、輸出層,每一個節點代表一個神經元,節點之間的連線對應權重,輸入變量經過神經元時會運行激活函數,對輸入值賦予權重并加上偏置,將輸出結果傳遞到下一層中的神經元,而權重和偏置在神經網絡訓練過程中不斷修正。

神經網絡的訓練過程主要包括前向傳輸和逆向反饋,將輸入變量逐層向前傳遞最后得到輸出結果,并對比實際結果,逐層逆向反饋誤差,同時對神經元中權重和偏置進行修正,然后重新進行前向傳輸,依此反復迭代直到最終預測結果與實際結果一致或在一定的誤差范圍內。

與神經網絡相關的基礎概念有感知機、BP算法、霍普菲爾德神經網絡、SOM、學習矢量量化等,這些概念將在本書第6章中詳細說明。

BP神經網絡結果的準確性與訓練集的樣本數量和質量有關,如果樣本數量過少可能會出現過擬合的問題,無法泛化新樣本;而且BP神經網絡對訓練集中的異常點比較敏感,需要分析人員對數據做好預處理,例如數據標準化、去除重復數據、移除異常數據等,從而提高BP神經網絡的性能。

由于神經網絡是基于歷史數據構建的模型,因此,隨著新的數據不斷產生,需要進行動態優化,例如隨著時間變化,應用新的數據對模型進行重新訓練,調整網絡的結構和參數值。

神經網絡相關內容將在本書第6章中詳細介紹。

2.聚類算法

聚類是基于無監督學習的分析模型,不需要對原始數據進行標記,按照數據的內在結構特征進行聚集形成簇群,從而實現數據的分離。聚類與分類的主要區別是其并不關心數據是什么類別,而是把相似的數據聚集起來形成某一類簇。

在聚類的過程中,首先選擇有效特征構成向量,然后按照歐氏距離或其他距離函數進行相似度計算,并劃分聚類,通過對聚類結果進行評估,逐漸迭代生成新的聚類。

聚類應用領域廣泛,可以用于發現不同的企業客戶群體特征、消費者行為分析、市場細分、交易數據分析、動植物種群分類、醫療領域的疾病診斷、環境質量檢測等,還可用于互聯網和電商領域的客戶分析、行為特征分類等。在數據分析過程中,可以先用聚類對數據進行探索,發現其中蘊含的類別特點,然后用分類等方法分析每一類的特征。

聚類方法可分為基于層次的聚類、基于劃分的聚類、基于密度的聚類、基于約束的聚類、基于網絡的聚類等。

基于層次的聚類是將數據集分為不同的層次,并采用分解或合并的操作進行聚類,主要包括BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies,利用層次方法的平衡迭代歸約和聚類)、CURE(Clustering Using Representatives,使用代表點聚類)等。

基于劃分的聚類是將數據集劃分為k個簇,并對其中的樣本計算距離以獲得假設簇中心點,然后以簇的中心點重新迭代計算新的中心點,直到 k 個簇的中心點收斂為止。基于劃分的聚類有k-均值等。

基于密度的聚類根據樣本的密度分布不斷產生聚類,最終形成一組“密集連接”的點集,其核心思想是只要數據的密度大于閾值就將其合并成一個簇,可以過濾噪聲,聚類結果可以是任意形狀,不必為凸形。基于密度的聚類方法主要包括DBSCAN(Density-Based Spatial Clustering of Application with Noise,基于密度的有噪聲的應用空間聚類)、OPTICS(Ordering Points To Identify the Clustering Structure,識別聚類結構的排序點)等。

(1)BIRCH算法

BIRCH算法是指利用層次方法來平衡迭代歸約和聚類,它只需要掃描數據集一次便可實現聚類。它利用了類似B+樹的結構對樣本集進行劃分,葉節點之間用雙向鏈表進行連接,逐漸對樹的結構進行優化獲得聚類。

BIRCH算法的主要優點是空間復雜度低,內存占用少,效率較高,能夠對噪聲點進行濾除。缺點是其樹中節點的聚類特征樹有個數限制,可能會產生與實際類別個數不一致的情況;而且對樣本有一定的限制,要求數據集的樣本是超球體,否則聚類的效果不佳。

(2)CURE算法

傳統的基于劃分的聚類方法得到的是凸形的聚類,對異常數據較敏感,而CURE算法是使用多個代表點來替換聚類中的單個點,算法更加穩健。另外,在處理大數據時采用分區和隨機取樣,使其處理大數據量的樣本集時效率更高,且不會降低聚類質量。

(3)k-均值算法

傳統的k-均值算法的聚類過程是在樣本集中隨機選擇k個聚類中心點,對每個樣本計算候選中心的距離進行分組,在得到分組之后重新計算類簇的中心,循環迭代直到聚類中心不變或收斂。k-均值存在較多改進算法,如初始化優化 k-均值算法、距離優化 Elkan k-Means 算法、k-prototype算法等。

k-均值算法的主要優點是可以簡單、快速處理大數據集,具有可伸縮性,當數據集中類之間區分明顯(凸形分布)時,聚類效果最好。這種算法的缺點是需要用戶給出 k 值,即聚類的數目,而聚類數目事先很難確定一個合理的值。此外,k-均值算法對k值較敏感,如果k值不合理可能會導致結果局部最優。

(4)DBSCAN算法

DBSCAN算法是基于樣本之間的密度實現空間聚類,基于核心點、邊界點和噪聲點等因素對空間中任意形狀的樣本進行聚類。與傳統的k-均值算法相比,DBSCAN通過鄰域半徑和密度閾值自動生成聚類,不需要指定聚類個數,支持過濾噪聲點。但是當數據量增大時,算法的空間復雜度較高。DBSCAN不適用于樣本間的密度分布不均勻的情況,否則聚類的質量較差。對于高維的數據,一方面密度定義比較難,另一方面會導致計算量較大,聚類效率較低。

(5)OPTICS算法

在DBSCAN算法中,用戶需要指定ε(鄰域半徑)和minPts(ε鄰域最小點數)兩個初始參數,用戶手動設置這兩個參數會對聚類結果產生比較關鍵的影響。而OPTICS 解決了上述問題,為聚類分析生成一個增廣的簇排序,代表了各樣本點基于密度的聚類結構。

聚類算法將在本書第4章中詳細介紹。

3.關聯分析

關聯分析(Association Analysis)是通過對數據集中某些項目同時出現的概率進行分析來發現它們之間的關聯關系,其典型的應用是購物籃分析,通過分析購物籃中不同商品之間的關聯,分析消費者的購買行為習慣,從而制定相應的營銷策略,為商品促銷、產品定價、位置擺放等提供支持,并且可用于對不同消費者群體的劃分。關聯分析主要包括Apriori算法、FP-growth算法和Eclat算法。

(1)Apriori算法

Apriori算法主要實現過程是首先生成所有頻繁項集,然后由頻繁項集構造出滿足最小置信度的規則。由于Apriori算法要多次掃描樣本集,需要由候選頻繁項集生成頻繁項集,因此其在處理大數據量數據時效率較低。

(2)FP-growth算法

為了改進Apriori算法的低效問題,韓家煒等人提出基于FP樹生成頻繁項集的FP-growth算法。該算法只進行兩次數據集掃描且不使用候選項集,直接按照支持度來構造一個頻繁模式樹,用這棵樹生成關聯規則,在處理比較大的數據集時效率比Apriori算法大約快一個數量級,對于海量數據,可以通過數據劃分、樣本采樣等方法進行再次改進和優化。

Apriori算法和FP-growth算法將在本書第12章中詳細介紹。

(3)Eclat算法

Eclat算法是一種深度優先算法,采用垂直數據表示形式,基于前綴的等價關系將搜索空間劃分為較小的子空間,可以快速挖掘頻繁項集。與FP-growth算法和Apriori算法不同,Eclat算法的核心思想是倒排,將事務數據中的事務主鍵與項目(Item)進行轉換,用項目作為主鍵,這樣就可以直觀看到每個項目對應的事務ID有哪些,方便計算項目的頻次,從而快速獲得頻繁項集。

在Eclat算法中,通過計算項集的交集,并對結果進行裁剪,可快速得到候選項集的支持度。但是,因為求交集的操作耗時較長,所以這一過程的時間復雜度較高,效率較低。此外,這一算法的空間復雜度也比較高,會消耗大量的內存空間。

4.回歸分析

回歸分析是一種研究自變量和因變量之間關系的預測模型,用于分析當自變量發生變化時因變量的變化值,要求自變量相互獨立。回歸分析的分類如下。

(1)線性回歸

應用線性回歸進行分析時要求自變量是連續型的,線性回歸用直線(回歸線)建立因變量和一個或多個自變量之間的關系。

線性回歸主要的特點如下。

① 自變量與因變量之間呈線性關系。

② 多重共線性、自相關和異方差對多元線性回歸的影響很大。

③ 線性回歸對異常值非常敏感,其能影響預測值。

④ 在處理多個自變量時,需要用逐步回歸的方法來自動選擇顯著性變量,不需要人工干預,其思想是將自變量逐個引入模型中,并進行F檢驗、t檢驗等來篩選變量,當新引入的變量對模型結果沒有改進時,將其剔除,直到模型結果穩定。

逐步回歸的目的是選擇重要的自變量,用最少的變量去最大化模型的預測能力,它也是一種降維技術,主要的方法有前進法和后退法。前者是以最顯著的變量開始,逐漸增加次顯著變量;后者是逐漸剔除不顯著的變量。

(2)邏輯回歸

邏輯(Logistic)回歸是數據分析中的常用算法,其輸出的是概率估算值,將此值用Sigmoid函數映射到[0,1]區間,即可用來實現樣本分類。邏輯回歸對樣本量有一定要求,在樣本量較少時,概率估計的誤差較大。

線性回歸和邏輯回歸將在本書第2章中詳細介紹。

(3)多項式回歸

在回歸分析中有時會遇到線性回歸的直線擬合效果不佳,當發現散點圖中數據點呈多項式曲線時,可以考慮使用多項式回歸來分析。使用多項式回歸可以降低模型的誤差,但是如果處理不當易造成模型過擬合,在回歸分析完成之后需要對結果進行分析,并將結果可視化以查看其擬合程度。

(4)嶺回歸

嶺回歸在共線性數據分析中應用較多,也稱為脊回歸,它是一種有偏估計的回歸方法,在最小二乘法的基礎上做了改進,通過舍棄最小二乘法的無偏性,使回歸系數更加穩定和穩健。其中R2值會稍低于普通回歸分析方法,但回歸系數更加顯著,主要用于變量間存在共線性和數據點較少時。

(5)LASSO回歸

LASSO(Least Absolate Shrinkge and Selection Operator,最小絕對收縮和選擇算子)回歸的特點與嶺回歸類似,在擬合模型的同時進行變量篩選和復雜度調整。變量篩選是逐漸把變量放入模型從而得到更好的自變量組合。復雜度調整是通過參數調整來控制模型的復雜度,例如減少自變量的數量等,從而避免過擬合。LASSO回歸擅長處理多重共線性或存在一定噪聲和冗余的數據,可以支持連續型因變量、二元、多元離散變量的分析。

5.深度學習

深度學習方法通過使用多個隱層和大量數據來學習特征,從而提升分類或預測的準確性,與傳統的神經網絡相比,不僅在層數上較多,而且采用了逐層訓練的機制來訓練整個網絡,以防出現梯度消失。深度學習包括受限玻爾茲曼機(Restricted Boltzmann Machine,RBM)、深度信念網絡(Deep Belief Network,DBN)、堆疊自動編碼器(Stacked Auto-Encoder,SAE)、深度神經網絡(Deep Neural Network,DNN)、CNN、RNN、GAN以及各種變種網絡結構。這些深度神經網絡都可以對訓練集數據進行特征提取和模式識別,然后應用于樣本的分類。

RBM主要解決概率分布問題,是一種玻爾茲曼機的變體,基于物理學中的能量函數實現建模,“受限”是指層間存在連接,但層內的單元間不存在連接。RBM應用隨機神經網絡來解釋概率圖模型(Probabilistic Graphical Model),所謂“隨機”是指網絡中的神經元是隨機神經元,輸出狀態只有未激活和激活兩種,處于哪種狀態是根據概率統計來決定的。

DBN是杰弗里·辛頓在2006年提出的,作為早期深度生成式模型的代表,其目標是建立一個樣本數據和標簽之間的聯合分布。DBN由多個RBM層組成,RBM的層神經元分為可見神經元和隱神經元,其中,接收輸入的是可見神經元,隱神經元用于提取特征。通過訓練神經元之間的權重,DBN不僅可以用來識別特征、分類數據,還可以讓整個神經網絡按照最大概率來生成訓練數據。

LSTM神經網絡是RNN的一種,盡管這個早期的RNN只允許留存少量的信息,但其形式會存在損耗,而LSTM有長期與短期的記憶,擁有很好的控制記憶的能力,可以避免梯度衰減或逐層傳遞的值的最終退化。LSTM使用被稱為“門”(Gate)的記憶模塊或結構來控制記憶,這種門可以在合適的時候傳遞或重置其值。LSTM不僅具備其他RNN的優點,同時具有更好的記憶能力,因此更常被用于自然語言處理、語言翻譯等。

在CNN中,卷積是指將源數據與卷積核進行內積操作,從而實現特征權重的融合,通過設置不同的卷積核提取不同特征。將大量復雜特征進行抽象和提取,并且極大減少模型計算量,目前在圖像識別、文本分類等領域應用較廣。

目前深度學習的方法在圖像和音視頻的識別、分類及模式檢測等領域已經非常成熟,此外還可以衍生新的訓練數據以構建GAN,從而利用兩個模型互相對抗以提高模型的性能。

在數據量較多時可考慮采用這一算法。應用深度學習的方法進行分析時,需注意訓練集(用于訓練模型)、驗證集(用于在建模過程中調參和驗證)、測試集的樣本分配,一般以6∶2∶2的比例進行分配。此外,采用深度學習進行分析時對數據量有一定的要求,如果數據量偏少,極易出現過擬合的情況,其效果不如使用傳統的機器學習算法。針對小樣本的學習已經成為深度學習的一個研究問題。

深度學習將在本書第10章和第11章中詳細介紹。

主站蜘蛛池模板: 西林县| 夏津县| 阜南县| 股票| 改则县| 枣庄市| 靖宇县| 宿迁市| 宜州市| 重庆市| 都昌县| 卢湾区| 阳原县| 太原市| 朔州市| 略阳县| 比如县| 甘肃省| 米林县| 通江县| 成武县| 江阴市| 永德县| 兴业县| 家居| 阿鲁科尔沁旗| 福建省| 张北县| 大悟县| 偏关县| 孝昌县| 兴仁县| 乌拉特中旗| 台东县| 洛宁县| 松潘县| 汽车| 南阳市| 贵港市| 天津市| 齐河县|