主婦:
素人の観点から決定木アルゴリズムで導入された(a)の基本的な概念
I.概要
1で、私たちは木の基本的な知識及び関連コンテンツ情報エントロピーを含む決定木のいくつかの基本的な概念を導入し、この時間は、我々は特定の決定木の作品だけでなく、情報エントロピーを示すために例を使用するもので役割を引き受けます。
一つは、3つの古典的なアルゴリズムが存在し、最適化プロセスにおいて決定木について言わなければならないID3、C4.5、およびCARTです。改善されたアルゴリズムのバックは、前のアルゴリズムの欠点のいくつかに基づいており、我々はID3アルゴリズムについてお話します。この時間は、後でそれが不十分と改善であると言うでしょう。
II。例えば、
我々はすべて知っているように、午前中にベッドに滞在していないことは非常に深遠な質問です。これは、多くの変数に依存し、のはベッドの中でボブの滞在それの習慣を見てみましょう。
シーズン | 時間は午前8時00分を経過しました | 風の条件 | あなたはベッドに滞在しますか |
---|---|---|---|
春 | いいえ | 風 | はい |
冬 | いいえ | 無風ません | はい |
秋 | はい | 風 | はい |
冬 | いいえ | 無風ません | はい |
夏 | いいえ | 風 | はい |
冬 | はい | 風 | はい |
冬 | いいえ | 疾風 | はい |
冬 | いいえ | 無風ません | はい |
春 | はい | 無風ません | いいえ |
夏 | はい | 疾風 | いいえ |
夏 | いいえ | 疾風 | いいえ |
秋 | はい | 風 | いいえ |
OK、我々はランダム年ベッドの中で14日間暁明滞在するケースを描きます。今、私たちは、これらのデータに基づいて決定木を構築することができます。
見つけることができる、3つの属性は、最終的な結果のデータに影響を与えますがあり、それぞれの季節には、時間が八時、風の状態の上にあります。
決定木を構築するために、我々はそのルーツを見つける必要がある、我々は前のセクションで、私たちはそれぞれのプロパティを計算する必要があると述べたエントロピーを。
各属性のエントロピーを計算する前に、我々は過去のデータに必要な、情報エントロピーの計算は、任意のプロパティの影響を受けてベッドに滞在していません。私たちが知ることができるデータ、14日からは、8日は6日、ベッドに滞在していない、ベッドに滞在する必要があります。それから
p(赖床) = 8 / 12.
p(不赖床) = 6 / 12.
情報エントロピー
H(赖床) = -(p(赖床) * log(p(赖床)) + p(不赖床) * log(p(不赖床))) = 0.89
あなたは、各属性のエントロピーを計算することができますので、次に、ここではその3つの属性ですシーズンは朝、風の状態で午前8時00分通過するかどうか、私たちは、各プロパティに異なる状況下での3つのプロパティを計算ベッドに滞在し、悪くないようにする必要があります確率ベッドとエントロピー。
少しのまわりでそれを入れて、私たち最初の風の状態のエントロピーを計算するために、この属性は3があるどのくらいの風の状態、である、我々はエントロピー3例を計算します。
风力情况为 breeze 时,有 4 / 5 的概率会赖床,而 1 / 5 的概率不会赖床,它的熵为 entropy(breeze) = -(p(breeze,赖床) * log(p(breeze,赖床)) + p(breeze,不赖床) * log(p(breeze,不赖床))) 0.722。
风力情况为 no wind 时,和上面一样的计算,熵值为 entropy(no wind) = 0.811
风力情况为 gale 时,熵值为 entropy(gale) = 0.918
最终,风力情况这一属性的熵值为其对应各个值的熵值乘以这些值对应频率。
H(风力情况) = 5/12 * entropy(breeze) + 4/12 * entropy(no wind) + 3/12 * entropy(gale) = 0.801
还记得吗,一开始什么属性没有,赖床的熵是H(赖床)=0.89。现在加入风力情况这一属性后,赖床的熵下降到了0.801。这说明信息变得更加清晰,我们的分类效果越来越好。
以同样的计算方式,我们可以求出另外两个属性的信息熵:
H(季节) = 0.56
H(是否过 8 点) = 0.748
通过它们的信息熵,我们可以计算出每个属性的信息增益。没错,这里又出现一个新名词,信息增益。不过它不难理解,信息增益就是拿上一步的信息熵(这里就是最原始赖床情况的信息熵)减去选定属性的信息熵,即
信息增益 g(季节) = H(赖床) - H(季节) = 0.33
这样我们就能计算每个属性的信息增益,然后选取信息增益最大的那个作为根节点就行了,在这个例子中,很明显,信息增益最大的是季节这个属性。
选完根节点怎么办?把每个节点当作一颗新的树,挑选剩下的属性,重复上面的步骤就可以啦。
当全部都遍历完之后,一颗完整的树也就构建出来了,这个例子中,我们最终构造的树会是这个样子的:
三. 过拟合与剪枝
在构建决策树的时候,我们的期望是构建一颗最矮的决策树,为什么需要构建最矮呢?这是因为我们要避免过拟合的情况。
什么是过拟合呢,下图是一个分类问题的小例子,左边是正常的分类结果,右边是过拟合的分类结果。
在现实世界中,我们的数据通常不会很完美,数据集里面可能会有一些错误的数据,或是一些比较奇葩的数据。如上图中的蓝色方块,正常情况下我们是允许一定的误差,追求的是普适性,就是要适应大多数情况。但过拟合的时候,会过度追求正确性,导致普适性很差。
剪枝,即减少树的高度就是为了解决过拟合,你想想看,过拟合的情况下,决策树是能够对给定样本中的每一个属性有一个精准的分类的,但太过精准就会导致上面图中的那种情况,丧失了普适性。
而剪枝又分两种方法,预剪枝干,和后剪枝。这两种方法其实还是蛮好理解的,一种是自顶向下,一种是自底向上。我们分别来看看。
预剪枝
预剪枝其实你可以想象成是一种自顶向下的方法。在构建过程中,我们会设定一个高度,当达构建的树达到那个高度的时候呢,我们就停止建立决策树,这就是预剪枝的基本原理。
后剪枝
后剪枝呢,其实就是一种自底向上的方法。它会先任由决策树构建完成,构建完成后呢,就会从底部开始,判断哪些枝干是应该剪掉的。
注意到预剪枝和后剪枝的最大区别没有,预剪枝是提前停止,而后剪枝是让决策树构建完成的,所以从性能上说,预剪枝是会更块一些,后剪枝呢则可以更加精确。
ID3决策树算法的不足与改进
ID3决策树不足
用ID3算法来构建决策树固然比较简单,但这个算法却有一个问题,ID3构建的决策树会偏袒取值较多的属性。为什么会有这种现象呢?还是举上面的例子,假如我们加入了一个属性,日期。一年有365天,如果我们真的以这个属性作为划分依据的话,那么每一天会不会赖床的结果就会很清晰,因为每一天的样本很少,会显得一目了然。这样一来信息增益会很大,但会出现上面说的过拟合情况,你觉得这种情况可以泛化到其他情况吗?显然是不行的!
C4.5决策树
针对ID3决策树的这个问题,提出了另一种算法C4.5构建决策树。
C4.5决策树中引入了一个新的概念,之前不是用信息增益来选哪个属性来作为枝干嘛,现在我们用增益率来选!
IV、そこは、(a)は、ときの属性値の任意のより多くの、より大きなその値(例えば年の日、好ましくは365など)。
そして、IVは、(a)の値が大きいほど、ゲイン率は、新たな問題が出現している、明らかに小さいです。ID3ターンでC4.5決定木は、それがより多くのバイアスされ、財産の少ないオプションの属性値です。これは、非常に面倒であることは、より公正かつ客観的決定木アルゴリズムがありますか?いくつか!!
CARTの決定木
ゲインの属性情報として選択ID3決定木は、上記いえば、C4.5属性は、増加率として選択されます。しかし、彼らは制限があり、最終的な提案CART、またCARTで使用されている現在の決定木アルゴリズムsklearn。別の属性の選択基準としてのものを使用してCART決定木ジニ係数。
最初の方程式PKは、各属性の値は、これらのオプションの累積値を計算した後、任意で表します。場合平均特性分布この式の結果と情報利得は、同様に実際にジニ係数の値が大きく、またその逆も小さくなる場合、それは、より曖昧な情報です。しかし、この計算は、各時間は半分しか方法の分類を使用して計算。例えば、上記の例では、季節性、4つの可能な値の季節(春、夏、秋、冬)があります。だから、とき、スプリングは半分の方法で計算(春(夏、秋、冬))を計算します。ID3に似た他のステップの後ろに。この計算では、よりよい入手ID3の欠陥を回避することができます。
CARTのディシジョン・ツリー・アルゴリズムで訓練を受けた、と我々は決定木の上になりますので、もしID3は少し異なる訓練を受けました。次回の記事では、決定木を訓練するためにCARTアルゴリズムを使用してsklearnを使用し、その結果を描画することで道が表示されます。
推奨される読書:
Scalaの関数型プログラミングガイド(a)は、機能のアイディア導入
で俳優並行プログラミングモデル
大規模なデータストレージの進化の歴史- RAIDからHDFSのHadoopに
CやJava、Pythonの、これらの名前の後ろに川や湖!