導航:首頁 > 數據行情 > 整理股票日收盤數據時缺失值怎麼處理

整理股票日收盤數據時缺失值怎麼處理

發布時間:2022-11-18 10:05:33

① 分析股票時單獨一天歷史數據缺失 怎麼處理

一共有2個辦法:
1、進入數據管理,下載全部數據!
2、進入文件夾,找到DATA,然後再DAY裡面找到該股的代碼,將這個股單獨刪除,然後再開軟體,軟體會自動補充數據!

② 股價數據缺失,用什麼插值法補齊較好

meigushe888

將這些錯誤的數據當錯缺失數據處理,需要採取一定的手段填充。缺失的數據採取插值法填充,這一點早就確定下來,但在如何實現上卻困擾很久。將原始問題簡化一下。比如有這樣一組數據。ID so co1 1 0.1 0.1 2 0 0.2 3 0.2 0 4 0 0 5 0 0.4 6 0.1 0.5插值法計算方法如下:(也可以不使用這兩個步驟,只要最後的結果一致就行) 步驟一:計算缺失值上下的已知值間的斜率: k = (b2 - b1)/(n + 1) n 為缺失數據的個數 步驟二:計算對應的缺失值 a(i) = b1 + k * i 經過處理後,得到的數據是這樣的:1 0.10 0.102 0.15 0.203 0.20 0.274 0.17 0.335 0.13 0.406 0.10 0.50我最初的想法是:在sql語句中用for循環來做。逐條地檢查每個數值,如果是0,那麼獲取它的前一個記錄的值b1,然後再繼續向後遍歷,獲取後面一個非0的值b2,計算這兩個非0數據之間的距離n,之後再用插值法將缺失的數據計算出來,並update到b1和b2之間的每一個值。按照這個思路,很麻煩,比如遍歷過程中如何獲取前一個數值?出現0的時候,如何記錄出現多少個0?for循環經過後,再如何update之前的數值? 被這些問題困擾很久!在論壇上發帖解決,解決的辦法很受啟發。1. 創建一個函數ALTER FUNCTION FUN_CO(@ID INT) RETURNS DECIMAL(18, 3) AS BEGIN DECLARE @NUM1 NUMERIC(19,2),@ID1 INT,@NUM2 NUMERIC(19,2),@ID2 INT SELECT TOP 1 @ID1=ID , @NUM1=CO FROM APRECORD WHERE ID<=@ID AND CO<>0 ORDER BY ID DESC SELECT TOP 1 @ID2=ID , @NUM2=CO FROM APRECORD WHERE ID>=@ID AND CO<>0 ORDER BY ID ASC IF @ID2<>@ID1 RETURN @NUM1+(((@NUM2-@NUM1)/(@ID2-@ID1))*(@ID-@ID1)) RETURN @NUM1 END2. 更新資料庫UPDATE APRECORD SET CO=DBO.FUN_CO(ID) WHERE DAYTIME >= @BDT AND DAYTIME < @EDT 在這個解決方案中,首先查找到缺失的數據,也就是值為0的數據,然後向前查找非0數據@NUM1,以及它的編號@ID1,向後查找非0的數據@NUM2. 以及編號@ID2。也就是步驟一。然後用公式計算出填充的數據。將上述過程保存在一個函數中,在存儲過程中調用。甚至不用for循環之類。

③ 怎麼處理缺失值/異常值

https://www.hu.com/question/58230411?sort=created
https://blog.csdn.net/Forlogen/article/details/89534235

(1)隨機丟失(MAR,Missing at Random)(數據丟失的概率與丟失的數據本身無關,而依賴於其他完全變數(無缺失變數))

隨機丟失意味著數據丟失的概率與丟失的數據本身無關,而僅與部分已觀測到的數據有關。也就是說,數據的缺失不是完全隨機的,該類數據的缺失依賴於其他完全變數。

(2)完全隨機丟失(MCAR,Missing Completely at Random)(數據缺失完全隨機事件,無依賴關系)

數據的缺失是完全隨機的,不依賴於任何不完全變數或完全變數,不影響樣本的無偏性。簡單來說,就是數據丟失的概率與其假設值以及其他變數值都完全無關。

(3)非隨機丟失(MNAR,Missing not at Random)

數據的缺失與不完全變數自身的取值有關。分為兩種情況:缺失值取決於其假設值(例如,高收入人群通常不希望在調查中透露他們的收入);或者,缺失值取決於其他變數值(假設基礎數據很正常,也無臨床症狀,醫生可能就覺得無需進一步檢查,所以會有數據缺失)。

在前兩種情況下可以根據其出現情況刪除缺失值的數據,同時,隨機缺失可以通過已知變數對缺失值進行估計。

在第三種情況下,刪除包含缺失值的數據可能會導致模型出現偏差,同時,對數據進行填充也需要格外謹慎。

如果一個病人的體溫測量值是有時缺失的,其原因是醫生覺得病得太重的病人不需要量體溫,那這個缺失顯然不是MAR或者MCAR的。對於離散型特徵,如果將特徵中的缺失值單獨編碼成一個獨立的類別(比如missing),而這個missing類別訓練出來後對response有預測作用,那麼這個特徵中的缺失行為基本不是MAR或者MCAR的。

(1)generative methods:這些方法主要依賴於EM演算法和深度學習,如DAE、GAN等
(2)discriminative methods:如MICE、MissForest、matrix completion等

