PSO-LSSVM演算法及其MATLAB程式碼
一、PSO
1.概念
粒子群優化演算法(PSO:Particle swarm optimization)是一種進化計算技術。它的基本思想:通過群體中個體之間的協作和資訊共享來尋找最優解。
2.演算法的原理和實現步驟
2.1演算法原理
PSO初始化為一群隨機粒子(隨機解),然後通過迭代找到最優解。在每一次的迭代中,粒子通過跟蹤兩個“極值”(pbest,gbest)來更新自己。在找到這兩個最優值後,粒子通過下面的公式來更新自己的速度和位置。
2.2實現步驟
1)初始化一群微粒(群體規模為N),包括隨機位置和速度;
2)評價每個粒子的初始適應值;
3)將初始適應值作為當前每個粒子的最優值,並記錄當前的位置作為區域性最優位置;
4)將最佳初始適應值作為當前全域性最優值,並記錄當前位置;
5)依據上文提到的計算速度和位置公式進行計算(要注意最大速度限幅處理);
6)比較當前適應值與之前的適應值,如果更優則進行更新;
7)找到當前粒子群的全域性最優;
8)重複5-7步直到達到最小誤差或者達到最大迭代次數;
9)輸出。
3.演算法的優缺點
3.1優點:
1)需要調整的引數少,原理簡單,容易實現;
2)協同搜尋,同時利用個體區域性資訊和群體全域性資訊進行指導搜尋;
3)收斂速度快;
4)更容易飛躍區域性最優資訊。
3.2缺點:
1)演算法區域性搜尋能力較差,搜尋精度不高;
2)算法容易陷入區域性最優,無法獲取全域性最優近似解。
二、LSSVM(最小二乘支援向量機)
1.LSSVM介紹
最小二乘支援向量機是支援向量機的一種改進,它是將傳統支援向量機中的不等式約束改為等式約束,且將誤差平方和(SumSquaresError)損失函式作為訓練集的經驗損失,這樣就把解二次規劃問題轉化為求解線性方程組問題,提高求解問題的速度和收斂精度。
2.最小二乘支援向量機MATLAB工具箱
最小二乘支援向量機MATLAB工具箱下載地址見參考文獻[4],工具箱用於解決分類問題主要用到3個函式,trainlssvm函式用來訓練建立模型,simlssvm函式用於預估模型,plotlssvm函式是工具箱的專用繪圖函式。
LSSVM要求調整的引數有兩個:gam和sig2。其中gam是正則化引數,決定了適應誤差的最小化和平滑程度,sig2是RBF函式的引數。type有兩種型別,一種是classfication,用於分類,一種是function estimation,用於函式迴歸。
三、PSO優化LSSVM實現多分類
PSO通過優化LSSVM的兩個引數gam和sig2,尋找引數的最優組合,從而提高分類精度。
LSSVM工具箱的trainlssvm函式和simlssvm函式一般用於二分類問題,多分類問題則需要構造多個二分類器。LSSVM工具箱的code函式可以將多分類任務編碼和解碼為多個二分類器。
首先使用code函式對多分類問題進行編碼,然後用trainlssvm函式和simlssvm函式分別對資料進行訓練和測試,再使用code函式對測試結果進行解碼。PSO優化LSSVM實現多分類的原始碼見參考文獻[6],分類的精確率能達到90%以上。
參考文獻
相關文章
- 量子圖形加密演算法的MATLAB程式碼實現加密演算法Matlab
- 基於Matlab Coder將matlab程式碼轉換成c程式碼MatlabC程式
- 資料分析處理之PCA OLSR PCR PLSR(NIPALS)及其Matlab程式碼實現PCAMatlab
- matlab練習程式(Sinkhorn演算法)Matlab演算法
- MATLAB實戰系列(十一)-多種群遺傳演算法的函式優化演算法(附MATLAB程式碼)Matlab演算法函式優化
- python呼叫matlab程式,MATLAB 指令碼打包為 exe可執行程式PythonMatlab指令碼行程
- MATLAB及其訊號處理基礎Matlab
- 主成分分析及其matlab實現Matlab
- (二)區塊鏈的共識演算法:PoS 及其 例子 程式碼 實現區塊鏈演算法
- 如何在matlab程式碼中加一層分隔?Matlab
- MATLAB人工神經網路ANN程式碼Matlab神經網路
- Tarjan演算法及其應用 總結+詳細講解+詳細程式碼註釋演算法
- matlab程式碼轉exe可執行軟體Matlab
- 評價模型TOPSIS與熵權法MATLAB程式碼模型熵Matlab
- [MATLAB]最短路徑Floyd演算法Matlab演算法
- MATLAB生成.coe檔案和.mif檔案程式碼示例Matlab
- AI及其判別演算法AI演算法
- Matlab程式設計之——卷積神經網路CNN程式碼解析Matlab程式設計卷積神經網路CNN
- 低程式碼平臺的功能及其用處
- 使用MATLAB compiler將matlab程式轉成獨立應用程式exeMatlabCompile
- MATLAB實戰系列(十)-二維裝箱問題之BL法修正版(附MATLAB程式碼)Matlab
- FFT演算法實現與分析MATLABFFT演算法Matlab
- 24. 平衡二叉樹,及其程式碼實現二叉樹
- 【演算法】排序02——歸併排序介紹及其在分治演算法思想上與快排的區別(含歸併程式碼)演算法排序
- matlab練習程式(灰度拉伸)Matlab
- MATLAB神經網路工具箱(程式碼簡單實現)Matlab神經網路
- MATLAB 檢驗資料正態分佈及程式碼實現Matlab
- 設計模式及其在spring中的應用(含程式碼)設計模式Spring
- 蟻群演算法原理及Matlab實現演算法Matlab
- 排隊論演算法的matlab實現演算法Matlab
- 單行程式碼演算法解答行程演算法
- nms 演算法演示(附程式碼)演算法
- COST231-WI模型通道模擬,原始碼模擬matlab程式設計原始碼模型原始碼Matlab程式設計
- YUV影像質量的客觀評估SSIM matlab程式碼實現Matlab
- 一對一直播原始碼,利用matlab實現程式計時功能原始碼Matlab
- matlab練習程式(水波特效)Matlab特效
- matlab: 檢查程式執行效率Matlab
- Java 併發程式設計:ThreadLocal 的使用及其原始碼實現Java程式設計thread原始碼