MLDemos 介紹
MLDemos 是一種用於機器學習演算法的開源視覺化工具,用於幫助研究和理解多個演算法如何運作以及它們的引數如何影響和修改分類,迴歸,聚類,降維,動態系統和強化學習(獎勵最大化)等問題的結果。
MLDemos 是開源的,可供個人和學術用途免費使用。
由 Basilio Noris 博士在 學習演算法和系統實驗室建立,該計劃的開發得到了以下實體,組織和團體的支援和支援。
安裝
二進位制包:
最低要求:XP SP3
最低要求:Snow Leopard
最低要求:核心 2.6.X 感謝 Philip Guo(網站)
合法性
這些包包含許多開源庫的二進位制版本。我將它們包括在這裡,並且知道這可能與每個相應庫的分發策略不完全相容。我將嘗試聯絡並從相關方獲得必要的許可,在可能的範圍內。與此同時,我真誠地分發這個軟體,我的目標是讓人們能夠學習和使用這裡實現的不同方法。請參閱下面的確認部分,瞭解貢獻人員的列表。
你可以將此軟體用於個人和教育目的,你不得將其用於商業目的。只要你提供此頁面的連結,就可以重新分發軟體。然後,此頁面將始終連結到最新版本的軟體,因此你最好還是在這裡使用該版本。
原始碼:
MLDemos 原始碼可以直接通過 git 或公共倉庫獲取(獲取最新版本的 devel 分支)
git clone git://gitorious.org/mldemos/mldemos.git -b devel
複製程式碼
source backup (0.3.0)
必要條件
該程式碼需要 Qt(5.10)和(部分)OpenCV(3.1)和 Boost(1.47)。這些庫的早期版本可能也可以正常工作,但你也可以使用較新的版本。請務必調整 include 和 lib 路徑以將它們指向正確的目錄。
該軟體使用 QtCreator 2.1 和 2.6 在 Mac OSX High Sierra,Windows 10,Gentoo,Ubuntu 和 Kubuntu 10.04 上進行編譯和測試。
- Windows
為了在 Windows 中編譯 MLDemos,你需要 MinGW(通常安裝 QGSDK 自帶 MinGW)
- Debian
Barak A. Pearlmutter 教授建立了一個 debian 軟體包,很快就會推出。同時你可以建立它下面的說明:
git clone git://github.com/barak/mldemos.git
cd mldemos
git checkout debian
dpkg-checkbuilddeps
fakeroot debian/rules binary
sudo dpkg --install ../mldemos_*.deb
複製程式碼
注意:OpenCV 2.4 不能直接使用(僅 2.1),這將要求你構建 OpenCV2.4。這只是使用 MLP 和 Boosting 所必需的。這是兩個重要的演算法,所以你最好努力一下:
git clone git://github.com/barak/opencv.git
cd opencv
git checkout master
dpkg-checkbuilddeps
fakeroot debian/rules binary
sudo dpkg --install ../*opencv*.deb
複製程式碼
再次,非常感謝 Barak !
** 已知 bug**
- WINDOWS:在 3D 顯示中清除畫布會留下佔用的部分記憶體,這可能會在多次完成時累積(僅限 Windows 上的記憶體錯誤的一部分)
- LINUX(CDE 包)載入和儲存外部檔案不起作用
- 近似最鄰近 KNN 分類在某些機器上建立了並帶有一些指標的奇怪空白區域,。
- 儲存在 Linux CDE 包上不起作用
- 在繪製獎勵地圖時調整畫布大小不會更新基礎資料(避免這樣做)。
- 在 Boosting 中,更改資料不會重新計算學習器,如果資料顯著改變了邊界,則可能導致不良結果
新功能
v0.5.0
新的視覺化和資料集功能
- 新增了樣本的三維視覺化和分類,迴歸及最大化結果
- 新增了視覺化皮膚,其中包含各個圖,相關性,密度等
- 新增了編輯工具來拖動 / 磁化資料,更改類,增加或減少資料集的尺寸
- 新增了分類維度(帶有非數值的索引維度)
- 新增了 “資料集編輯” 皮膚以交換,刪除和重新命名維,類或分類值
- 用於顯示,匯入 / 匯出 ** 資料,分類效能的 ** 幾個錯誤修復
新的演算法和方法
-
新增了 “網格搜尋” 皮膚,用於批量測試一次最多兩個引數的值範圍
-
為非多類演算法新增了 One-vs-All 多類別分類
-
現在可以對新資料進行訓練和測試(對一個資料集進行訓練,對另一個進行測試)
-
新增了 RBF 核心的 SVM 自動相關性確定(感謝 Ashwini Shukla!)
-
新增了成長的分層自組織地圖(Michael Dittenbach 的原始程式碼)
-
新增了隨機森林分類
-
新增 LDA 作為分類器(除投影儀外)
-
為 GMM 和 SVM 新增了儲存 / 載入模型選項
軟體截圖
MLDemos 圖形使用者介面 不同的視覺化和引數效果 樣本圖,密度和相關性的視覺化 SVM + RBF 分類 稀疏高斯過程迴歸 具有避障功能的動力系統(SEDS) 核 PCA 等值線 基於遺傳演算法的強化學習(獎勵最大化 用 RBF 核支援向量迴歸 基於 RBF 核的相關向量機分類 隨機圈弱學習器的提升 具有 RBF 核心的多類 SVM 用高斯混合模型聚類 越來越多的分層自組織地圖演算法
實現方法
分類
- 支援向量機(SVM) (C,nu,Pegasos)
- 相關向量機(RVM)
- 高斯混合模型(GMM)
- 多層感知器 + 後向傳播
- 溫柔的 AdaBoost + 樸素貝葉斯
- 近似 K-Nearest Neighbors(KNN)
- 高斯過程分類(GP)
- 隨機森林
迴歸
- 支援向量迴歸(SVR)
- 相關向量迴歸(RVR)
- 高斯混合迴歸(GMR)
- MLP + BackProp
- 近似 KNN
- 高斯過程迴歸(GPR)
- 稀疏優化高斯過程(SOGP)
- 區域性加權散點圖平滑(LOWESS)
- 區域性加權投影迴歸(LWPR)
動力系統
- GMM + GMR
- LWPR
- SVR
- SEDS
- SOGP(慢!)
- MLP
- KNN
- 增強型 SVM(ASVM)
聚類
- K 均值(K-Means)
- Soft K-Means
- Kernel K-Means
- K-Means++
- GMM
- One Class SVM
- FLAME
- DBSCAN
預測
- 主成分分析(PCA)
- 核心 PCA
- 獨立成分分析(ICA)
- 典型相關分析(CCA)
- 線性判別分析(LDA)
- Fisher 線性判別
- EigenFaces 到 2D(使用 PCA)
獎勵最大化 (強化學習)
- 隨機搜尋
- 隨機漫步
- PoWER
- 遺傳演算法(GA)
- 粒子群優化演算法
- 粒子濾波器
- Donut(一種基於變分自動編碼器的季節性 KPI 的無監督異常檢測演算法)
- 無梯度方法(nlopt)
貢獻
如果你正在開發一種適合 MLDemos 框架的新演算法,並希望將其整合到軟體中,請與我們聯絡(參見下面的資訊)並描述實現 MLDemos 外掛所需的幫助型別。
致謝
如果許多人沒有投入大量精力來實現這裡組合成單個程式的不同演算法,那麼該程式將不存在。
- Florent D'Hallouin (GMM + GMR) - LASA
- Dan Grollman (SOGP) - LASA
- Mohammad Khansari (SEDS + DSAvoid) - LASA
- Ashwini Shukla (ASVM, ARD Kernels) - LASA
- Stephane Magnenat (ESMLR) - website
- Chih-Chung Chang and Chih-Jen Lin (libSVM) - website
- David Mount and Sunik Arya (ANN library) - website
- Davis E. King (DLIB) - website
- Stefan Klanke and Sethu Vijayakumar (LWPR) - website
- Robert Davies (Newmat) - website
- JF Cardoso (ICA) - website
- Steven G. Johnson (NLOpt) - website
- The WillowGarage crowd (OpenCV) - website
- Trolltech/Nokia/Digia (Qt) - website
- The authors of several of the icons - website
- 參加 EPFL 2012 年 ML 課程的博士生(Julien Eberle,Pierre-Antoine Sondag,Guillaume deChambrier,Klas Kronander,Renaud Richardet,Raphael Ullman) 此外,如果沒有 LASA 的支援和開發團隊的工作,該計劃本身的效能將大大降低:Christophe Paccolat,Nicolas Sommer 和 Otpal Vittoz。
還要感謝那些沒有貢獻程式碼但直接貢獻的人:Aude Billard,作為人們所希望的最佳老闆之一,FrançoisFleuret,進行了一系列富有成果的討論,以及 AML 2010 和 2011 年的課程耐心地給它第一次試駕。
快速開始
啟動該軟體 通過單擊滑鼠左鍵或右鍵來繪製樣本。 單擊滑鼠左鍵可生成 0 級樣本 右鍵單擊生成工具欄中所選類的樣本(預設值:1) 選擇 “顯示選項” 圖示 這將允許你顯示模型資訊,置信度 / 似然圖並隱藏原始樣本 滑鼠滾輪將允許你放大和縮小 alt + 拖動將允許你平移空間
- 選擇 “演算法選項” 圖示
- 選擇一個演算法圖示以開啟其各自的選項皮膚
- 單擊 “分類” 按鈕以對當前資料執行演算法
匯入資料
在 MLDemos 中生成資料有三種不同的方式:手動繪製樣本,通過 PCA(通過 PCAFaces 外掛)投影影象資料,或通過載入外部資料。 可以將逗號分隔值或其他基於文字檔案的值表拖放到介面中。在這種情況下,將出現 “資料載入” 對話方塊,允許選擇應載入哪些列或行,解釋為類標籤或標題等。
或者,軟體使用的本機資料格式是基於 ascii 的,包含:
- 樣本數量後跟維度#
- 對於每個樣品,一行包含
- 樣本值以空格分隔(浮點數,每個維度一個)
- 樣本類索引(整數 0 ... 255)
- 用於終止該行的標誌值(整數 0-3)(暫時未使用)
一個簡單的例子是
4 3
0.10 0.11 0.12 0 0
0.14 0.91 0.11 0 0
0.43 0.74 0.41 1 0
0.28 0.34 0.33 1 0
複製程式碼
它提供 4 個三維樣本,兩個來自類別 0,1 個來自類別 1 。(原文有問題吧?)
檔案儲存時從 MLDemos,該軟體新增了當前的演算法引數(假設選擇了演算法),這可用於演示目的。如果不存在此類資訊,則選擇預設演算法引數。
手動繪製一些樣本,或匯入標準資料集並從 MLDemos 中儲存它應該為你提供有關檔案語法的大量示例。