目前的生成式填補演算法存在著一些缺點,它們是以一種基於對數據分布的先驗假設的方法,當數據中含有混合類別和連續變數時,它的泛化能力就會很差。DAE在一定程度上解決了這個問題,但是它在訓練的過程中需要完整的數據集,在很多情況下,缺失的數據部分在一定程度上反映了完整數據集的內在結構信息,所以獲取到完整的數據集是不太可能的。DAE的另一種方法允許使用不完整的數據集進行訓練,但是它只能根據觀察到的部分來表示數據。而使用DCGANs來完成圖像填補的演算法,同樣需要完整的數據集來訓練判別器。

難點:如果其他變數和缺失變數無關,則預測的結果無意義。如果預測結果相當准確,則又說明這個變數是沒必要加入建模的。一般情況下,介於兩者之間。

方法 0(最簡單粗暴):在構建模型時忽略異常值。 如果缺失數據量少的話

方法1(快速簡單但效果差):把數值型(連續型)變數中的缺失值用其所對應的類別中的中位數替換。把描述型(離散型)變數缺失的部分用所對應類別中出現最多的數值替代。

方法2(耗時費力但效果好):雖然依然是使用中位數和出現次數最多的數來進行替換,方法2引入了權重。即對需要替換的數據先和其他數據做相似度測量也就是下面公式中的Weight,在補全缺失點是相似的點的數據會有更高的權重W。

方法3 (類xgboost):把缺失值當做稀疏矩陣來對待,本身的在節點分裂時不考慮的缺失值的數值。缺失值數據會被分到左子樹和右子樹分別計算損失,選擇較優的那一個。如果訓練中沒有數據缺失,預測時出現了數據缺失,那麼默認被分類到右子樹。這樣的處理方法固然巧妙,但也有風險:即我們假設了訓練數據和預測數據的分布相同,比如缺失值的分布也相同,不過直覺上應該影響不是很大:)

方法4 (回歸):基於完整的數據集,建立回歸方程。對於包含空值的對象,將已知屬性值代入方程來估計未知屬性值,以此估計值來進行填充。當變數不是線性相關時會導致有偏差的估計。

方法5 (Kmeans)先根據歐式距離或相關分析來確定距離具有缺失數據樣本最近的K個樣本,將這K個值加權平均來估計該樣本的缺失數據。

方法6 (離散化)為缺失值定製一個特徵值比如,男/女/缺失 分別對應[0/1,0/1,0/1]=>[0,0,1] 這種onehot編碼,特徵離散化後加入計算。

方法1(AutoEncoder系列):在訓練的時候使用0作為缺失值,相當於不激活邊,在輸出的時候不論輸出了什麼都強行置為0,防止反向傳播的時候影響到邊的權重。

方法2 GAN(GAIN),目前的SOTA

方法1(MissForest):對於一個有n個特徵的數據來說,其中特徵T有缺失值,我們就把特徵T當作標簽,其他的n-1個特徵和原本的標簽組成新的特徵矩陣。那對於T來說,它沒有缺失的部分,就是我們的Y_test,這部分數據既有標簽也有特徵,而它缺失的部分,只有特徵沒有標簽,就是我們需要預測的部分。

那如果數據中除了特徵T之外,其他特徵也有缺失值怎麼辦?答案是遍歷所有的特徵,從缺失最少的開始進行填補(因為填補缺失最少的特徵所需要的准確信息最少)。

填補一個特徵時,先將其他特徵的缺失值若為連續型值可用中位數、平均數代替,離散可用眾數代替,每完成一次回歸預測,就將預測值放到原本的特徵矩陣中,再繼續填補下一個特徵。每一次填補完畢,有缺失值的特徵會減少一個,所以每次循環後,需要用0來填補的特徵就越來越少。當進行到最後一個特徵時(這個特徵應該是所有特徵中缺失值最多的),已經沒有任何的其他特徵需要用0來進行填補了,而我們已經使用回歸為其他特徵填補了大量有效信息,可以用來填補缺失最多的特徵。

方法2(matrix factorization):矩陣分解

然後梯度下降一把梭

「年收入」:商品推薦場景下填充平均值,借貸額度場景下填充最小值;
「行為時間點」:填充眾數;
「價格」:商品推薦場景下填充最小值,商品匹配場景下填充平均值;
「人體壽命」:保險費用估計場景下填充最大值,人口估計場景下填充平均值;
「駕齡」:沒有填寫這一項的用戶可能是沒有車,為它填充為0較為合理;
」本科畢業時間」:沒有填寫這一項的用戶可能是沒有上大學,為它填充正無窮比較合理;
「婚姻狀態」:沒有填寫這一項的用戶可能對自己的隱私比較敏感,應單獨設為一個分類,如已婚1、未婚0、未填-1。

主流的機器學習模型千千萬,很難一概而論。但有一些經驗法則(rule of thumb)供參考:
1)樹模型對於缺失值的敏感度較低,大部分時候可以在數據有缺失時使用。
2)涉及到距離度量(distance measurement)時,如計算兩個點之間的距離,缺失數據就變得比較重要。因為涉及到「距離」這個概念,那麼缺失值處理不當就會導致效果很差,如K近鄰演算法(KNN)和支持向量機(SVM)。
3)線性模型的代價函數(loss function)往往涉及到距離(distance)的計算,計算預測值和真實值之間的差別,這容易導致對缺失值敏感。
4)神經網路的魯棒性強,對於缺失數據不是非常敏感,但一般沒有那麼多數據可供使用。
5)貝葉斯模型對於缺失數據也比較穩定,數據量很小的時候首推貝葉斯模型。

總結來看,對於有缺失值的數據在經過缺失值處理後:

