機器學習原理、算法與應用 課件 第三章 回歸算法_第1頁
機器學習原理、算法與應用 課件 第三章 回歸算法_第2頁
機器學習原理、算法與應用 課件 第三章 回歸算法_第3頁
機器學習原理、算法與應用 課件 第三章 回歸算法_第4頁
機器學習原理、算法與應用 課件 第三章 回歸算法_第5頁
已閱讀5頁,還剩75頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

機器學習原理、算法與應用

第三章:回歸算法目錄3.1回歸算法概述3.2線性回歸模型3.3可線性化的非線性回歸模型3.4非線性回歸模型3.5多輸出回歸模型3.6回歸算法框架3.7選擇回歸模型3.8實例分析3.9習題機器學習原理、算法與應用-回歸算法2本章的重點、難點和需要掌握的內容了解回歸算法的特點。掌握簡單線性回歸模型、多元線性回歸模型、逐步回歸模型。了解嶺回歸、Lasso回歸、ElasticNet回歸等非線性回歸算法。了解倒數回歸模型、半對數回歸模型、指數函數回歸模型、冪函數回歸模型、多項式回歸模型、廣義線性回歸模型、邏輯回歸模型。掌握支持向量回歸模型、保序回歸模型、決策樹回歸模型、隨機森林回歸模型、K最近鄰回歸模型。了解回歸算法在分類和預測方面的應用。機器學習原理、算法與應用-回歸算法3回歸算法概述回歸分析是一種用于建模和分析數據的重要工具,其目的是根據已有的數據預測或估計連續的數值輸出。例如,在二手車交易中,可以使用回歸分析來根據車輛的品牌、里程數、新舊程度等特征預測其成交價。回歸分析主要思想:通過找到最佳的擬合曲線或直線來描述數據的關系,使得數據點到擬合曲線或直線的距離方差最小。這種擬合過程可以通過最小化殘差平方和來實現。擬合曲線或直線能夠在整體上捕捉到數據的趨勢,并提供對未知數據點的預測或估計。在幾何學上,回歸分析可以理解為尋找一條曲線或直線,使得數據點在離該曲線或直線的上方或下方不遠處均勻分布。機器學習原理、算法與應用-回歸算法4回歸算法概述回歸分析的目標是研究因變量(也稱為目標變量,通常表示為y)與自變量(也稱為特征變量,通常表示為x)之間的關系。回歸模型用于描述和預測因變量與自變量之間的關聯關系,并可以用不同的函數形式來表示這種關系。回歸分析提供了一種強大的工具,用于理解和預測因變量與自變量之間的關系。選擇適當的回歸模型和方法依據數據的特征、問題的要求,以及對模型的解釋性和預測性能的需求。機器學習原理、算法與應用-回歸算法5圖3-1

一個使用不同函數對數據進行擬合的例子回歸算法概述回歸算法可以根據多個方面進行分類:自變量的個數:一元回歸、多元回歸因變量的類型:線性回歸、非線性回歸模型的函數形式:常見的回歸模型包括線性回歸、多項式回歸、嶺回歸、Lasso回歸、邏輯回歸、決策樹回歸、支持向量回歸等。機器學習原理、算法與應用-回歸算法6算法模型函數形式線性回歸多項式回歸嶺回歸Lasso回歸ElasticNet回歸指數函數回歸表3-1常見的回歸模型及其函數形式回歸算法概述單輸出回歸和多輸出回歸是監督學習中回歸問題的兩種形式,它們在預測目標變量的數量上有所不同:單輸出回歸(SingleOutputRegression):模型的目標是預測單個連續目標變量的值。這意味著每個樣本有一個與之對應的目標變量。常見的例子包括預測房屋價格,預測銷售量等。單輸出回歸的目標是建立一個函數,將輸入特征映射到單個連續的目標變量。單輸出回歸算法包括線性回歸、嶺回歸、Lasso回歸、支持向量回歸、決策樹回歸、隨機森林回歸等。多輸出回歸(Multi-OutputRegression):模型的目標是同時預測多個相關的目標變量的值。這意味著每個樣本有多個與之對應的目標變量。多輸出回歸可以處理目標變量之間的相關性和相互影響,尤其適用于需要同時預測多個相關變量的問題。例如,預測房屋的價格和面積,預測多維時間序列數據。多輸出回歸的目標是建立一個函數,將輸入特征映射到多個相關的目標變量。多輸出回歸包括多輸出線性回歸、多輸出決策樹回歸、多輸出支持向量回歸等模型。機器學習原理、算法與應用-回歸算法7目錄3.2線性回歸模型3.2.1簡單線性回歸模型3.2.2多元線性回歸模型3.2.3正則化線性模型3.2.4ElasticNet回歸模型3.2.5逐步回歸模型機器學習原理、算法與應用-回歸算法8簡單線性回歸模型

機器學習原理、算法與應用-回歸算法9簡單線性回歸模型

機器學習原理、算法與應用-回歸算法10圖3-2采用最小二乘法擬合簡單線性回歸模型簡單線性回歸模型的特點:自變量與因變量之間必須有線性關系。線性回歸對異常值非常敏感,它會嚴重影響回歸線,最終影響預測值。在多個自變量的情況下,可以使用向前選擇法、向后剔除法和逐步篩選法來選擇最重要的自變量。多元回歸存在多重共線性、自相關性和異方差性。多重共線性會增加系數預測值的方差,使得在模型輕微變化下,估計非常敏感,結果就是系數預測值不穩定。機器學習原理、算法與應用-回歸算法11多元線性回歸模型

