近年來,全國賽的題目中,多多少少都有些數(shù)據(jù),而且數(shù)據(jù)量總體來說呈不斷增加的趨勢, 這是由于在科研界和工業(yè)界已積累了比較豐富的數(shù)據(jù),伴隨大數(shù)據(jù)概念的興起及機器學習技術的發(fā)展, 這些數(shù)據(jù)需要轉化成更有意義的知識或模型。 所以在建模比賽中, 只要數(shù)據(jù)量還比較大, 就有機器學習的用武之地。
1.MATLAB機器學習概況
機器學習 ( Machine Learning ) 是一門多領域交叉學科,它涉及到概率論、統(tǒng)計學、計算機科學以及軟件工程。機器學習是指一套工具或方法,憑借這套工具和方法,利用歷史數(shù)據(jù)對機器進行“訓練”進而“學習”到某種模式或規(guī)律,并建立預測未來結果的模型。
機器學習涉及兩類學習方法(如圖1):有監(jiān)督學習,主要用于決策支持,它利用有標識的歷史數(shù)據(jù)進行訓練,以實現(xiàn)對新數(shù)據(jù)的標識的預測。有監(jiān)督學習方法主要包括分類和回歸;無監(jiān)督學習,主要用于知識發(fā)現(xiàn),它在歷史數(shù)據(jù)中發(fā)現(xiàn)隱藏的模式或內(nèi)在結構。無監(jiān)督學習方法主要包括聚類。

圖1 機器學習方法
MATLAB 統(tǒng)計與機器學習工具箱(Statistics and Machine Learning Toolbox)支持大量的分類模型、回歸模型和聚類的模型,并提供專門應用程序(APP),以圖形化的方式實現(xiàn)模型的訓練、驗證,以及模型之間的比較。
分類
分類技術預測的數(shù)據(jù)對象是離散值。例如,電子郵件是否為垃圾郵件,腫瘤是癌性還是良性等等。 分類模型將輸入數(shù)據(jù)分類。 典型應用包括醫(yī)學成像,信用評分等。MATLAB 提供的分類算法包括:

圖2 分類算法家族
回歸
回歸技術預測的數(shù)據(jù)對象是連續(xù)值。 例如,溫度變化或功率需求波動。 典型應用包括電力負荷預測和算法交易等。回歸模型包括一元回歸和多元回歸,線性回歸和非線性回歸,MATLAB 提供的回歸算法有:

圖3 回歸算法家族
聚類
聚類算法用于在數(shù)據(jù)中尋找隱藏的模式或分組。聚類算法構成分組或類,類中的數(shù)據(jù)具有更高的相似度。聚類建模的相似度衡量可以通過歐幾里得距離、概率距離或其他指標進行定義。MATLAB 支持的聚類算法有:

圖4 聚類算法家族
以下將通過一些示例演示如何使用 MATLAB 提供的機器學習相關算法進行數(shù)據(jù)的分類、回歸和聚類。
2.分類技術
支持向量機(SVM)
SVM 在小樣本、非線性及高維數(shù)據(jù)分類中具有很強的優(yōu)勢。在 MATLAB 中,可以利用 SVM 解決二分類問題。同時也可以使用 SVM 進行數(shù)據(jù)的多分類劃分。
1) 二分類
以下示例顯示了利用 MATLAB 提供的支持向量機模型進行二分類,并在圖中畫出了支持向量的分布情況(圖5中圓圈內(nèi)的點表示支持向量)。MATLAB 支持 SVM 的核函數(shù)(KernelFunction 參數(shù))有:線性核函數(shù)(Linear),多項式核函數(shù)(Polynomial)、高斯核函數(shù)(Gaussian)。
%% 支持向量機模型
loadfisheriris;
% 數(shù)據(jù)只取兩個分類:‘versicolor' 和 'virginica'
inds = ~strcmp(species,'setosa');
% 使用兩個維度
X = meas(inds,3:4);
y = species(inds);
tabulate(y)
Value Count Percent
versicolor 50 50.00%
verginica 50 50.00%
%% SVM模型訓練,使用線性核函數(shù)
SVMModel = fitcsvm(X, y,'KernelFunction','linear');
%% 查看進行數(shù)據(jù)劃分的支持向量
sv = SVMModel.SupportVectors;
figure
gscatter( X( : , 1) , X( : , 2) ,y)
holdon
plot(sv( : , 1) , sv( : , 2) ,'ko','MarkerSize', 10)
legend('versicolor','virginica','Support Vector')
holdoff