④ 數據分析中缺失值的處理

數據缺失在許多研究領域都是一個復雜的問題,對數據挖掘來說,缺失值的存在,造成了以下影響:
1.系統丟失了大量的有用信息
2.系統中所表現出的不確定性更加顯著,系統中蘊涵的確定性成分更難把握
3.包含空值的數據會使挖掘過程陷入混亂,導致不可靠的輸出

數據挖掘演算法本身更致力於避免數據過分擬合所建的模型,這一特性使得它難以通過自身的演算法去很好地處理不完整數據。因此,缺失值需要通過專門的方法進行推導、填充等,以減少數據挖掘演算法與實際應用之間的差距。

1.列表顯示缺失值 mice包 md.pattern( )

2.圖形探究缺失值 VIM包

3.用相關性探索缺失值

1.人工填寫
由於最了解數據的還是用戶自己,因此這個方法產生數據偏離最小,可能是填充效果最好的一種。然而一般來說,該方法很費時,當數據規模很大、空值很多的時候,該方法是不可行的。

2.特殊值填充
將空值作為一種特殊的屬性值來處理,它不同於其他的任何屬性值。如所有的空值都用「unknown」填充。這樣將形成另一個有趣的概念,可能導致嚴重的數據偏離,一般不推薦使用。

3.平均值填充
將信息表中的屬性分為數值屬性和非數值屬性來分別進行處理。如果空值是數值型的,就根據該屬性在其他所有對象的取值的平均值來填充該缺失的屬性值;如果空值是非數值型的,就根據統計學中的眾數原理,用該屬性在其他所有對象的取值次數最多的值(即出現頻率最高的值)來補齊該缺失的屬性值。另外有一種與其相似的方法叫條件平均值填充法(Conditional Mean Completer)。在該方法中,缺失屬性值的補齊同樣是靠該屬性在其他對象中的取值求平均得到,但不同的是用於求平均的值並不是從信息表所有對象中取,而是從與該對象具有相同決策屬性值的對象中取得。這兩種數據的補齊方法,其基本的出發點都是一樣的,以最大概率可能的取值來補充缺失的屬性值,只是在具體方法上有一點不同。與其他方法相比,它是用現存數據的多數信息來推測缺失值。

4.熱卡填充
對於一個包含空值的對象,熱卡填充法在完整數據中找到一個與它最相似的對象,然後用這個相似對象的值來進行填充。不同的問題可能會選用不同的標准來對相似進行判定。該方法概念上很簡單,且利用了數據間的關系來進行空值估計。這個方法的缺點在於難以定義相似標准,主觀因素較多。

5.K最近距離鄰法
先根據歐式距離或相關分析來確定距離具有缺失數據樣本最近的K個樣本,將這K個值加權平均來估計該樣本的缺失數據。
同均值插補的方法都屬於單值插補,不同的是,它用層次聚類模型預測缺失變數的類型,再以該類型的均值插補。假設X=(X1,X2…Xp)為信息完全的變數,Y為存在缺失值的變數,那麼首先對X或其子集行聚類,然後按缺失個案所屬類來插補不同類的均值。如果在以後統計分析中還需以引入的解釋變數和Y做分析,那麼這種插補方法將在模型中引入自相關,給分析造成障礙。

6.使用所有可能的值填充
用空缺屬性值的所有可能的屬性取值來填充,能夠得到較好的補齊效果。但是,當數據量很大或者遺漏的屬性值較多時,其計算的代價很大,可能的測試方案很多。

7.組合完整化方法
用空缺屬性值的所有可能的屬性取值來試,並從最終屬性的約簡結果中選擇最好的一個作為填補的屬性值。這是以約簡為目的的數據補齊方法,能夠得到好的約簡結果;但是,當數據量很大或者遺漏的屬性值較多時,其計算的代價很大。

8.回歸
基於完整的數據集,建立回歸方程(模型)。對於包含空值的對象,將已知屬性值代入方程來估計未知屬性值,以此估計值來進行填充,當變數不是線性相關或預測變數高度相關時會導致有偏差的估計(SPSS菜單里有這種方法)

9.期望值最大化方法
EM演算法是一種在不完全數據情況下計算極大似然估計或者後驗分布的迭代演算法。在每一迭代循環過程中交替執行兩個步驟:E步(Excepctaion step,期望步),在給定完全數據和前一次迭代所得到的參數估計的情況下計算完全數據對應的對數似然函數的條件期望;M步(Maximzation step,極大化步),用極大化對數似然函數以確定參數的值,並用於下步的迭代。演算法在E步和M步之間不斷迭代直至收斂,即兩次迭代之間的參數變化小於一個預先給定的閾值時結束。該方法可能會陷入局部極值,收斂速度也不是很快,並且計算很復雜。(SPSS菜單里有這種方法)

10.1多重插補原理
多值插補的思想來源於貝葉斯估計,認為待插補的值是隨機的,它的值來自於已觀測到的值。具體實踐上通常是估計出待插補的值,然後再加上不同的雜訊,形成多組可選插補值。根據某種選擇依據,選取最合適的插補值。

10.2多重填補在SPSS中的實現
10.2.1缺失模式分析
分析>多重歸因>分析模式

10.2.2缺失值的多重填充
分析>多重歸因>歸因缺失數據值

10.2.3採用填充後的數據建模

10.3多重填補在R中的實現(基於mice包)

實例:

