MATLAB簡單實現ID3


  再看《MATLAB數據分析與挖掘實戰》,簡單總結下今天看到的經典的決策樹算法——ID3.

  ID3:在決策樹的各級節點上,使用信息增益的方法作為屬性的選擇標准,來幫助確定生成每個節點時所應采取的合適屬性。

  關於信息增益,知乎上這個回答也講的很不錯。信息增益=熵 - 條件熵,信息增益越大,說明該條件對事件確定性的影響越大。所以,在決策樹中,我們將信息增益值作為測試屬性。把測試屬性取值相同的樣本划為同一個子樣本集。

  基本流程:

  ·對當前樣本,計算所有屬性的信息增益,並將信息增益作為測試屬性;

  ·若子樣本集的類別屬性只含有單個屬性,則分支為葉子節點,判斷其屬性值並貼上相應的,然后返回調用處;否則對子樣本集遞歸調用算法。

  原理看起來有點復雜,其實用MATLAB實現起來及其簡單:

%% 使用ID3決策樹算法預測銷量高低
clear;
% 參數初始化
inputfile = 'F:\Techonolgoy\MATLAB\file\MTALAB數據分析與挖掘實戰\Datasets\chapter5\chapter5\示例程序\data\sales_data.xls';   % 銷量及其他屬性數據

%% 數據預處理
disp('正在進行數據預處理...');
[matrix,attributes_label,attributes] =  id3_preprocess(inputfile);

%% 構造ID3決策樹,其中id3()為自定義函數
disp('數據預處理完成,正在進行構造樹...');
tree = id3(matrix,attributes_label,attributes);

%% 打印並畫決策樹
[nodeids,nodevalues] = print_tree(tree);
tree_plot(nodeids,nodevalues);

disp('ID3算法構建決策樹完成!');

  ID3缺點:

  ·偏向選擇取值最多的即所謂的高度分支屬性,不一定最優。

  ·只能處理離散屬性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM