- 基于機器學習的數據缺失值填補:理論與方法
- 賴曉晨 張立勇 劉輝 吳霞
- 2747字
- 2020-09-24 10:12:27
3.2.2 基于非線性回歸的填補方法
若不完整數據屬性間為線性關系,則線性回歸模型具有良好的建模精度,并能夠獲得理想的填補效果。但在現實世界中,數據屬性間可能存在復雜的非線性關系,若仍對此類型數據展開線性建模,會導致填補準確性降低。因此,更為有效的做法是建立非線性模型,通過設計合理的擬合函數構造與真實數據相匹配的模型結構,進而挖掘屬性間的非線性關系,并以此進行填補。
基于非線性回歸的填補方法是采用非線性回歸手段建模不完整數據。令X表示樣本數量為n,屬性個數為s的不完整數據集,xi=[xi1,xi2,…,xis]T(i=1,2,…,n)表示第i個樣本。假設數據集X僅在第k維屬性存在缺失值,即完整屬性集合Jco={1,…,k-1,k+1,…,s},不完整屬性集合為Jin={k}。針對數據集X,構建以完整屬性為自變量,不完整屬性為因變量的非線性模型,如式(3-53)所示:
式(3-53)中,yi表示因變量,由于因變量是不完整屬性,即數據集的第k個屬性,此處yi=xik;f(·)表示非線性函數,xi*表示自變量,即樣本中除第k個屬性外的其他屬性值構成的向量;β表示由模型參數組成的向量;εi表示誤差;Xco表示完整樣本集合。
與線性模型類似,可通過最小化式(3-54)所示的誤差平方和,求解非線性模型的參數[14]。
根據擬合函數f(·)的形式不同,非線性模型的類型也有所不同,下面介紹幾種用于非線性回歸建模的常見函數。
多項式函數是一類典型的非線性函數,其將自變量的各種組合視為函數構建的基本元素,通過不同的模型參數衡量各組合對擬合結果的貢獻度,由此利用自變量組合的線性加權和建立擬合函數。多項式函數的通用形式如式(3-55)所示:
其中,p表示自變量的數量,即|Jco|;kl(l=1,2,…,p)為常數值,表示對自變量進行冪運算時的指數,Jco(l)(l=1,2,…,p)表示集合Jco中第l個元素。βConcat(k1,k2,…,kp)表示模型參數,Concat(k1,k2,…,kp)的作用是將k1,k2,…,kp按由高位到低位的順序拼接成十進制數值,其定義為式(3-56):
當p=1時,不完整數據集僅有一個完整屬性,即|Jco|=1。在此條件下,多項式函數的形式可表示為式(3-57):
式(3-57)中,d表示函數的階數,此函數通常稱為一元d階多項式。
當p=2時,一種典型的多項式函數如式(3-58)所示:
式(3-58)中,函數的階數是2,常稱為二元二階多項式函數。
多項式函數可以借助函數階數的設計對因變量展開不同精度的逼近,從而實現復雜非線性關系的有效建模,因此其在回歸分析中具有重要的地位。此類函數連續光滑,并且內部結構對稱,易于編程求解,然而隨著自變量數量和函數階數的增加,計算量將急劇增大,因此需根據實際問題選取對因變量擬合最重要的自變量,并合理控制函數階數[15]。
除多項式函數外,也可在合理考慮自變量與因變量關系的基礎上,針對部分自變量設計非線性函數,最后將其組合為全局的非線性函數[16]。以第Jco(l)個屬性為例,令j=Jco(l),關于該自變量的非線性函數可設計為式(3-59)、式(3-60)和式(3-61)所示的形式。
(1)指數函數:
式(3-59)中,β1和β2表示函數參數。
(2)對數函數:
(3)冪函數:
擬合函數的形式多樣,既可是上述多項式函數、指數函數、對數函數、冪函數等各類函數,也可以是由多種函數組成的復合型函數。在實際建模過程中,需針對具體問題展開分析,以確定與屬性間關聯相匹配的擬合函數,并構建相應的非線性模型。
由于單個回歸模型僅能擬合一個因變量,當數據集包含多個不完整屬性時,需針對每個不完整屬性分別構建以該屬性為因變量、以完整屬性為自變量的回歸模型,進而填補所有的缺失值。但是,正如3.2.1節所述,若不完整屬性的數量遠遠大于完整屬性的數量,上述建模方式易造成已知信息的極大浪費。為了合理利用數據集內的所有現有值,下面以圖3-4a)中的不完整數據集為例,介紹一種基于回歸模型集群的缺失值填補方法[17]。
圖3-4 基于回歸模型集群的缺失值填補方法
如圖3-4a)所示,數據集中的不完整屬性序號集合為Jin={1,2,4,s},完整屬性序號集合為Jco={3,5,6,…,s-1}。針對該數據集,可建立如圖3-4b)所示的回歸模型集群。該方法的建模過程包括初始建模和后續建模兩部分,以下為初始建模的流程。
步驟1:按照屬性中缺失值個數由小到大的順序,對不完整屬性序號進行排列。針對圖3-4a)所示數據集,排列后的不完整屬性序號集為Jin={1,2,4,s}。
步驟2:令Jco*=Jco,X0=X,設置訪問標記l=1。
步驟3:建立以第Jin(l)個屬性為因變量,Jco*對應屬性為自變量的回歸模型;
步驟4:根據數據集X0求解步驟3中模型的參數,計算填補值并以此替換X0在第Jin(l)個屬性中的缺失值。
步驟5:若所有的不完整屬性訪問完畢,即l=|Jin|,則進入步驟6;否則更新Jco*←Jco*∪{Jin(l)},l←l+1,返回步驟3。
步驟6:初始建模過程完畢,并得到填補后的數據集X0。
以上過程的主要思路是,根據每個回歸模型計算相應不完整屬性中的填補值,并利用這些填補值替換屬性中的缺失值,隨后將包含填補值的屬性用于后續建模。填補值和現有值共同參與建模的方式使不完整數據集內的現有數據得以充分利用。
在得到填補數據集X0后,可基于X0展開后續建模過程,以下為具體步驟。
步驟1:設置訪問標記l=1。
步驟2:建立以第Jin(l)個屬性為因變量,其他屬性為自變量的回歸模型。
步驟3:根據X0求解步驟2中模型的參數,接著計算本輪的填補值,并以此更新X0在第Jin(l)個屬性內的填補值。
步驟4:若不完整屬性訪問完畢,即l=|Jin|,則進入步驟5,否則更新l←l+1,返回步驟2。
步驟5:若本輪填補數據集與上輪填補數據集中的填補值差異低于指定閾值,則暫停迭代并進入步驟6;否則返回步驟1。
步驟6:建模過程完畢,得到最終的填補數據集。
在上述流程中,除不完整屬性外的其他屬性均作為自變量參與模型構建,填補值在建模期間反復更新直至最終穩定。該建模方式有效提高了數據集中已知信息的利用率,然而迭代式的模型構建和求解增加了時間復雜度,因此主要適用于一些模型構建簡單、參數求解高效的場景。
結合3.2.1節和本節內容,可知線性回歸模型的構建簡單高效,相關的理論研究也趨于完善,而非線性回歸模型的構建相對復雜。非線性回歸建模期間,人為構造擬合函數具有較多主觀因素的干擾,包括為設計與真實數據相匹配的函數結構,開發人員需要具備一定專業領域知識,同時需要針對具體問題進行細致充分的探討,故建模期間的人力耗費較大,最終模型的擬合質量也因人而異。
為了使所建模型能夠合理挖掘不完整數據屬性間的非線性關系,可考慮在線性回歸模型的基礎上構造非線性模型。一種可行的處理思路是利用模糊聚類將具有相近回歸關系的數據劃分為一個子集,并用線性回歸模型逼近每一個子集[18][19]。TS模型正是由該思路發展而來的非線性建模工具,該模型將整個輸入空間分解為若干個模糊空間,并利用不同的線性函數對模糊空間內的屬性間關系依次建模,最終根據一定規則將各個局部線性函數相連,從而得到一個光滑的非線性函數。TS模型能夠以少量的模糊規則逼近任意光滑的非線性函數[20],這樣既滿足了非線性模型對擬合性能的要求,又保留了線性模型計算量小的優點。鑒于該模型所具備的諸多優點,第6章和第7章將深入介紹基于TS模型的填補方法。