11.C4.5方法
通過尋找屬性間的關系來對遺失值填充。它尋找之間具有最大相關性的兩個屬性,其中沒有遺失值的一個稱為代理屬性,另一個稱為原始屬性,用代理屬性決定原始屬性中的遺失值。這種基於規則歸納的方法只能處理基數較小的名詞型屬性。

就幾種基於統計的方法而言,刪除元組法和平均值填充法差於熱卡填充法、期望值最大化方法和多重填充法;回歸是比較好的一種方法,但仍比不上熱卡填充和期望值最大化方法;期望值最大化方法缺少多重填補包含的不確定成分。值得注意的是,這些方法直接處理的是模型參數的估計而不是空缺值預測本身。它們合適於處理無監督學習的問題,而對有監督學習來說,情況就不盡相同了。譬如,你可以刪除包含空值的對象用完整的數據集來進行訓練,但預測時你卻不能忽略包含空值的對象。另外,C4.5和使用所有可能的值填充方法也有較好的補齊效果,人工填寫和特殊值填充則是一般不推薦使用的。

補齊處理只是將未知值補以我們的主觀估計值,不一定完全符合客觀事實,在對不完備信息進行補齊處理的同時,我們或多或少地改變了原始的信息系統。而且,對空值不正確的填充往往將新的雜訊引入數據中,使挖掘任務產生錯誤的結果。因此,在許多情況下,我們還是希望在保持原始信息不發生變化的前提下對信息系統進行處理。
直接在包含空值的數據上進行數據挖掘,這類方法包括貝葉斯網路和人工神經網路等。

貝葉斯網路是用來表示變數間連接概率的圖形模式,它提供了一種自然的表示因果信息的方法,用來發現數據間的潛在關系。在這個網路中,用節點表示變數,有向邊表示變數間的依賴關系。貝葉斯網路僅適合於對領域知識具有一定了解的情況,至少對變數間的依賴關系較清楚的情況。否則直接從數據中學習貝葉斯網的結構不但復雜性較高(隨著變數的增加,指數級增加),網路維護代價昂貴,而且它的估計參數較多,為系統帶來了高方差,影響了它的預測精度。當在任何一個對象中的缺失值數量很大時,存在指數爆炸的危險。人工神經網路可以有效的對付空值,但人工神經網路在這方面的研究還有待進一步深入展開。人工神經網路方法在數據挖掘應用中的局限性。

多數統計方法都假設輸入數據是完整的且不包含缺失值,但現實生活中大多數數據集都包含了缺失值。因此,在進行下一步分析前,你要麼刪除,要麼用合理的數值代理它們,SPSS、R、Python、SAS等統計軟體都會提供一些默認的處理缺失值方法,但這些方法可能不是最優的,因此,學習各種各樣的方法和他們的分支就顯得非常重要。Little和Rubin的《Sstatistical Analysis With Missing Data 》是缺失值領域里經典的讀本,值得一看。

⑤ 股票收盤價為缺失值時移動平均值該如何處理

股票移動平均線是按照實際交易周期計算的,以日線為例,如果當日沒有交易,就不計算,有幾天計算幾天.
例如10天內肯定會有周六周日,周六周日也不交易也不用計算在內,你看股票走勢圖上面那個時間不是連續的,所以說250日均線相當於年線

⑥ 數據缺失值的4種處理方法

缺失值的處理方法

對於缺失值的處理,從總體上來說分為刪除存在缺失值的個案和缺失值插補。對於主觀數據,人將影響數據的真實性,存在缺失值的樣本的其他屬性的真實值不能保證,那麼依賴於這些屬性值的插補也是不可靠的,所以對於主觀數據一般不推薦插補的方法。插補主要是針對客觀數據,它的可靠性有保證。

1、刪除含有缺失值的個案

主要有簡單刪除法和權重法。簡單刪除法是對缺失值進行處理的最原始方法。它將存在缺失值的個案刪除。如果數據缺失問題可以通過簡單的刪除小部分樣本來達到目標,那麼這個方法是最有效的。當缺失值的類型為非完全隨機缺失的時候,可以通過對完整的數據加權來減小偏差。把數據不完全的個案標記後,將完整的數據個案賦予不同的權重,個案的權重可以通過logistic或probit回歸求得。如果解釋變數中存在對權重估計起決定行因素的變數,那麼這種方法可以有效減小偏差。如果解釋變數和權重並不相關,它並不能減小偏差。對於存在多個屬性缺失的情況,就需要對不同屬性的缺失組合賦不同的權重,這將大大增加計算的難度,降低預測的准確性,這時權重法並不理想。

2、可能值插補缺失值

它的思想來源是以最可能的值來插補缺失值比全部刪除不完全樣本所產生的信息丟失要少。在數據挖掘中,面對的通常是大型的資料庫,它的屬性有幾十個甚至幾百個,因為一個屬性值的缺失而放棄大量的其他屬性值,這種刪除是對信息的極大浪費,所以產生了以可能值對缺失值進行插補的思想與方法。

⑦ 缺失值怎麼處理

缺失值分為用戶缺失值(User Missing Value)和系統缺失值(System Missing
Value)。用戶缺失值指在問卷調查中,把被試不回答的一些選項當作缺失值來處理。用戶缺失值的編碼一般用研究者自己能夠識別的數字來表示,如「0」、「9」、「99」等。系統缺失值主要指計算機默認的缺失方式,如果在輸入數據時空缺了某些數據或輸入了非法的字元,計算機就把其界定為缺失值,這時的數據標記為「?」。
一、定義缺失值