機器學習原理、算法與應用-回歸算法12多元線性回歸模型多重共線性問題:一個解釋變量的變化引起另一個解釋變量的變化。如果各個自變量x之間有很強的線性相關關系,那么就無法固定其他變量,找不到x和y之間真實的關系。通俗地講,共線性是指自變量x(解釋變量)影響因變量y(被解釋變量)時,多個x之間本身就存在很強的相關關系,即x之間有著比較強的替代性,因而導致多重共線性問題。對多元線性回歸模型產生的影響:參數估計不準確解釋變量的解釋力下降假設檢驗的失效可采取的措施包括:增加樣本量、變量聚類、選擇有效特征、正則化。機器學習原理、算法與應用-回歸算法13正則化線性模型

機器學習原理、算法與應用-回歸算法14圖3-3加入正則化前后的模型如圖所示,左側為加入正則化前使用多項式回歸過擬合生成的數據,右側為加入正則化后得到的結果:正則化前曲線彎曲陡峭、模型系數非常大正則化后曲線平滑、限制模型系數的快速增長、模型復雜度低優點:控制過擬合、特征選擇。正則化線性模型常見的正則化線性模型包括嶺回歸和Lasso回歸。嶺回歸:懲罰項是參數的L2范數。Lasso回歸:懲罰項是參數的L1

范數。機器學習原理、算法與應用-回歸算法15正則化線性模型-嶺回歸

機器學習原理、算法與應用-回歸算法16正則化線性模型-嶺回歸

機器學習原理、算法與應用-回歸算法17正則化線性模型-嶺回歸

機器學習原理、算法與應用-回歸算法18正則化線性模型-Lasso回歸

機器學習原理、算法與應用-回歸算法19正則化線性模型-Lasso回歸Lasso回歸特點:特征選擇:由于L1懲罰項的作用,Lasso回歸會將一些不重要特征的系數壓縮至零,從而實現特征選擇。稀疏解:Lasso回歸產生的解是稀疏的,即大多數特征的權重會被設為零,這有助于解釋和理解模型。正則化參數的選擇:Lasso回歸正則化參數α的選擇是一個重要問題。適當選擇α可以平衡模型的擬合能力和正則化效果。通常使用交叉驗證或其他模型選擇技術來選擇最佳的α值。防止過擬合:由于包含了正則化項,Lasso回歸在面對多重共線性問題或數據維度很高的情況時,比普通的線性回歸更不容易過擬合。計算復雜性:雖然Lasso回歸的優化問題是非光滑的(因為L1懲罰項是非光滑的),但可以通過坐標下降、最小角度回歸(LARS)等算法高效地求解。機器學習原理、算法與應用-回歸算法20ElasticNet回歸模型

21機器學習原理、算法與應用-回歸算法ElasticNet回歸模型ElasticNet回歸關鍵點:高度相關變量的群體效應:相對于Lasso回歸,ElasticNet回歸更傾向于保留高度相關的變量,而不是將其中某些變量系數置零。當多個特征與另一個特征高度相關時,ElasticNet回歸可以更好地處理這種情況,而Lasso回歸可能會隨機選擇其中一個變量。彈性網絡的使用場景:當數據集中存在高度相關的特征時,ElasticNet回歸更有用。它能夠平衡L1正則化項(Lasso回歸)和L2正則化項(嶺回歸),從而結合了特征選擇和對相關特征的保留。對所選變量數量的靈活性:與Lasso回歸不同,ElasticNet回歸沒有對所選變量數量的限制。在ElasticNet回歸中,可以選擇保留所有變量,也可以選擇只保留少數重要變量,甚至可以選擇保留所有變量。機器學習原理、算法與應用-回歸算法22逐步回歸模型逐步回歸是一種逐步選擇特征的方法,它通過迭代的方式,每次選擇一個特征,將其加入模型中或從模型中剔除,以逐步優化模型的性能。逐步回歸三種常見的方法:向前選擇法:將自變量逐個引入模型,引入一個自變量后要查看該自變量的引入是否使得模型發生顯著性變化(F檢驗),如果發生了顯著性變化,那么將該自變量引入模型中,否則忽略該自變量,直至對所有自變量都進行了考慮。將自變量按照貢獻度從大到小排列,依次加入。特點:自變量一旦被加入,就永遠保存在模型中;不能反映自變量引入模型后的模型本身的變化情況。機器學習原理、算法與應用-回歸算法23線性回歸模型-逐步回歸模型向后選擇法:先將所有自變量放入模型,然后嘗試將某一自變量剔除,查看剔除后整個模型是否發生顯著性變化(F檢驗)。如果沒有發生顯著性變化,則剔除;若發生顯著性變化,則保留,直到留下所有使模型發生顯著性變化的自變量。將自變量按貢獻度從小到大,依次剔除。特點:自變量一旦被剔除,就不再進入模型;把全部自變量引入模型,計算量過大。逐步篩選法:將逐步篩選法是向前選擇法和向后選擇法的結合,即一邊選擇,一邊剔除。當引入一個自變量后,首先查看這個自變量是否使模型發生顯著性變化(F檢驗),若發生顯著性變化,則對所有自變量進行t檢驗;當原來引入的自變量由于后面引入的自變量而不再使模型發生顯著性變化時,剔除此自變量,確保每次引入新的自變量之前回歸方程中只包含使模型發生顯著性變化的自變量,直到既沒有使模型發生顯著性變化的自變量被引入回歸方程,也沒有不使模型發生顯著性變化的自變量被從回歸方程中剔除為止,最終得到一個最優的自變量集合。特點:逐步篩選法具有特征選擇、模型優化、減少多重共線性問題等優點。機器學習原理、算法與應用-回歸算法24目錄3.3可線性化的非線性回歸模型3.3.1倒數回歸模型3.3.2半對數回歸模型3.3.3指數函數回歸模型3.3.4冪函數回歸模型3.3.5多項式回歸模型3.3.6廣義線性回歸模型3.3.7邏輯回歸模型機器學習原理、算法與應用-回歸算法25可線性化的非線性回歸模型實際生活中很多現象之間的關系并不是簡單的線性關系,分析預測一般要應用非線性回歸預測。但是非線性回歸模型的優化問題難以求解,比較復雜。因此實際中往往會先將非線性回歸模型轉化為線性回歸模型再去解決問題。在非線性回歸模型中,有一類被稱為可線性化的非線性回歸模型。可線性化的非線性回歸模型的基本思想是通過對非線性函數進行適當的變換,使得新的因變量與自變量之間的關系變得線性或近似線性,以便應用線性回歸或線性近似方法來建立模型。常見的可線性化的非線性回歸模型有:倒數回歸模型、半對數回歸模型、指數函數回歸模型、冪函數回歸模型、多項式回歸模型、廣義線性回歸模型、邏輯回歸模型。機器學習原理、算法與應用-回歸算法26倒數回歸模型

