機器學習通過從資料裡擷取規則或模式來把資料轉換成資訊。主要的方法有歸納學習法和分析學習法。
資料首先被預先處理,形成特徵,然後根據特徵建立某種模型。機器學習演算法分析收集到的資料,分配權重、閾值和其他參數達到學習目的。
如果只想把資料分成不同的類,那麼“聚類”演算法就夠了;如果需要預測,則需要一個“分類”演算法。
OpenCV庫裡麵包含的是基於機率統計的機器學習方法,貝葉斯網路、馬爾科夫隨機場、圖模型等較新的演算法還在成長過程中,所以OpenCV還沒有收錄。
機器學習的演算法有很多很多:
1、Mahalanobis
2、K-means 非監督的聚類方法
3、樸素貝葉斯分類器 特徵是高斯分布&&統計上相互獨立 條件比較苛刻
4、決策數 判別分類器,根據閾值分類資料,速度快。ID3,C4.5
5、Boosting 多個判別子分類器的組合
6、隨機森林 由多個決策樹組成
7、臉部偵測/Haar分類器 使用Boosting演算法
8、期望最大化EM 用於聚類的非監督產生演算法
9、K-近鄰 最簡單的分類器
10、神經網路(多層感知器) 訓練分類器很慢,但是識別很快
11、支援向量機 SVM 可以分類,也可以迴歸。通過分類超平面實現在高維空間裡的最優分類
12、遺傳演算法 借鑒生物遺傳機制 ,隨機化非線性計算演算法
總之呢,個人覺得,機器學習、資料採礦、模式識別、專家系統等方向和領域目前還是一種比較混亂的局面。學術界和商業界可能是不同的,關於演算法的理論研究和使用這些方法產生商品是分別關注的。按照不同的領域、不同的方法可以劃分出眾多的分支。但是有一點是肯定的,這些在上世紀80年代提出來的公式和證明,如今正在變成一行行的代碼,在一些貓(tomcat)、IIS等伺服器的支援下,爬上了網路,到處尋覓對主人有用的資訊,然後運送到網路中,最終產生產品,或者半產品。看看你電腦上的那根網線,它那麼小,但是很難想象它從你的電腦上拿走了什麼,又給你送來了什麼。有些遠了,繼續說資料這些事。
目前我接觸過的演算法有:(太多了,一時間真不好說出來) 神經網路(感知器、BP、RBF等很多的演算法),遺傳演算法,支援向量機,層次分析法,各種迴歸,灰色系統(國產的方法,用於不確定知識的預測),粗糙集,貝葉斯網路,時間序列分析(也有很多)。
學習和研究紙面的演算法公式只是第一步,不可以忽略的基礎,如何使用這些方法,在浩瀚的互連網上找到自己需要的、滿足客戶需要的資料和資訊,從而讓需要的人能夠更加方便地得到,是今後的重頭戲了。貌似很多的企業已經進軍資料倉儲這一塊,並嘗到了巨大的甜頭,也有企業養著一隊預備軍,專註研發,隨時準備奔赴前線,佔領市場。無線網路市場的競爭已經到了激烈的局面,普適計算的時代也快到了吧。它依賴於硬體產品的可穿戴,和軟體產品的內嵌、快速響應。總而言之,越來越人性化,誰都不願意抱著膝上型電腦蹲廁所,是吧?