SPSS有系統缺失值和用戶缺失值兩類缺失值,系統默認為None(無)。當需要定義缺失值時,單擊Missing下的含有「None」單元格,便進入圖2-4的「缺失值」窗口。缺失值有以下3種選項:
No missing values:沒有缺失值。
Discrete missing values:定義1~3個單一數為缺失值。
Range plus one optional discrete missing
values:定義指定范圍為缺失值,同時指定另外一個不在這一范圍的單一數為缺失值。

至於其他如單元格列長度(Columns)、單元格字元排列方向(Align)和數據量度(Measure)等均是不常用,一般使用系統默認值就可以了,以便減少工作量。
二、缺失值的處理

一般情況下,定義缺失值後的變數可以進行描述統計、相關分析等統計分析。但是,由於缺失值的出現往往會給統計分析帶來一些麻煩和誤差,尤其在時間序列分析中更是如此。在COMPUTE命令中,某個變數帶有缺失值,則帶有缺失值的個案也變成缺失值了。如圖所示:

一般地,對缺失值的處理可採用如下方法:
第一,替代法。即採用統計命令Transform→Replace Missing
Values進行替代,或在相關統計功能中利用其【Opions】等參數進行替代。例如對上圖表中的數據缺失值的處理:以T49這個變數中的所有數據的平均數為替代值,然後再進行COMPUTE命令處理。如圖所示:

第二,剔除法。即剔除有缺失值的題目,或剔除有缺失值的整份問卷。

⑧ 對於缺失值的處理

建議:不同場景下的數據缺失機制不同,這需要工程師基於對業務選擇合適的填充方法。

如何判斷缺失值類型?
缺失值的分類按照數據缺失機制可分為:
可忽略的缺失

不可忽略的缺失

平常工作中遇到的缺失值大部分情況下是隨機的(缺失變數和其他變數有關)

這個就可以用estimator來做了,選其中一個變數(y),然後用其他變數作為X,隨便選個值填充X的缺失部分,用X train一個estimator,再預測y的缺失部分(大致思路)

此外有些數據是符合某種分布的,利用這個分布呢也可以填充缺失的數據,如(EM演算法)

處理缺失數據的三個標准:
1. 非偏置的參數估計
不管你估計means, regressions或者是odds ratios,都希望參數估計可以准確代表真實的總體參數。在統計項中,這意味著估計需要是無偏的。有缺失值可能會影響無偏估計,所以需要處理。
2. 有效的能力:
刪除缺失數據會降低采樣的大小,因此會降低power。如果說問題是無偏的,那麼得到的結果會是顯著的,那麼會有足夠的能力來檢驗這個效力(have adequate power to detect your effects)。反之,整個檢測可能失效。
3. 准確的標准差(影響p值和置信區間):
不僅需要參數估計無偏,還需要標准差估計准確,在統計推斷中才會有效。

缺失值處理的方法大致分為這幾類:1、刪除法;2、基於插補的方法;3、基於模型的方法; 4、不處理; 5、映射高維

有些處理方法是基於完全隨機缺失假設(MCAR),一般來說,當數據不是 MCAR 而 是隨機缺失(MAR)時,這些方法是不適用的;而有些方法(如似然估計法)在 MAR 的假設下是適用的,因此,在進行缺失數據處理時,首先需要認真分析缺失數 據產生的原因,然後採取有針對性的補救措施,這樣才能夠獲得無偏或弱偏估計。

此處關於使用多重插補來處理非隨機缺失(MNAR)的問題,它其實效果不一定,也可能出現效果倒退的情況,總的說多重更適合MAR

註:此處一元與多元指的是僅有一個特徵有缺失值與多個特徵有缺失值

對於不同類別的缺失值的處理方法如上圖。

以下展開介紹各個方法:

註: k-means插補 與KNN插補很相似,區別在於k-means是利用無缺失值的特徵來尋找最近的N個點,然後用這N個點的我們所需的缺失的特徵平均值來填充,而KNN則是先用均值填充缺失值再找最近的N個點。

類似的還有 隨機回歸插補 :也優於純回歸插補

其他單一插補法:

與單一插補方法相比較,多重插補方法充分地考慮了數據的不確定性。多重插補的主要分為三個步驟,綜合起來即為:插補、分析、合並。插補步是為每個缺失值都構造出 m 個可能的插補值,缺失模型具有不確定性,這些插補值能體現出模型的這個性質,利用這些可能插補值對缺失值進行插補就得到了 m 個完整數據集。分析步是對插補後的 m 個完整數據集使用一樣的統計數據分析方法進行分析,同時得到 m 個統計結果。綜合步就是把得到的這 m 個統計結果綜合起來得到的分析結果,把這個分析結果作為缺失值的替代值。多重插補構造多個插補值主要是通過模擬的方式對估計量的分布進行推測,然後採用不同的模型對缺失值進行插補,這種插補是隨機抽取的方式,這樣以來能提高估計的有效性和可靠性。
多重插補-python手冊

多重插補法主要有以下幾種:

(使用回歸、貝葉斯、隨機森林、決策樹等模型對缺失數據進行預測。)

基於已有的其他欄位,將缺失欄位作為目標變數進行預測,從而得到較為可能的補全值。如果帶有缺失值的列是數值變數,採用回歸模型補全;如果是分類變數,則採用分類模型補全。

常見能夠自動處理缺失值模型包括:KNN、決策樹和隨機森林、神經網路和樸素貝葉斯、DBSCAN(基於密度的帶有雜訊的空間聚類)等。

