盛泓楊
摘要:數據分析和預測技術目前已被廣泛用于從醫學數據庫中挖掘知識信息,其中分類是一種有監督的學習方法,可用于設計描述重要數據類別的模型。K近鄰算法(KNN)是一種易于實現、最受歡迎且高效的模式識別算法。但是,數據集的不均衡可能會產生不太準確的結果。為了解決這個問題,我們將KNN與遺傳算法(GA)結合在一起進行有效的分類。該方法使用每次迭代生成的合適個體擴展少數類集。通過這種方式使不同類之間數量達到平衡。
關鍵詞:歸一化編碼;PCA;KNN;GA;召回率;準確性
1.引言
該算法首先使用歸一化編碼對數據集中的20個客戶屬性進行歸一化,然后通過PCA從20個數據集中提取與客戶是否會進行定期存款有關的主要屬性,并消除次要屬性,從而將20維屬性減少為3維。為了建立準確的預測模型,總客戶數據集的四分之三用作構建模型的訓練集,其余四分之一的數據用作測試集以測試預測模型的準確性。該算法使用KNN預測個人的購買意愿。具體方法是選擇最接近該個體的k個人(歐拉距離),以投票的形式確定該個體的類別。同時,采用遺傳算法消除樣本不均衡性,提高了準確性。測試數據時,召回率可以達到99%,相較未優化時的結果有很大的提升。
2.算法介紹
2.1數據預處理
為了充分利用每種數據,該算法對原始數據進行了歸一化,并將非數字數據映射為Numbers。 為了提高模型訓練速度,減少冗余,采用主成分分析(PCA)從多個屬性中提取主要成分,并在可以高度還原原始信息的情況下,將特征空間的維數減小為3維。功能標準化以平衡每個功能范圍:其中是特征j的平均值,Sj是特征j的標準偏差。計算協方差矩陣,使用SVD計算的特征向量,從U中取出前K個左奇異向量,構成一個約減矩陣,計算新的特征向量,求各樣本的投影均方誤差,求數據的總變差,判斷下式是否成立,其取值可以為 0.001,0.005,0.010,…。其中當選擇 =0.001,在特征間 99.9% 的差異性得到保留的情況下,可得k = 3,即選擇最大的三個特征值所對應的特征向量做為主成分,將20維的數據空間降低至3維。
2.2行為預測
2.2.1 KNN
該算法使用KNN算法預測客戶行為(即是否訂閱)。
第一步是計算距離,即測試的客戶與訓練集中的每個樣本之間的距離。 計算方法包括歐幾里得距離,曼哈頓距離,切比雪夫距離,余弦。四種計算距離的算法a=(,,) 和b=(,,) 在三維空間:
1.歐氏距離:
2.曼哈頓距離:
3.切比雪夫距離:
4.夾角余弦:
經過多次驗證,不同的距離算法對KNN的預測結果沒有顯著影響,但是在計算兩點之間的距離時,歐氏距離算法相對簡單并且運行速度很快。因此,選擇歐幾里德距離算法來計算被測客戶與訓練集中每個樣本之間的距離。
通過該算法,我們獲得了一長串關于測試客戶與訓練集中每個樣本之間的距離的數據,從最小到最大對它們進行了排名,并選擇了最接近測試客戶的k個樣本。經過一系列測試和驗證后,選擇了最合適的k值。
最后,我們提取的k個樣本分為兩類:“是”和“否”。如果屬于“是”的樣本數量大于“否”,則測試的客戶將是“是”;否則,它們將為“否”。“是”表示客戶有訂購意向,“否”表示客戶無意訂購。
2.2.2 SVM
在機器學習中,支持向量機(SVM,也支持向量網絡)是帶有相關學習算法的監督學習模型,該算法分析用于分類和回歸分析的數據。當給定一組訓練樣本時,每個訓練示例都標記為屬于兩個類別中的一個或另一個,則SVM訓練算法將構建一個模型,該模型將新示例分配給一個類別或另一個類別,使其成為非概率二進制線性分類器。SVM模型是將示例表示為空間中的點,并進行了映射,以使各個類別的示例被盡可能寬的明顯間隙分開。然后,將新示例映射到相同的空間,并根據它們落在間隙的哪一側來預測屬于一個類別。
首先,我們在SVM中使用擬合函數,并且假設輸出數據大于0.5時,我們可以認為輸入數據的類別為1,否則,我們認為其類別為0。
其次,我們在SVM中使用分類函數,將數據輸入到SVM中,然后返回代表輸入數據類別的數字.
由上述可知,使用SVM的準確性和召回率不夠理想,我們認為應該使用更好的算法來描述數據。通過比較SVM算法和KNN算法的結果,可以看出KNN的召回率和準確性率較高,因此本設計選擇了KNN算法。
2.3算法優化
從表中可以看出,樣本中“是”和“否”的數量變化很大,樣本不平衡,導致預測模型的準確率低于50%。 因此,我們需要優化KNN算法。有兩種優化方法。
2.3.1遺傳算法
遺傳算法屬于一類較大的進化算法,它們使用自然進化啟發的技術(例如繼承,變異,選擇和交叉)來生成優化問題的解決方案。 該算法利用遺傳算法擴展少數族群,從而消除樣本不等式。
ⅰ.選擇初始人口
運算符用于選擇要復制的個人。 各種選擇方法有輪盤賭輪選擇,隨機選擇,等級選擇等。 由于訓練集的樣本是離散的任意值。 為了適應特征,該算法選擇“隨機選擇”以形成“初始種群”。
ⅱ.交叉
這是獲取兩個父染色體并從中產生一個子代的過程。 該運算符將應用于創建新樣本。 各種類型的交叉算子有單點交叉,兩點交叉,N點交叉等等。 由于每個樣本僅具有3個屬性,因此單點交叉是最適合數據的運算符。
ⅲ.突變
該運算符用于更改新的解決方案以尋找更好的解決方案。 突變可防止GA陷入局部最小值。
a( i ) 值1的概率為1 / m,0的概率為1-1 / m,通常m =20。L是染色體的長度。
ⅳ.適應度函數
GA中的適應度函數是其表型的目標函數值。 必須先處理染色體,才能計算適應度函數。
2.3.3數據均衡方法(1)
更改訓練集樣本不同類別的權重,即將少數類所投票的權重增大,從而使少數類在投票時與多數類有相同的選擇權重.
3.結果與討論
根據以上數據,如果僅對測試集使用KNN分析,則準確性,召回率和準確率相對較低,這是由于訓練集中兩種類型的樣本嚴重失衡造成的。 因此,有必要對KNN算法進行優化。 具體做法包括權重法和遺傳算法,可以觀察到它們對KNN的三個指標-準確性,召回率和準確率有不同的影響。 準確度和準確率與少數樣品的重量成反比,與GA后少數樣品的倍數成反比。 召回率相反。
參考文獻:
[1]Kubat M,Matwin S.Addressing the course of imbalanced training sets:one-sided selection[C]//Proc of the 14th International Conference on Machine Learning,San Francisco,CA,1997:179-186.
[2]Provost F.Machine leaning from imbalanced data sets.Proc of 17th Nat Conf AAAI,Workshop on Imbalanced Data Sets.Austin: TX,2000: 71—73