機器學習原理、算法與應用-回歸算法27

半對數回歸模型

機器學習原理、算法與應用-回歸算法28

指數函數回歸模型

機器學習原理、算法與應用-回歸算法29

冪函數回歸模型

機器學習原理、算法與應用-回歸算法30

多項式回歸模型

機器學習原理、算法與應用-回歸算法31圖3-4簡單線性回歸與多項式回歸多項式回歸模型

機器學習原理、算法與應用-回歸算法32廣義線性回歸模型

機器學習原理、算法與應用-回歸算法33圖3-5對數線性回歸示意圖廣義線性回歸模型

機器學習原理、算法與應用-回歸算法34邏輯回歸模型

機器學習原理、算法與應用-回歸算法35邏輯回歸模型

機器學習原理、算法與應用-回歸算法36圖3-6Logistic函數圖像邏輯回歸模型

機器學習原理、算法與應用-回歸算法37邏輯回歸模型邏輯回歸模型具有以下優點:簡單而高效可解釋性強可以估計概率適用性廣泛可以處理稀疏數據魯棒性強可以進行特征選擇機器學習原理、算法與應用-回歸算法38目錄3.4非線性回歸模型3.4.1支持向量回歸模型3.4.2保序回歸模型·3.4.3決策樹回歸模型3.4.4隨機森林回歸模型3.4.4隨機森林回歸模型機器學習原理、算法與應用-回歸算法39非線性回歸模型不可線性化的非線性回歸模型是指無法通過簡單的轉換將其轉化為線性回歸形式的非線性回歸模型。這些模型通常涉及更復雜的非線性函數或特定的結構,無法直接通過線性變換來處理。常見的非線性回歸模型:支持向量回歸(SupportVectorRegression,SVR)模型保序回歸(IsotonicRegression)模型決策樹回歸(DecisionTreeRegression)模型隨機森林回歸(RandomForestRegression)模型K最近鄰回歸(K-NearestNeighborsRegression)模型機器學習原理、算法與應用-回歸算法40支持向量回歸模型支持向量回歸(SVR)的目標是選擇最有效的支持向量來預測連續數值類型的目標變量。與支持向量分類方法相比,SVR模型的目標是找到一個函數使該函數與數據點之間的誤差最小化,同時保持預測函數與數據點之間的較大間隔。SVR是一種基于支持向量機的回歸算法。與傳統的支持向量機用于分類不同,SVR通過尋找一個超平面,使得樣本點盡可能地落在超平面的ε帶內,并且最小化預測值與真實值之間的誤差。SVR模型適用于處理非線性關系、存在離群點的數據集。SVR模型的基本思想是將回歸問題轉化為一個求解邊界上支持向量的最小化問題。通過定義一個邊界,使得大部分樣本點都位于邊界內部,并且允許一定程度上的誤差存在。SVR模型通過引入核函數來將低維的輸入空間映射到高維特征空間,從而能夠處理非線性關系。訓練SVR模型通過調用fit方法,輸入向量X和目標變量y,其中y是浮點數,表示連續數值類型的目標。一旦訓練完成,就可以使用模型來預測。給定一個新的輸入向量,模型將返回一個連續的數值作為預測結果。機器學習原理、算法與應用-回歸算法41支持向量回歸模型SVR模型的求解過程:特征轉換:使用合適的核函數將數據從原始的輸入空間映射到高維特征空間,通過非線性映射將數據轉化為高維的特征表示。求解邊界:在特征空間中尋找一個最優的超平面,使得訓練樣本點盡可能地位于邊界內部,同時控制邊界外部的誤差不超過預先設定的范圍。預測:根據訓練得到的模型,對新的輸入樣本進行預測。SVR模型擬合程度由兩個關鍵參數決定:Kernel(核函數):將數據映射到高維空間,常用有線性、多項式、RBF等。RegularizationParameter(正則化參數):控制模型復雜度,需調參以防過擬合/欠擬合。SVR模型與線性回歸模型有所不同。SVR模型通過選擇支持向量來構建預測函數,因此它在非線性問題上的表現更好。同時,SVR模型也具有較好的魯棒性,受異常值和噪聲的影響相對較小。機器學習原理、算法與應用-回歸算法42支持向量回歸模型SVR模型三種不同實現形式:LinearSVR:這種形式的SVR模型使用線性核函數,通過最小化目標變量的預測誤差來擬合數據。線性核函數在高維空間中進行線性組合,可以處理線性關系的回歸問題。PolynomialSVR:這種形式的SVR模型使用多項式核函數,在高維空間中進行非線性組合。多項式核函數可以處理包含多項式特征的非線性回歸問題。RBFSVR:這種形式的SVR模型使用徑向基函數核函數,在高維空間中進行非線性組合。徑向基函數核函數可以處理更一般的非線性回歸問題。三種形式的核心思想:通過選擇支持向量構建預測函數,并使預測函數與數據點之間誤差最小化。在只考慮線性核函數的情況下,LinearSVR模型的實現比SVR模型更快。機器學習原理、算法與應用-回歸算法43fromsklearnimportsvmX=[[0,0],[2,2]]y=[0.5,2.5]clf=svm.SVR()clf.fit(X,y)print(clf.predict([[1,1]]))#輸出結果為array([1.5])支持向量回歸模型支持向量分類和SVR生成的模型都只依賴于訓練集的子集,這是因為構建模型的過程是通過選擇最有效的支持向量來進行的。在支持向量分類中,模型的構建是通過最大化邊界之間的間隔來實現的。在這個過程中,邊界之外的訓練點對構建模型的代價函數沒有影響,只有處于邊界上的支持向量起到了關鍵作用。因此,模型的生成只依賴于這些支持向量,而忽略了其他訓練點。在SVR中,模型的構建是通過最小化目標變量的預測誤差來實現的。與支持向量分類類似,模型的代價函數忽略了任何接近于模型預測的訓練數據,只有那些作為支持向量的訓練點對構建模型起到了關鍵作用。機器學習原理、算法與應用-回歸算法44支持向量回歸模型在sklearn中,支持向量分類模型和SVR模型的支持向量信息可以通過以下成員變量獲取:support_vectors_:存儲支持向量的特征向量。support_:存儲支持向量的索引。n_support_:存儲每個類別的支持向量數量。在實際應用中,可以根據數據集的特點選擇合適的核函數,并通過調整參數來優化SVR模型的性能。此外,與其他回歸算法相比,SVR模型在處理非線性關系和異常值時具有一定的優勢,但也需要注意數據預處理和參數選擇的問題。機器學習原理、算法與應用-回歸算法45保序回歸模型

