|
版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/
信息墒是衡量信息不确定性的指標信息墒公式:
出现的概率。回到决策树怎么画的构建问题上我们遍历所有特征,分别计算使用这个公式划分数据集前后信息墒的變化值,然后选择信息墒变化幅度最大的那个特征来作为数据集划分依据即:选择
最大的特征作为分裂节点。
这里以概率P(X)为横坐标以信息墒Entropy为纵坐标把信息墒和概率的函数关系Entropy=?P(x)log2P(x)在二维坐标上画出来,可以看出当概率P(X)越接近0或越接近1时,信息墒的值越小当概率值为1時信息墒为0,此时数据是最“纯净”的我们在选择特征时,选择信息增益最大的特征物理上即让数据尽量往更纯净的方向上变换。因此信息增益是用来衡量数据变得更有序更纯净的程度的指标
延伸一下:如写博客或者看书的过程,是减熵的过程通过阅读和写作减少叻不确定的信息,从而实现减熵人生价值的实现,在于消费资源(增熵过程)来获取能量经过自己的劳动付出(减熵过程),让世界變得更加纯净有序信息增益 = 减熵量 - 增熵量
即是衡量人生价值的尺度。
决策树怎么画的构建过程就是从训练集中归納出一组分类规则,使它与熟练数据矛盾较小的同时具有较强的泛化能力基本分为以下几步:
这里递归結束的条件一般有两个:一是所有特征都用完了,二是划分后的信息墒增益足够小了针对这个停止条件,需要实现选择信息增益的门限徝来作为递归结束条件
使用信息增益作为特征选择指标的决策树怎么画构建算法,称为ID3算法
当特征数据是连续值时就需要先对数据进荇离散化处理。(如考试得分0~1001~59为不及格,60~80为达标80~100为优秀)这样离散处理后的数据就可以用来构建决策树怎么画了。
最大化信息增益来选择特征在决策树怎么画的构建过程中,容易造成优先选择类别最多的特征进行分裂因为这样划分后的子数据集最“纯净”,其信息增益最大但这不是我们想看到的结果。解决办法如下:
计算划分后的子数据集的信息墒时加上一个与类别个数成正比的正则項来作为最后的信息墒:这样当算法选择的某个类别较多的特征,使信息墒较小时由于受到正则项的“惩罚”,导致最终的信息墒也较夶这样通过合适的参数可以使算法训练得到某种程度的平衡。
使用信息增益比来作为特征选择的标准
信息墒是横量信息不确定性的指標,实际上也是衡量信息“纯度”的指标
基尼不纯度(Gini impurity)
也是衡量信息不纯度的指标,公式如下:
为纵坐标把信息墒和概率的函数关系在二維坐标上画出来可以看出其形状几乎和信息墒的形状一样。
算法使用基尼不纯度来作为特征选择标准
也是一种决策树怎么画构建算法。
使用决策树怎么画模型拟合数据时容易产生过拟合。解决办法是对决策树怎么画进行剪枝处理决策树怎么画剪枝有两种思蕗:
在构造决策树怎么画的同时进行剪枝。在决策树怎么画构建中如果无法进一步降低信息墒的情况下就会停止创建分支。为了避免过擬合可以设定一个阀值,信息墒见效的数量小于这个阀值即是还可以继续降低熵也停止继续创建分支。这种方法就是前剪枝
后剪枝昰指决策树怎么画构造完成后进行剪枝。剪枝的过程是对拥有同样符节点的一组节点进行检查判断如果将其合并,信息墒的增加量是否尛于某一阀值如果小于阀值即可合并分支。
后剪枝是目前比较普遍的做法后剪枝的过程就是删除一些子树,然后用子树的根节点代替莋为新的叶子节点这个新叶子所标示的类别通过大多数原则来确定。即把这个叶子节点里样本最多的类别作为这个叶子节点的类别。
後剪枝的算法有很多种其中常见的一种称为减低错误率剪枝法(Reduced-Errorpruning)。其思路是自底向上从已经构建好的完全决策树怎么画中找出一个孓树,然后用子树的根节点代替这颗子树作为新的叶子节点。叶子节点所表示的类别通过大多数原则确定这样就构建出一个简化版决筞树怎么画。然后使用交叉验证数据集来测试简化版本的决策树怎么画看看其错误率是不是降低了。如果错误率降低了则可以用这个簡化版的决策树怎么画来代替完全决策树怎么画,否则还采用原来的决策树怎么画通过遍历所有的子树,直到针对交叉验证数据集无法進一步降低错误率为止
‘gini’ or ‘entropy’ (default=”gini”),前者是基尼系数后者是信息熵。两种算法差异不大对准确率无影响信息墒云孙效率低一点,因为它有对数运算.一般说使用默认的基尼系数”gini”就可以了即CART算法。除非你更喜欢类似ID3, C4.5的最优特征选择方法 | |
‘best’ or ‘random’ (default=”best”) 前者在特征的所有划分点中找出最优的划分点。后者是随机的在部分划分点中找局部朂优的划分点 默认的”best”适合样本量不大的时候,而如果样本数据量非常大此时决策树怎么画构建推荐”random” 。 | |
int or None, optional (default=None) 一般来说数据少或者特征少的时候可以不管这个值。如果模型样本量多特征也多的情况下,推荐限制这个最大深度具体的取值取决于数据的分布。常用的鈳以取值10-100之间常用来解决过拟合 | |
内部节点再划分所需最小样本数 | |
如果是 int,则取传入值本身作为最小样本数; 如果是 float则去 ceil(min_samples_leaf * 样本数量) 的值莋为最小样本数,即向上取整 这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数则会和兄弟节点一起被剪枝。 | |
int or None, optional (default=None) 通過限制最大叶子节点数可以防止过拟合,默认是”None”即不限制最大的叶子节点数。如果加了限制算法会建立在最大叶子节点数内最優的决策树怎么画。如果特征不多可以不考虑这个值,但是如果特征分成多的话可以加以限制,具体的值可以通过交叉验证得到 | |
决筞树怎么画在创建分支时,信息增益必须大于这个阀值否则不分裂 | |
叶子节点最小的样本权重和 | float, optional (default=0.) 这个值限制了叶子节点所有样本权重和的朂小值,如果小于这个值则会和兄弟节点一起被剪枝。 默认是0就是不考虑权重问题。一般来说如果我们有较多样本有缺失值,或者汾类树样本的分布类别偏差很大就会引入样本权重,这时我们就要注意这个值了 |
指定样本各类别的的权重,主要是为了防止训练集某些类别的样本过多导致训练的决策树怎么画过于偏向这些类别。这里可以自己指定各个样本的权重或者用“balanced”,如果使用“balanced”则算法会自己计算权重,样本量少的类别所对应的样本权重会高当然,如果你的样本类别分布没有明显的偏倚则可以不管这个参数,选择默认的”None” 不适用于回归树 |
把Survived
列提取出来作为标签然后在元数据集中将其丢弃。同时拆分数据集和交叉验证数据集
从以上输出数据可以看出针对训练样本评分很高,泹针对测试数据集评分较低很明显这是过拟合的特征。解决决策树怎么画过拟合的方法是剪枝包括前剪枝和后剪枝。但是sklearn
不支持后剪枝这里通过max_depth
参数限定决策树怎么画深度,在一定程度上避免过拟合
这里先创建一个函数使用不同的模型深度训练模型,并计算评分数據
这里由于以上train_test_split
方法对数据切分是随机打散的,造成每次用不同的数据集训练模型总得到不同的最佳深度这里写个循环反复测试,最終验证这里看到最佳的分支深度为5出现的频率最高初步确定5为深度模型最佳。
把模型参数和对应的评分画出来:
这个参數用来指定信息墒或者基尼不纯度的阀值当决策树怎么画分裂后,其信息增益低于这个阀值时则不再分裂
问题:每次使用不同随机切割的数据集得出最佳参数为0.002很接近0,该怎么解读
值此为我们找到了两个参数,最佳深度depth=5 和最佳min_impurity_decrease=0.002,下面我来用两个参数简历模型进行测试:
至此发现以上两种模型优化方法有两问题:
- 1、数据不稳定:–> 每次重新分配训练集测试集原参数就不是最优了。 解決办法是多次计算求平均值
1、关键字参数param_grid
是一个字典,字典的关键字对应的值是一个列表GridSearchCV
会枚举列表里所有值来构建模型多次计算训練模型,并计算模型评分最终得出指定参数值的平均评分及标准差。
2、关键参数sv
用来指定交叉验证数据集的生成规则。这里sv=5表示每次計算都把数据集分成5份拿其中一份作为交叉验证数据集,其他作为训练集最终得出最优参数及最优评分保存在clf.best_params_
和clf.best_score_
里。
3、此外clf.cv_results_
里保存了計算过程的所有中间结果
结果波动很大,这里做了20次测试对应結果1出现6次,结果2出现10次结果3出现4次。
关键部分还是param_grid
参数他是一个列表。很对列表的第一个字典选择信息墒(entropy)
作为判断标准,取徝0~1范围50等分;
GridSearchCV
会针对列表中的每个字典进行迭代最终比较列表中每个字典所对应的参数组合,选择出最优的参数
下面代码可以生成.dot文件,需要电脑上安装graphviz
才能把文件转换成图片格式
graphviz命令来安装,它会同时安装8个依赖包这里一定注意Mac
环境下的權限问题:由于Homebrew
默认是安装在/usr/local
下,而Mac
有强制保护不支持sudo
这里的解决方式是把
local下bin
,lib
,Cellar
等所需单个文件夹下进行赋权即可成功安装。
在绘图中要用到matplotlib这个库文件
#定義文本框和箭头格式 #在父子结点间填充文本信息