處理思路:
自動插補 :例如XGBoost會通過training loss rection來學習並找到最佳插補值。
忽略 :缺失值不參與距離計算,例如:KNN,LightGBM
將缺失值作為分布的一種狀態 :並參與到建模過程,例如:決策樹以及變體。
不基於距離做計算 :因此基於值得距離計算本身的影響就消除了,例如:DBSCAN。

ID3、c4.5、cart、rf到底是如何處理缺失值的?

最精確的做法,把變數映射到高維空間。
比如性別,有男、女缺失三種情況,則映射成3個變數:是否男、否女、是否缺失。連續型變數也可以這樣處理。比如Google、 網路的CTR預估模型,預處理時會把所有變數都這樣處理,達到幾億維。又或者可根據每個值的頻數,將頻數較小的值歸為一類'other',降低維度。此做法可最大化保留變數的信息。

前推法 (LOCF,Last Observation Carried Forward,將每個缺失值替換為缺失之前的最後一次觀測值)與 後推法 (NOCB,Next Observation Carried Backward,與LOCF方向相反——使用缺失值後面的觀測值進行填補)

這是分析可能缺少後續觀測值的縱向重復測量數據的常用方法。縱向數據在不同時間點跟蹤同一樣本。當數據具有明顯的趨勢時,這兩種方法都可能在分析中引入偏差,表現不佳。

線性插值 。此方法適用於具有某些趨勢但並非季節性數據的時間序列。

季節性調整+線性插值 。此方法適用於具有趨勢與季節性的數據。

總而言之,大部分數據挖掘的預處理都會使用比較方便的方法來處理缺失值,比如均值法,但是效果上並不一定好,因此還是需要根據不同的需要選擇合適的方法,並沒有一個解決所有問題的萬能方法。

具體的方法採用還需要考慮多個方面的:

在做數據預處理時,要多嘗試幾種填充方法,選擇表現最佳的即可。

總結來說,沒有一個最完美的策略,每個策略都會更適用於某些數據集和數據類型,但再另一些數據集上表現很差。雖然有一些規則能幫助你決定選用哪一種策略,但除此之外,你還應該嘗試不同的方法,來找到最適用於你的數據集的插補策略。

當前最流行的方法應該是 刪除法、KNN、多重插補法

參考文獻: 龐新生. 缺失數據處理方法的比較[J]. 統計與決策, 2010(24):152-155.

⑨ 數據分析中的缺失值處理