機器學習原理、算法與應用-回歸算法46圖3-7保序回歸示意圖決策樹回歸模型決策樹回歸模型(回歸樹)是一種用于回歸問題的機器學習模型,通過構建決策樹實現預測,并且每個葉節點上的數值是連續型的。它先根據自變量的取值將數據集劃分為不同的區域,然后在每個區域內擬合一個常數值,用于預測目標變量的連續值。決策樹回歸模型通過選擇最佳的劃分點和劃分規則來構建決策樹,使得每個葉節點上的數值能夠最好地擬合訓練數據。sklearn實現:使用DecisionTreeRegressor類構建。在訓練模型時,擬合方法將數組X和數組y作為參數。此后模型可預測浮點型的y值。特點:非參數性(無需假設數據分布)可解釋性(樹結構直觀清晰)魯棒性(對異常值和缺失值敏感度低)限制:容易過擬合、局部最優解。機器學習原理、算法與應用-回歸算法47fromsklearnimporttreeX=[[0,0],[2,2]]y=[0.5,2.5]clf=tree.DecisionTreeRegressor()clf=clf.fit(X,y)#訓練模型clf.predict([[1,1]])#使用模型預測,得到結果為array([0.5])隨機森林回歸模型隨機森林回歸模型是一種基于隨機森林算法的回歸模型,通過集成多個決策樹回歸模型來進行預測。隨機森林采用決策樹作為弱分類器,并結合了兩種隨機性的引入:樣本的隨機采樣和特征的隨機選擇。隨機森林能夠減小模型的方差,提高模型的泛化能力。樣本的隨機采樣保證了模型訓練時的多樣性,特征的隨機選擇則增加了模型的多樣性和獨立性。基本原理:數據集的隨機抽樣:從原始訓練集中有放回地隨機抽取樣本,形成多個不同的訓練子集。(樣本的隨機采樣)決策樹的構建:針對每個訓練子集,構建決策樹回歸模型。每次劃分節點時,先從所有特征中隨機選擇一部分特征,然后選擇最佳的劃分特征和劃分點。(特征的隨機選擇)集成預測:對于一個新的樣本,通過將其輸入每棵決策樹,得到多個預測結果。然后通過對這些預測結果進行平均(回歸問題)或投票(分類問題),得到最終的預測結果。模型特點:高魯棒性、防止過擬合、可解釋性弱于單個決策樹、適用于各種數據類型。機器學習原理、算法與應用-回歸算法48K最近鄰回歸模型K最近鄰回歸模型是一種基于實例的回歸模型。它通過查找與待預測樣本最接近的K個訓練樣本,并基于這些樣本的目標變量值的平均或加權平均進行預測。這種模型不是通過一個簡單的線性函數來表示的,而是通過鄰居之間的距離和目標變量值的關系來推斷。盡管K最近鄰回歸模型屬于非線性回歸,但它并不涉及顯式的特征變換或多項式特征引入。它沒有明確的函數形式,而是完全基于實例進行預測,通過鄰居之間的距離和目標變量值的關系來預測,從而實現非線性回歸的效果。在數據標簽是連續變量而不是離散變量的情況下,可以使用基于近鄰的回歸。sklearn實現:機器學習原理、算法與應用-回歸算法49fromsklearnimportneighborsn_neighbors=5weights='uniform'knn=neighbors.KNeighborsRegressor(n_neighbors,weights=weights)y_=knn.fit(X,y).predict(input)多輸出回歸模型多輸出回歸模型是一種回歸分析模型,用于處理具有多個相關目標變量的情況。它也被稱為多目標回歸模型或多變量回歸(MultivariateRegression)模型。每個目標變量可以是連續性的,而且它們之間可以相互關聯。多輸出回歸可以是線性的,也可以是非線性的,取決于具體的模型選擇和問題本身。多輸出回歸模型的非線性性質與目標變量之間的關系有關。如果多輸出回歸模型使用的是線性回歸模型(如多元線性回歸模型),并且假設目標變量之間是獨立的,那么它可以被歸類為線性回歸模型。然而,如果多輸出回歸模型使用的是非線性模型,如決策樹回歸模型、支持向量回歸模型、神經網絡回歸模型等,或者目標變量之間存在非線性關系,那么它被歸類為非線性回歸模型。在傳統的單輸出回歸模型中,只有一個目標變量與一組預測變量相關聯。而在多輸出回歸模型中,存在多個目標變量與同一組預測變量相關聯。這些目標變量之間可以是相關的,也可以是獨立的。機器學習原理、算法與應用-回歸算法50多輸出回歸模型多輸出回歸模型可以通過擴展單輸出回歸模型的方法來實現,常用的方法:多元線性回歸模型:將多個目標變量視為一個多維向量,使用線性回歸模型進行建模。多元線性回歸模型假設目標變量之間存在線性關系,并通過最小二乘法或最大似然估計來估計回歸系數。多元高斯過程回歸(MultivariateGaussianProcessRegression)模型:基于高斯過程的回歸模型,用于建模多個相關目標變量之間的非線性關系。它通過定義一個多元高斯分布來描述目標變量之間的聯合分布,并使用真實數據進行參數估計和預測。多輸出支持向量回歸(Multi-OutputSupportVectorRegression)模型:將支持向量回歸算法擴展到多輸出的情況。它通過尋找一個超平面,使得預測變量與多個目標變量之間的誤差最小化。多目標決策樹(Multi-ObjectiveDecisionTree)模型:基于決策樹的回歸模型,可以處理多個相關目標變量。它遞歸地劃分數據空間,并在每個葉節點上建立多個目標變量的回歸模型。多輸出回歸模型在許多領域中有廣泛的應用,如天氣預測、多目標優化、圖像處理等。它可以提供對多個相關目標變量的聯合建模和預測,有助于捕捉不同目標之間的關聯性和共享信息。機器學習原理、算法與應用-回歸算法51多輸出回歸模型sklearn中,可以使用以下方式來實現多輸出回歸:多輸出回歸MultiOutputRegressor:它可以被添加到任何回歸器中。這個策略包括對每個目標擬合一個回歸器。因為每個目標可以被一個回歸器精確地表示,通過檢查對應的回歸器,可以獲取關于目標的信息。MultiOutputRegressor假設每個輸出之間都是相互獨立的(但這種假設有時并不成立),對于每個目標可以訓練出一個回歸器,所以它無法利用目標之間的相關度信息。回歸鏈RegressorChain:基于鏈式規則的回歸算法。RegressorChain通過將多個單輸出回歸器按照一定的順序鏈接起來逐個預測目標變量,從而實現多輸出回歸。具體來說,RegressorChain將每個目標變量視為一個序列,每個序列都與一組預測變量相關聯。它按照預先定義的順序,逐個預測每個目標變量,將前面預測得到的目標變量作為后續預測的輸入。這樣,每個回歸器的預測結果都可以作為下一個回歸器的輸入,形成一個鏈式結構。機器學習原理、算法與應用-回歸算法52目錄3.6回歸算法框架3.6.1線性回歸模型3.6.2正則化的線性模型3.6.3多項式回歸模型3.6.4邏輯回歸模型3.6.5多輸出回歸模型機器學習原理、算法與應用-回歸算法53回歸算法框架sklearn中,線性模型相關的類位于linear_model包中。這個包提供了多個線性模型的實現:LinearRegression:用于普通最小二乘線性回歸的類。Lasso:使用L1正則化的線性回歸模型,用于特征選擇和稀疏性處理。Ridge:使用L2正則化的線性回歸模型,用于減小模型復雜度和過擬合風險。ElasticNet:結合L1正則化和L2正則化的線性回歸模型,平衡特征選擇和模型復雜度。LogisticRegression:用于二分類和多分類問題的邏輯回歸模型。這些類提供了一種方便的方式來實現和使用這些線性模型,并提供了一致的API,以便與其他sklearn中的模型和工具進行交互。機器學習原理、算法與應用-回歸算法54回歸算法框架sklearn中,非線性模型相關的類位于sklearn.svm、sklearn.ensemble和sklearn.tree等模塊中。以下是一些常見的非線性模型及其所在的模塊:支持向量模型:位于sklearn.svm模塊中,包括SVC(用于分類問題)和SVR(用于回歸問題)。隨機森林模型:位于sklearn.ensemble模塊中,包括RandomForestClassifier(用于分類問題)和RandomForestRegressor(用于回歸問題)。決策樹(DecisionTree)模型:位于sklearn.tree模塊中,包括DecisionTreeClassifier(用于分類問題)和DecisionTreeRegressor(用于回歸問題)。此外,sklearn.neural_network模塊中的MLPClassifier和MLPRegressor類實現了多層感知機(MultilayerPerceptron,MLP)模型,用于解決非線性問題。機器學習原理、算法與應用-回歸算法55線性回歸模型線性回歸模型的使用方式LinearRegression類的可選參數機器學習原理、算法與應用-回歸算法56參數類型與默認值解釋fit_interceptbool,default=Truecopy_Xbool,default=True為True,則X會被復制,否則X會被重寫n_jobsint,default=None用于計算的工作數量,對于足夠大問題,該參數可用于加速positivebool,default=False為True時,強制coefficients為正數>>>fromsklearnimportlinear_model>>>reg=linear_model.LinearRegression()>>>reg.fit([[0,0],[1,1],[2,2]],[0,1,2])LinearRegression()>>>reg.coef_array([0.5,0.5])表3-2LinearRegression類的可選參數線性回歸模型LinearRegression類的常用特征機器學習原理、算法與應用-回歸算法57特征類型解釋coef_arrayofshape(n_features)or(n_targets,n_features)對該線性模型的估計系數,如果在調用擬合函數時傳入多目標變量,則返回二維向量,如果僅有一個目標被傳入,則返回一維向量rank_Int矩陣X的秩singular_arrayofshape(min(X,y,))X的奇異值intercept_floatorarrayofshape(n_targets,)線性模型中的獨立項,注意參數中的fit_interceptN_features_in_Int在擬合時幾個特征被使用Feature_names_in_ndarrayofshape(n_features_in_,)在擬合時被使用的特征名,僅在X有特征名時被定義表3-3LinearRegression類的常用特征正則化的線性模型在下面的代碼中,使用嶺回歸模型來進行線性回歸分析。通過調整正則化參數alpha,可以控制模型的復雜度,從而在一定程度上提高模型的泛化能力。最終得到的回歸系數和截距提供了特征與目標變量之間關系的量化描述。機器學習原理、算法與應用-回歸算法58>>>fromsklearnimportlinear_model>>>reg=linear_model.Ridge(alpha=.5)>>>reg.fit([[0,0],[0,0],[1,1]],[0,1,1])Ridge(alpha=0.5)>>>reg.coef_array([0.34545455,0.34545455])>>>ercept_0.13636...正則化的線性模型Ridge模型的常用參數Ridge模型的常用特征機器學習原理、算法與應用-回歸算法59參數類型與默認值解釋alphafloat,default=1.0L2正則化項的約束系數max_iterint,default=None共軛梯度求解器的最大迭代次數solver{'auto','svd','cholesky','lsqr','sparse_cg','sag','saga','lbfgs'},default='auto'計算時使用的梯度求解器tolfloat,default=1e-3求解的精度random_stateint,RandomStateinstance,default=None對數據進行隨機排列屬性類型解釋n_iter_Noneorndarrayofshape(n_targets,)每一個目標的實際迭代次數,僅對sag和lsqr求解器有用,其他求解器會返回None表3-4Ridge模型的常用參數表3-5Ridge模型的常用特征正則化的線性模型下面的代碼展示了如何使用Lasso回歸模型進行線性回歸分析。通過設置正則化參數alpha,Lasso回歸不僅可以控制模型的復雜度,還能在某些情況下進行特征選擇。最終,模型通過訓練數據學習特征與目標之間的關系,并對新樣本進行預測。機器學習原理、算法與應用-回歸算法60>>>fromsklearnimportlinear_model>>>reg=linear_model.Lasso(alpha=0.1)>>>reg.fit([[0,0],[1,1]],[0,1])Lasso(alpha=0.1)>>>reg.predict([[1,1]])array([0.8])正則化的線性模型Lasso模型的常用參數Lasso模型的常用特征機器學習原理、算法與應用-回歸算法61參數類型與默認值解釋alphafloat,default=1.0L1正則化項的約束系數precomputeboolorarray-likeofshape(n_features,n_features)default=False是否使用預訓練的Gram矩陣來加速計算屬性類型解釋dual_gap_floatorndarrayofshape(n_targets,)對于給定參數alpha,優化結束時的對偶間隙表3-6Lasso模型的常用參數表3-7Lasso模型的常用特征正則化的線性模型下面的代碼展示如何使用ElasticNet回歸模型進行線性回歸分析。ElasticNet結合了Lasso和Ridge的優點,通過合理設置正則化參數alpha和L1比率,能夠有效控制模型復雜度并進行特征選擇。ElasticNet模型的常用參數機器學習原理、算法與應用-回歸算法62屬性類型與默認值解釋alphafloat,default=1.0懲罰項的約束系數L1_rationfloat,default=0.5ElasticNet的混合參數。L1_ration=0,為L2正則化;L1_ration=1,則為L1正則化>>>fromsklearnimportlinear_model>>>reg=linear_model.ElasticNet(alpha=0.1,l1_ratio=0.5)>>>reg.fit([[0,0],[1,1]],[0,1])>>>reg.predict([[1,1]])array([0.86364212])表3-8ElasticNet模型的常用參數多項式回歸模型

