决策树之信息增益计算模拟
转自:https://blog.****.net/newcloudtech/article/details/77773403
决策树算法有一个关键步骤就是最优特征的选择,利用信息增益算法选择该特征,例子来自于《统计学习方法》
利用MATLAB2017A版本,编写MATLAB程序计算之,将上述的数据保存到data5.xlsx中
clear;clc;close all
% 计算信息增益,决策树算法的基础
data = readtable('data5.xlsx');
data = string(table2cell(data));
%
H = @(p) sum(-p.*log2(p));
% 计算H(D)
HDD = data(:, end);
uHDD = unique(HDD);
n = length(HDD);
HD = getHDi(HDD, uHDD);
% 计算g(D)
gD = HD - cellfun(@(z)...
sum(z == unique(z)') *...
arrayfun(@(x)getHDi(HDD(z == x), uHDD),...
unique(z)) / n, num2cell(data(:, 2: end-1),1));
[~, idx] = max(gD);
fprintf('选择第%d个特征最为最优特征\n', idx);
function y = getHDi(x, uHDD)
H = @(p) nansum(-p*log2(p)');
y = H(sum(x == uHDD') / length(x));
end