圖5 支持向量分布
2)多分類
MATLAB 多分類問題的處理是基于二分類模型.下面的示例演示如何利用 SVM 的二分類模型并結合 fitcecoc 函數(shù)解決多分類問題。
% 導入Fisher' s iris數(shù)據(jù)集
loadfisheriris
X = meas;
Y = species;
tabulate(Y)
Value Count Percent
setosa 50 33.33%
versicolor 50 33.33%
virginica 50 33.33%
% 創(chuàng)建SVM模板(二分類模型),并對分類變量進行標準化處理
% predictors
t = templateSVM('Standardize', 1);
% 基于SVM二分類模型進行訓練并生成多分類模型
Mdl = fitcecoc( X, Y,'Learners', t , . . .'ClassNames', {'setosa','versicolor','virginica'})
Mdl =
ClassificationECOC
ResponseName: 'Y'
CategoricalPredictors: [ ]
ClassNames: {'setosa' 'versicolor' 'virginica'}
ScoreTransform: 'none'
BinaryLearners: {3*1 cell}
CodingName: 'onevsone'
MATLAB 的 fitcecoc 函數(shù)支持多種二分類模型,例如, templateKNN, templateTree, templateLinear, templateNaiveBayes, 等等。
3. 回歸
回歸模型描述了響應(輸出)變量與一個或多個預測變量(輸入)變量之間的關系。 MATLAB 支持線性,廣義線性和非線性回歸模型。以下示例演示如何訓練邏輯回歸模型。
邏輯回歸
在 MATLAB 中,邏輯回歸屬于廣義線性回歸的范疇,可以通過使用 fitglm 函數(shù)實現(xiàn)邏輯回歸模型的訓練。
% 判定不同體重、年齡和性別的人的吸煙概率
loadhospital
dsa = hospital;
% 指定模型使用的計算公式
% 公式的書寫方式符合 Wilkinson Notation, 詳情請查看:
% http://cn.mathworks.com/help/stats/wilkinson-notation.html
modelspec ='Smoker ~ 1+ Age + Weight + Sex + Age:Weight + Age:Sex + Weight:Sex';
% 通過參數(shù) ’Disribution' 指定 ‘binomial' 構建邏輯回歸模型
mdl = fitglm(dsa, modelspec,'Distribution','binomial')

4.聚類
聚類是將數(shù)據(jù)集分成組或類。 形成類,使得同一類中的數(shù)據(jù)非常相似,而不同類中的數(shù)據(jù)差異非常明顯。
層次聚類
下面以層次聚類方法為例,演示如何利用 MATLAB 進行聚類分析。
% 數(shù)據(jù)導入
loadfisheriris
% MATLAB中層次聚類是通過linkage函數(shù)實現(xiàn)
% 通過參數(shù)可以配置距離計算方法
% 類內(nèi)距離的計算方法:'euclidean' ,歐幾里得距離
eucD = pdist(mean ,'euclidean');
% 類間距離的計算方法:'ward' ,最小化兩個類內(nèi)點之間聚類平方和
Z = linkage(eucD,'ward');
% 使用 cophenetic 相關系數(shù)評價聚類計算過程(類內(nèi)距離最小,類間距離最大)
% 值越大表明距離計算結果越好
cophenet(Z, eucD)
ans = 0.872828315330562
%生成4個類別的聚類結果
c = cluster(Z,'maxclust', 4);
可以顯示層次聚類生成的聚類樹,使用 dendrogram 函數(shù):
% 查看層次聚類樹
dendrogram(Z)

圖6 層次聚類
以上只是簡單的介紹了一下 MATLAB 支持的機器學習算法的使用方式,更多的信息可以查看 MathWorks 官網(wǎng)和 MATLAB 幫助文檔。
-
函數(shù)
+關注
關注
3文章
4406瀏覽量
66851 -
機器學習
+關注
關注
66文章
8541瀏覽量
136236 -
數(shù)據(jù)分析
+關注
關注
2文章
1508瀏覽量
35944
發(fā)布評論請先 登錄
AI 驅(qū)動三維逆向:點云降噪算法工具與機器學習建模能力的前沿應用
ARM入門學習方法分享
利用MATLAB對交流電機調(diào)速系統(tǒng)進行建模和仿真
直播預約 |數(shù)據(jù)智能系列講座第7期:面向高泛化能力的視覺感知系統(tǒng)空間建模與微調(diào)學習
第一章 W55MH32 高性能以太網(wǎng)單片機的學習方法概述
一種無刷直流電機霍耳信號與定子繞組關系自學習方法
VirtualLab Fusion應用:使用位移基本場方法對空間擴展光源進行建模
DeepSeek與Kimi揭示o1秘密,思維鏈學習方法顯成效
VirtualLab Fusion應用:使用位移基本場方法對空間擴展光源進行建模
傳統(tǒng)機器學習方法和應用指導

MATLAB數(shù)據(jù)建模方法中的機器學習方法介紹
評論