數據分析中的缺失值處理
沒有高質量的數據,就沒有高質量的數據挖掘結果,數據值缺失是數據分析中經常遇到的問題之一。當缺失比例很小時,可直接對缺失記錄進行舍棄或進行手工處理。但在實際數據中,往往缺失數據佔有相當的比重。這時如果手工處理非常低效,如果舍棄缺失記錄,則會丟失大量信息,使不完全觀測數據與完全觀測數據間產生系統差異,對這樣的數據進行分析,你很可能會得出錯誤的結論。
造成數據缺失的原因
現實世界中的數據異常雜亂,屬性值缺失的情況經常發全甚至是不可避免的。造成數據缺失的原因是多方面的:
信息暫時無法獲取。例如在醫療資料庫中,並非所有病人的所有臨床檢驗結果都能在給定的時間內得到,就致使一部分屬性值空缺出來。
信息被遺漏。可能是因為輸入時認為不重要、忘記填寫了或對數據理解錯誤而遺漏,也可能是由於數據採集設備的故障、存儲介質的故障、傳輸媒體的故障、一些人為因素等原因而丟失。
有些對象的某個或某些屬性是不可用的。如一個未婚者的配偶姓名、一個兒童的固定收入狀況等。
有些信息(被認為)是不重要的。如一個屬性的取值與給定語境是無關。
獲取這些信息的代價太大。
系統實時性能要求較高。即要求得到這些信息前迅速做出判斷或決策。
對缺失值的處理要具體問題具體分析,為什麼要具體問題具體分析呢?因為屬性缺失有時並不意味著數據缺失,缺失本身是包含信息的,所以需要根據不同應用場景下缺失值可能包含的信息進行合理填充。下面通過一些例子來說明如何具體問題具體分析,仁者見仁智者見智,僅供參考:
「年收入」:商品推薦場景下填充平均值,借貸額度場景下填充最小值;
「行為時間點」:填充眾數;
「價格」:商品推薦場景下填充最小值,商品匹配場景下填充平均值;
「人體壽命」:保險費用估計場景下填充最大值,人口估計場景下填充平均值;
「駕齡」:沒有填寫這一項的用戶可能是沒有車,為它填充為0較為合理;
」本科畢業時間」:沒有填寫這一項的用戶可能是沒有上大學,為它填充正無窮比較合理;
「婚姻狀態」:沒有填寫這一項的用戶可能對自己的隱私比較敏感,應單獨設為一個分類,如已婚1、未婚0、未填-1。
缺失的類型
在對缺失數據進行處理前,了解數據缺失的機制和形式是十分必要的。將數據集中不含缺失值的變數稱為完全變數,數據集中含有缺失值的變數稱為不完全變數。從缺失的分布來將缺失可以分為完全隨機缺失,隨機缺失和完全非隨機缺失。
完全隨機缺失(missing completely at random,MCAR):指的是數據的缺失是完全隨機的,不依賴於任何不完全變數或完全變數,不影響樣本的無偏性。如家庭地址缺失。
隨機缺失(missing at random,MAR):指的是數據的缺失不是完全隨機的,即該類數據的缺失依賴於其他完全變數。例如財務數據缺失情況與企業的大小有關。
非隨機缺失(missing not at random,MNAR):指的是數據的缺失與不完全變數自身的取值有關。如高收入人群的不原意提供家庭收入。
對於隨機缺失和非隨機缺失,刪除記錄是不合適的,隨機缺失可以通過已知變數對缺失值進行估計;而非隨機缺失還沒有很好的解決辦法。
說明:對於分類問題,可以分析缺失的樣本中,類別之間的比例和整體數據集中,類別的比例
缺失值處理的必要性
數據缺失在許多研究領域都是一個復雜的問題。對數據挖掘來說,預設值的存在,造成了以下影響:
系統丟失了大量的有用信息;
系統中所表現出的不確定性更加顯著,系統中蘊涵的確定性成分更難把握;
包含空值的數據會使挖掘過程陷入混亂,導致不可靠的輸出。
數據挖掘演算法本身更致力於避免數據過分擬合所建的模型,這一特性使得它難以通過自身的演算法去很好地處理不完整數據。因此,預設值需要通過專門的方法進行推導、填充等,以減少數據挖掘演算法與實際應用之間的差距。
缺失值處理方法的分析與比較
處理不完整數據集的方法主要有三大類:刪除元組、數據補齊、不處理。
刪除元組
也就是將存在遺漏信息屬性值的對象(元組,記錄)刪除,從而得到一個完備的信息表。這種方法簡單易行,在對象有多個屬性缺失值、被刪除的含缺失值的對象與初始數據集的數據量相比非常小的情況下非常有效,類標號缺失時通常使用該方法。
然而,這種方法卻有很大的局限性。它以減少歷史數據來換取信息的完備,會丟棄大量隱藏在這些對象中的信息。在初始數據集包含的對象很少的情況下,刪除少量對象足以嚴重影響信息的客觀性和結果的正確性;因此,當缺失數據所佔比例較大,特別當遺漏數據非隨機分布時,這種方法可能導致數據發生偏離,從而引出錯誤的結論。
說明:刪除元組,或者直接刪除該列特徵,有時候會導致性能下降。
數據補齊
這類方法是用一定的值去填充空值,從而使信息表完備化。通常基於統計學原理,根據初始數據集中其餘對象取值的分布情況來對一個缺失值進行填充。數據挖掘中常用的有以下幾種補齊方法:
人工填寫(filling manually)
由於最了解數據的還是用戶自己,因此這個方法產生數據偏離最小,可能是填充效果最好的一種。然而一般來說,該方法很費時,當數據規模很大、空值很多的時候,該方法是不可行的。
特殊值填充(Treating Missing Attribute values as Special values)
將空值作為一種特殊的屬性值來處理,它不同於其他的任何屬性值。如所有的空值都用「unknown」填充。這樣將形成另一個有趣的概念,可能導致嚴重的數據偏離,一般不推薦使用。
平均值填充(Mean/Mode Completer)
將初始數據集中的屬性分為數值屬性和非數值屬性來分別進行處理。
如果空值是數值型的,就根據該屬性在其他所有對象的取值的平均值來填充該缺失的屬性值;
如果空值是非數值型的,就根據統計學中的眾數原理,用該屬性在其他所有對象的取值次數最多的值(即出現頻率最高的值)來補齊該缺失的屬性值。與其相似的另一種方法叫條件平均值填充法(Conditional Mean Completer)。在該方法中,用於求平均的值並不是從數據集的所有對象中取,而是從與該對象具有相同決策屬性值的對象中取得。
這兩種數據的補齊方法,其基本的出發點都是一樣的,以最大概率可能的取值來補充缺失的屬性值,只是在具體方法上有一點不同。與其他方法相比,它是用現存數據的多數信息來推測缺失值。
熱卡填充(Hot deck imputation,或就近補齊)
對於一個包含空值的對象,熱卡填充法在完整數據中找到一個與它最相似的對象,然後用這個相似對象的值來進行填充。不同的問題可能會選用不同的標准來對相似進行判定。該方法概念上很簡單,且利用了數據間的關系來進行空值估計。這個方法的缺點在於難以定義相似標准,主觀因素較多。
K最近距離鄰法(K-means clustering)
先根據歐式距離或相關分析來確定距離具有缺失數據樣本最近的K個樣本,將這K個值加權平均來估計該樣本的缺失數據。
使用所有可能的值填充(Assigning All Possible values of the Attribute)
用空缺屬性值的所有可能的屬性取值來填充,能夠得到較好的補齊效果。但是,當數據量很大或者遺漏的屬性值較多時,其計算的代價很大,可能的測試方案很多。
組合完整化方法(Combinatorial Completer)
用空缺屬性值的所有可能的屬性取值來試,並從最終屬性的約簡結果中選擇最好的一個作為填補的屬性值。這是以約簡為目的的數據補齊方法,能夠得到好的約簡結果;但是,當數據量很大或者遺漏的屬性值較多時,其計算的代價很大。
回歸(Regression)
基於完整的數據集,建立回歸方程。對於包含空值的對象,將已知屬性值代入方程來估計未知屬性值,以此估計值來進行填充。當變數不是線性相關時會導致有偏差的估計。
期望值最大化方法(Expectation maximization,EM)
EM演算法是一種在不完全數據情況下計算極大似然估計或者後驗分布的迭代演算法。在每一迭代循環過程中交替執行兩個步驟:E步(Excepctaion step,期望步),在給定完全數據和前一次迭代所得到的參數估計的情況下計算完全數據對應的對數似然函數的條件期望;M步(Maximzation step,極大化步),用極大化對數似然函數以確定參數的值,並用於下步的迭代。演算法在E步和M步之間不斷迭代直至收斂,即兩次迭代之間的參數變化小於一個預先給定的閾值時結束。該方法可能會陷入局部極值,收斂速度也不是很快,並且計算很復雜。
多重填補(Multiple Imputation,MI)
多重填補方法分為三個步驟:
為每個空值產生一套可能的填補值,這些值反映了無響應模型的不確定性;每個值都被用來填補數據集中的缺失值,產生若干個完整數據集合。
每個填補數據集合都用針對完整數據集的統計方法進行統計分析。
對來自各個填補數據集的結果進行綜合,產生最終的統計推斷,這一推斷考慮到了由於數據填補而產生的不確定性。該方法將空缺值視為隨機樣本,這樣計算出來的統計推斷可能受到空缺值的不確定性的影響。該方法的計算也很復雜。
C4.5方法
通過尋找屬性間的關系來對遺失值填充。它尋找之間具有最大相關性的兩個屬性,其中沒有遺失值的一個稱為代理屬性,另一個稱為原始屬性,用代理屬性決定原始屬性中的遺失值。這種基於規則歸納的方法只能處理基數較小的名詞型屬性。
就幾種基於統計的方法而言,刪除元組法和平均值法差於熱卡填充法、期望值最大化方法和多重填充法;回歸是比較好的一種方法,但仍比不上hot deck和EM;EM缺少MI包含的不確定成分。值得注意的是,這些方法直接處理的是模型參數的估計而不是空缺值預測本身。它們合適於處理無監督學習的問題,而對有監督學習來說,情況就不盡相同了。譬如,你可以刪除包含空值的對象用完整的數據集來進行訓練,但預測時你卻不能忽略包含空值的對象。另外,C4.5和使用所有可能的值填充方法也有較好的補齊效果,人工填寫和特殊值填充則是一般不推薦使用的。
不處理
補齊處理只是將未知值補以我們的主觀估計值,不一定完全符合客觀事實,在對不完備信息進行補齊處理的同時,我們或多或少地改變了原始的信息系統。而且,對空值不正確的填充往往將新的雜訊引入數據中,使挖掘任務產生錯誤的結果。因此,在許多情況下,我們還是希望在保持原始信息不發生變化的前提下對信息系統進行處理。
不處理缺失值,直接在包含空值的數據上進行數據挖掘的方法包括貝葉斯網路和人工神經網路等。
貝葉斯網路提供了一種自然的表示變數間因果信息的方法,用來發現數據間的潛在關系。在這個網路中,用節點表示變數,有向邊表示變數間的依賴關系。貝葉斯網路僅適合於對領域知識具有一定了解的情況,至少對變數間的依賴關系較清楚的情況。否則直接從數據中學習貝葉斯網的結構不但復雜性較高(隨著變數的增加,指數級增加),網路維護代價昂貴,而且它的估計參數較多,為系統帶來了高方差,影響了它的預測精度。
人工神經網路可以有效的對付缺失值,但人工神經網路在這方面的研究還有待進一步深入展開。
知乎上的一種方案:
4.把變數映射到高維空間。比如性別,有男、女、缺失三種情況,則映射成3個變數:是否男、是否女、是否缺失。連續型變數也可以這樣處理。比如Google、網路的CTR預估模型,預處理時會把所有變數都這樣處理,達到幾億維。這樣做的好處是完整保留了原始數據的全部信息、不用考慮缺失值、不用考慮線性不可分之類的問題。缺點是計算量大大提升。
而且只有在樣本量非常大的時候效果才好,否則會因為過於稀疏,效果很差。
總結
大多數數據挖掘系統都是在數據挖掘之前的數據預處理階段採用第一、第二類方法來對空缺數據進行處理。並不存在一種處理空值的方法可以適合於任何問題。無論哪種方式填充,都無法避免主觀因素對原系統的影響,並且在空值過多的情形下將系統完備化是不可行的。從理論上來說,貝葉斯考慮了一切,但是只有當數據集較小或滿足某些條件(如多元正態分布)時完全貝葉斯分析才是可行的。而現階段人工神經網路方法在數據挖掘中的應用仍很有限。值得一提的是,採用不精確信息處理數據的不完備性已得到了廣泛的研究。不完備數據的表達方法所依據的理論主要有可信度理論、概率論、模糊集合論、可能性理論,D-S的證據理論等。

閱讀全文

與整理股票日收盤數據時缺失值怎麼處理相關的資料

熱點內容
股票總盈虧和總資金對不上 瀏覽:108
白酒行業股票趨勢分析 瀏覽:185
購買股票作為長期持有會計分錄 瀏覽:850
股票業績增速是什麼意思 瀏覽:197
大銀行股票哪個比較好 瀏覽:826
一隻股票買進上限 瀏覽:624
香港股票交易軟體延遲 瀏覽:676
股票型轉換債券 瀏覽:707
股票市場的盈利從哪裡來 瀏覽:874
股票資金第二天多了1毛 瀏覽:759
etf基金和股票基金 瀏覽:405
業績修正預告的股票 瀏覽:214
怎樣發現要漲停點股票 瀏覽:533
傳華智能股票 瀏覽:906
2020年保險行業股票市場 瀏覽:435
愛柯迪股票歷史數據 瀏覽:852
興業銀行股票用的什麼軟體 瀏覽:325
gta5暗殺任務完了怎麼用股票賺錢 瀏覽:950
中國中材集團有限公了司股票代碼 瀏覽:592
農行股票走勢分析 瀏覽:341