機器學習原理、算法與應用-回歸算法63>>>fromsklearn.preprocessingimportPolynomialFeatures>>>importnumpyasnp>>>X=np.arange(6).reshape(3,2)>>>Xarray([[0,1],[2,3],[4,5]])>>>poly=PolynomialFeatures(degree=2)>>>X_poly=poly.fit_transform(X)array([[1.,0.,1.,0.,0.,1.],[1.,2.,3.,4.,6.,9.],[1.,4.,5.,16.,20.,25.]])>>>reg=linear_model.LinearRegression())>>>reg.fit(X_poly,y)>>>print(ercept_,reg.coef_)多項式回歸模型關鍵點在數據的預處理和線性模型的選取上,sklearn提供了Pipeline工具簡化過程。機器學習原理、算法與應用-回歸算法64>>>fromsklearn.preprocessingimportPolynomialFeatures>>>fromsklearn.linear_modelimportLinearRegression>>>fromsklearn.pipelineimportPipeline>>>importnumpyasnp>>>model=Pipeline([('poly',PolynomialFeatures(degree=3)),...('linear',LinearRegression(fit_intercept=False))])>>>#fittoanorder-3polynomialdata>>>x=np.arange(5)>>>y=3-2*x+x**2-x**3>>>model=model.fit(x[:,np.newaxis],y)>>>d_steps['linear'].coef_array([3.,-2.,1.,-1.])邏輯回歸模型下面的代碼展示了如何使用邏輯回歸模型進行二分類分析。通過將鳶尾花數據集中一種花的類別轉換為二元標簽,模型能夠學習特征與類別之間的關系,并對新樣本進行預測。最終返回的預測結果表明了模型對給定花瓣寬度的分類判斷。機器學習原理、算法與應用-回歸算法65>>>fromsklearnimportdatasets>>>fromsklearnimportlinear_model>>>iris=datasets.load_iris()>>>X=iris["data"][:,3:]>>>y=(iris["target"]==2).astype(int)#ifvirginicato1,else0>>>reg=linear_model.LogisticRegression()>>>reg.fit(X,y)>>>reg.predict([[1.7],[1.5]])array([1,0])邏輯回歸模型邏輯回歸模型的常用參數機器學習原理、算法與應用-回歸算法66參數類型與默認值解釋penalty{'l1','l2','elasticnet','none'},default='l2'懲罰項形式dualbool,default=False對偶公式或原始公式。對偶公式僅用liblinear求解器L2懲罰項實現,當n_samples>n_features時,使用dual=False更好cfloat,default=1.0正則化強度的倒數,必須是正浮點數,與支持向量機一樣,較小的值表示更強的正則化intercept_scalingfloat,default=1僅在使用求解器liblinear時有用,并且self.fit_intercept設置為True,在這種情況下,x變為[x,ercept_scaling],即恒定值等于的合成特征intercept_scaling附加到實例向量中class_weightdictor'balanced',default=None{class_label:weight}形式的類關聯的權重,如果沒有給出,所有的類都應該有一個權重。balanced模式使用y的值來自動調整使權重與輸入數據中的類頻率成反比multi_class{'auto','ovr','multinomial'},default='auto''ovr':對于每個標簽,使用二元分類的方式進行擬合。'multinomial':直接最小化整個數據分布上的多項式損失,即使數據是二元的。'auto':根據數據的特性自動選擇方法。如果數據是二元的,或使用的求解器是liblinear,則會選擇'ovr';否則,會選擇'multinomial'表3-9邏輯回歸模型的常用參數邏輯回歸模型邏輯回歸模型的常用特征機器學習原理、算法與應用-回歸算法67特征類型解釋classes_ndarrayofshape(n_classes,)分類器已知的類標簽列表coef_ndarrayofshape(1,n_features)or(n_classes,n_features)決策函數中特征的系數intercept_ndarrayofshape(1,)or(n_classes,)將攔截(又名偏差)添加到決策功能中n_features_in_Int擬合中的特征數feature_names_in_ndarrayofshape(n_features_in_,)在擬合期間看到的特征名稱,僅在X有所有字符串特征名稱時被定義n_iter_ndarrayofshape(n_classes,)or(1,)所有類的實際迭代次數,如果是二進制數或多項式,那么它只返回1個元素。對于liblinear求解器,只給出在所有類的最大迭代次數表3-9邏輯回歸模型的常用特征多輸出回歸模型右側的代碼展示了如何處理多輸出回歸問題。首先使用線性回歸模型進行簡單的多輸出回歸,然后通過MultiOutputRegressor和RegressorChain兩種方法進一步處理多目標變量的回歸任務。這些方法允許模型同時預測多個目標變量,適用于具有多個輸出的回歸問題。機器學習原理、算法與應用-回歸算法68#使用內置支持多輸出的算法>>>fromsklearn.datasetsimportmake_regression>>>fromsklearn.linear_modelimportLinearRegression>>>X,y=make_regression(n_samples=1000,n_features=10,n_informative=5,n_targets=2,random_state=1)>>>model=LinearRegression()>>>model.fit(X,y)>>>x_=[[-2.02220122,0.31563495,0.82797464,-0.30620401,0.16003707,-1.44411381,0.87616892,-0.50446586,0.23009474,0.76201118]]>>>y_=model.predict(x_)#[[-93.14714623.26985013]]#使用MultiOutputRegressor>>>fromsklearn.multioutputimportMultiOutputRegressor>>>fromsklearn.svmimportLinearSVR>>>model=LinearSVR()>>>wrapper=MultiOutputRegressor(model)>>>wrapper.fit(X,y)>>>y_=wrapper.predict(x_)#[[-93.14714623.26985013]]#使用RegressorChain>>>fromsklearn.multioutputimportRegressorChain>>>wrapper=RegressorChain(model)>>>y_=wrapper.predict(x_)#[[-93.14714623.27082987]]選擇回歸模型選擇適合的回歸模型是一個關鍵的步驟,它可以影響預測性能、模型解釋性和泛化能力。以下是一些常用的方法和原則,可以幫助人們正確選擇回歸模型。理解問題的特點。首先要深入了解問題的特點,考慮以下因素。目標變量的類型:確定目標變量是連續的還是離散的。數據的特征:考慮特征之間的關系、非線性關系、多重共線性等。數據的大小和質量:評估數據的樣本數量、噪聲水平和缺失值等。簡單模型優先原則。在沒有明確證據表明需要更復雜模型的情況下,應該從簡單的模型開始。簡單模型具有解釋性強、計算效率高和泛化能力好的優點。特征選擇和特征工程。在選擇模型之前,進行特征選擇和特征工程是很重要的。考慮使用相關性分析、方差分析、逐步回歸等方法來選擇相關特征,并進行特征轉換和標準化等預處理步驟。機器學習原理、算法與應用-回歸算法69選擇回歸模型

