编程语言
首页 > 编程语言> > ID3算法应用举例

ID3算法应用举例

作者:互联网

利用ID3算法实现从数据集归纳出决策树。

背景:
张三想要买一套房,可能左右他是否愿意购买这套房主要有四个方面的因素,这四种因素及可能出现的值如下表所示:

院子 车库数 楼层数 地理位置
大/小 1/2/3 2/3 城郊/市中心

张三看了14套房子,以下是这些房子具备的属性以及张三对于购买这些房子的意愿:

院子 车库数 楼层数 地理位置 是否愿意购买
3 2 城郊
2 3 市中心
1 3 市中心
2 3 城郊
3 3 市中心
2 3 市中心
2 2 市中心
3 3 城郊
1 2 市中心
1 3 城郊
3 2 城郊
2 2 城郊
1 2 城郊
1 2 城郊

在这14套房中,张三愿意购买的有10套,不愿意购买的有4套。由此可得原表格的熵为:
H(S)=414log24141014log21014 H(S)=-\frac{4}{14} log_{2}\frac{4}{14}-\frac{10}{14} log_{2}\frac{10}{14} H(S)=−144​log2​144​−1410​log2​1410​
每个因素的信息增益:

院子 愿意 不愿意
6 1
4 3

G(S,)=H(S)SSH(S)SSH(S)=0.072 G(S,院子)=H(S)-\frac{|S_{大}|}{|S|}H(S_{大})-\frac{|S_{小}|}{|S|}H(S_{小})=0.072 G(S,院子)=H(S)−∣S∣∣S大​∣​H(S大​)−∣S∣∣S小​∣​H(S小​)=0.072

车库数 愿意 不愿意
1 3 2
2 3 2
3 4 0

G(S,)=H(S)S1SH(S1)S2SH(S2)S3SH(S3)=0.166 G(S,车库数)=H(S)-\frac{|S_{1}|}{|S|}H(S_{1})-\frac{|S_{2}|}{|S|}H(S_{2})-\frac{|S_{3}|}{|S|}H(S_{3})=0.166 G(S,车库数)=H(S)−∣S∣∣S1​∣​H(S1​)−∣S∣∣S2​∣​H(S2​)−∣S∣∣S3​∣​H(S3​)=0.166

楼层数 愿意 不愿意
2 4 3
3 6 1

G(S,)=H(S)S2SH(S2)S3SH(S3)=0.072 G(S,楼层数)=H(S)-\frac{|S_{2}|}{|S|}H(S_{2})-\frac{|S_{3}|}{|S|}H(S_{3})=0.072 G(S,楼层数)=H(S)−∣S∣∣S2​∣​H(S2​)−∣S∣∣S3​∣​H(S3​)=0.072

地理位置 愿意 不愿意
市中心 4 2
郊区 6 2

G(S,)=H(S)SSH(S)SSH(S)=0.003 G(S,地理位置)=H(S)-\frac{|S_{市中心}|}{|S|}H(S_{市中心})-\frac{|S_{郊区}|}{|S|}H(S_{郊区})=0.003 G(S,地理位置)=H(S)−∣S∣∣S市中心​∣​H(S市中心​)−∣S∣∣S郊区​∣​H(S郊区​)=0.003
显然,车库数的信息增益远大于其他三项,且当车库数为3时所有结果均为愿意,因此初始决策树如下图所示:

132车库数愿意/不愿意=3/2愿意愿意/不愿意=3/2

对于只有1个车库的房子,房子具备的属性以及张三对于购买这些房子的意愿如下所示:

院子 楼层数 地理位置 是否愿意购买
3 市中心
2 市中心
3 城郊
2 城郊
2 城郊

此表格的熵为:
H(S)=35log23525log225=0.971 H(S)=-\frac{3}{5} log_{2}\frac{3}{5}-\frac{2}{5} log_{2}\frac{2}{5}=0.971 H(S)=−53​log2​53​−52​log2​52​=0.971
其中每个属性的信息增益:
G(S,)=H(S)SSH(S)SSH(S)=0.971 G(S,院子)=H(S)-\frac{|S_{大}|}{|S|}H(S_{大})-\frac{|S_{小}|}{|S|}H(S_{小})=0.971 G(S,院子)=H(S)−∣S∣∣S大​∣​H(S大​)−∣S∣∣S小​∣​H(S小​)=0.971
G(S,)=H(S)S2SH(S2)S3SH(S3)=0.020 G(S,楼层数)=H(S)-\frac{|S_{2}|}{|S|}H(S_{2})-\frac{|S_{3}|}{|S|}H(S_{3})=0.020 G(S,楼层数)=H(S)−∣S∣∣S2​∣​H(S2​)−∣S∣∣S3​∣​H(S3​)=0.020
G(S,)=H(S)SSH(S)SSH(S)=0.020 G(S,地理位置)=H(S)-\frac{|S_{市中心}|}{|S|}H(S_{市中心})-\frac{|S_{郊区}|}{|S|}H(S_{郊区})=0.020 G(S,地理位置)=H(S)−∣S∣∣S市中心​∣​H(S市中心​)−∣S∣∣S郊区​∣​H(S郊区​)=0.020
于是决策树可以以“院子大小”为标准,进一步划分,如下所示:

132车库数院子大小愿意愿意/不愿意=3/2愿意不愿意

对于只有2个车库的房子,房子具备的属性以及张三对于购买这些房子的意愿如下所示:

院子 楼层数 地理位置 是否愿意购买
3 市中心
3 城郊
3 市中心
2 市中心
2 城郊

此表格的熵为:
H(S)=35log23525log225=0.971 H(S)=-\frac{3}{5} log_{2}\frac{3}{5}-\frac{2}{5} log_{2}\frac{2}{5}=0.971 H(S)=−53​log2​53​−52​log2​52​=0.971
其中每个属性的信息增益:
G(S,)=H(S)SSH(S)SSH(S)=0.020 G(S,院子)=H(S)-\frac{|S_{大}|}{|S|}H(S_{大})-\frac{|S_{小}|}{|S|}H(S_{小})=0.020 G(S,院子)=H(S)−∣S∣∣S大​∣​H(S大​)−∣S∣∣S小​∣​H(S小​)=0.020
G(S,)=H(S)S2SH(S2)S3SH(S3)=0.971 G(S,楼层数)=H(S)-\frac{|S_{2}|}{|S|}H(S_{2})-\frac{|S_{3}|}{|S|}H(S_{3})=0.971 G(S,楼层数)=H(S)−∣S∣∣S2​∣​H(S2​)−∣S∣∣S3​∣​H(S3​)=0.971
G(S,)=H(S)SSH(S)SSH(S)=0.020 G(S,地理位置)=H(S)-\frac{|S_{市中心}|}{|S|}H(S_{市中心})-\frac{|S_{郊区}|}{|S|}H(S_{郊区})=0.020 G(S,地理位置)=H(S)−∣S∣∣S市中心​∣​H(S市中心​)−∣S∣∣S郊区​∣​H(S郊区​)=0.020
由此易得完整的决策树,如下所示:

13223车库数院子大小愿意楼层数愿意不愿意不愿意愿意

标签:市中心,frac,S3,S2,ID3,愿意,算法,举例,楼层
来源: https://blog.csdn.net/InFeverDream/article/details/106852988