機器學習算法的開源可視化工具: MLDemos

MLDemos 介紹

MLDemos 是一種用於機器學習算法的開源可視化工具,用於幫助研究和理解多個算法如何運做以及它們的參數如何影響和修改分類,迴歸,聚類,降維,動態系統和強化學習(獎勵最大化)等問題的結果。php

MLDemos 是開源的,可供我的和學術用途無償使用。html

由 Basilio Noris 博士在 學習算法和系統實驗室建立,該計劃的開發獲得瞭如下實體,組織和團體的支持和支持。git

Git 服務器 Git 服務器 EPFL

安裝

二進制包:

Git 服務器

MLDemos 0.5.2 for Windowsgithub

最低要求:XP SP3web

Git 服務器

MLDemos 0.5.2 for Mac算法

最低要求:Snow Leopardubuntu

Git 服務器

MLDemos 0.3.2_CDEbash

最低要求:內核 2.6.X 感謝 Philip Guo(網站服務器

合法性

這些包包含許多開源庫的二進制版本。我將它們包括在這裏,而且知道這可能與每一個相應庫的分發策略不徹底兼容。我將嘗試聯繫並從相關方得到必要的許可,在可能的範圍內。與此同時,我真誠地分發這個軟件,個人目標是讓人們可以學習和使用這裏實現的不一樣方法。請參閱下面的確認部分,瞭解貢獻人員的列表。框架

你能夠將此軟件用於我的和教育目的,你不得將其用於商業目的。只要你提供此頁面的連接,就能夠從新分發軟件。而後,此頁面將始終連接到最新版本的軟件,所以你最好仍是在這裏使用該版本。

源代碼:

MLDemos 源代碼能夠直接經過 git 或公共倉庫獲取(獲取最新版本的 devel 分支)

git clone git://gitorious.org/mldemos/mldemos.git -b devel
複製代碼

public GitHub repository

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 中,更改數據不會從新計算學習器,若是數據顯着改變了邊界,則可能致使不良結果

新功能

Changelog

v0.5.0

新的可視化和數據集功能

  • 添加了樣本的三維可視化和分類,迴歸及最大化結果
  • 添加了可視化面板,其中包含各個圖,相關性,密度等
  • 添加了編輯工具來拖動 / 磁化數據,更改類,增長或減小數據集的尺寸
  • 添加了分類維度(帶有非數值的索引維度)
  • 添加了 「數據集編輯」 面板以交換,刪除和重命名維,類或分類值
  • 用於顯示,導入 / 導出 ** 數據,分類性能的 ** 幾個錯誤修復

新的算法和方法

  • 添加了 「網格搜索」 面板,用於批量測試一次最多兩個參數的值範圍

  • 爲非多類算法添加了 One-vs-All 多類別分類

  • 如今能夠對新數據進行訓練和測試(對一個數據集進行訓練,對另外一個進行測試)

  • 添加了 RBF 內核的 SVM 自動相關性肯定(感謝 Ashwini Shukla!)

  • 添加了成長的分層自組織地圖(Michael Dittenbach 的原始代碼)

  • 添加了隨機森林分類

  • 添加 LDA 做爲分類器(除投影儀外)

  • 爲 GMM 和 SVM 添加了保存 / 加載模型選項

軟件截圖

MLDemos 圖形用戶界面
MLDemos 圖形用戶界面
不一樣的可視化和參數效果
不一樣的可視化和參數效果
樣本圖,密度和相關性的可視化
樣本圖,密度和相關性的可視化
SVM + RBF 分類
SVM + RBF 分類
稀疏高斯過程迴歸
稀疏高斯過程迴歸
具備避障功能的動力系統(SEDS)
具備避障功能的動力系統(SEDS)
核 PCA 等值線
核 PCA 等值線
基於遺傳算法的強化學習(獎勵最大化)
基於遺傳算法的強化學習(獎勵最大化
用 RBF 核支持向量迴歸
用 RBF 核支持向量迴歸
基於 RBF 核的相關向量機分類
基於 RBF 核的相關向量機分類
隨機圈弱學習器的提高
隨機圈弱學習器的提高
具備 RBF 內核的多類 SVM
具備 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 的,包含:

  1. 樣本數量後跟維度#
  2. 對於每一個樣品,一行包含
    1. 樣本值以空格分隔(浮點數,每一個維度一個)
    2. 樣本類索引(整數 0 ... 255)
    3. 用於終止該行的標誌值(整數 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 中保存它應該爲你提供有關文件語法的大量示例。

網站: mldemos.b4silio.com/

相關文章
相關標籤/搜索