機器學習原理、算法與應用-回歸算法70選擇回歸模型

機器學習原理、算法與應用-回歸算法71fromsklearn.metricsimportmean_absolute_error,mean_squared_error,r2_scorey_true=[1,3,5,7]y_pred=[2,4,5,8]print(mean_absolute_error(y_true,y_pred))#輸出為0.75print(mean_squared_error(y_true,y_pred))#輸出為0.75print(r2_score(y_true,y_pred))#輸出為0.85實例分析用不同的回歸模型對美國波士頓房價進行預測,數據集是馬薩諸塞州波士頓郊區的房屋信息數據,于1978年開始統計,共506個樣本,涵蓋了波士頓郊區房屋14種特征的信息。完整代碼參考boston_regression.ipynb。導入數據:從sklearn.datasets包中導入數據集。機器學習原理、算法與應用-回歸算法72#導入數據fromsklearn.datasetsimportload_bostonimportpandasaspdboston=load_boston()features=boston.datatarget=boston.targetdf_boston=pd.DataFrame(features)=boston.feature_namesdf_boston["MEDV"]=targetdf_boston.head()實例分析前述過程中,特征說明:CRIM:每個城鎮的人均犯罪率。ZN:超過25000平方英尺用地劃為居住用地的百分比。INDUS:非零售商用地百分比。CHAS:是否靠近查爾斯河。NOX:氮氧化物濃度。RM:住宅平均房間數。AGE:1940年前建成自用單位比例。DIS:到5個波士頓就業服務中心的加權距離。RAD:無障礙徑向高速公路指數。TAX:每萬元物業稅率。PTRATIO:小學師生比例。B:黑色人種比例指數。LSTAT:下層經濟階層比例。MEDV:業主自住房屋中值。機器學習原理、算法與應用-回歸算法73print(boston.DESCR)#查看數據集的描述信息實例分析2.建立回歸模型:把數據集按照7∶3分為訓練集和測試集。機器學習原理、算法與應用-回歸算法74#標準化fromsklearn.preprocessingimportStandardScaler#importnumpyasnpss_x=StandardScaler()ss_y=StandardScaler()s_features=ss_x.fit_transform(features)s_target=ss_y.fit_transform(target.reshape(-1,1))#分離數據集fromsklearn.model_selectionimporttrain_test_splitfeatures=df_boston[df_boston.loc[:,df_boston.columns!='MEDV'].columns]target=df_boston['MEDV']x_train,x_test,y_train,y_test=train_test_split(s_features,s_target,test_size=0.3,random_state=0)實例分析進行訓練并預測線性回歸機器學習原理、算法與應用-回歸算法75fromsklearn.linear_modelimportLinearRegressionfromsklearn.svmimportSVRfromsklearn.treeimportDecisionTreeRegressorfromsklearn.neighborsimportKNeighborsRegressorfromsklearn.metricsimportmean_absolute_error,mean_squared_error,r2_scorelr_model=LinearRegression()lr_model.fit(x_train,y_train)lr_y_pred=lr_model.predict(x_test)lr_MSE=mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_pred))lr_MAE=mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_pred))lr_R2=r2_score(y_test,lr_y_pred)實例分析支持向量機(linear)支持向量機(rbf)機器學習原理、算法與應用-回歸算法76#使用線性核函數的SVR進行訓練,并進行預測l_svr=SVR(kernel='linear')l_svr.fit(x_train,y_train)l_svr_y_pred=l_svr.predict(x_te

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論