机器学习中的决策树
机器学习中的决策树 (decision tree) 广泛影响了机器学习的生态,涵盖了分类和回归分析两种极为重要的机器学习工作。在分析中,决策树可以用于数字分析和视觉分析。正如名称所示,它使用了一个树状的决策模型。虽然决策树本来是用于数据挖掘 (data mining) 而推出的策略,但它不知不觉间广泛应用于机器学习,成为本文的主要焦点。
如何表示算法?
让我们考虑一个基本的例子: 使用决策树分析泰坦尼克数据(Titantic data, 对就是那个电影)来预测乘客是否能够生存。以下模型使用数据中的3个特征/属性,即性别,年龄和sibsp(配偶或儿童的数量)。
图片来自维基百科
决策树被倒置,其根部位于顶部。在上边的图像中,粗体表示条件/内部节点 (condition / internal node),基于此,树分解成分支/边 (Branch / edge)。不再分裂的分支为结尾/叶 (decision / leaf),在这里,乘客是否死亡或幸存,分别以红色和绿色文字表示。
一个真正的数据分析将具有更多特征,这些特征将由更大的树中的一个分支表示出来,这个算法可以明确分辨出不同特征的重要性,特征之间的关系也可以很容易地看出来。以上树称为分类树 (classification tree),目标是将乘客分类为存活或死亡。另一种树为回归树, 它以相同的方式进行分析,只是他们预测连续的数字 (continuous values),比如房子的价格。一般来说,决策树算法被称为CART或Classification and Regression Trees.
其实AI是怎样计算 / 分类出树和支呢?让我们先了解一种常用的分割技术。
递归二进制分割 (Recursive Binary Splitting)
在此过程中,所有特征都会考虑,并使用成本函数 (cost function)测试不同的分割点 (即决定要使用性别,年龄还是sibsp进行第一层的分割)。选择最低”成本”的分割点进行拆分。
考虑从Titanic data中学到的树的例子。在第一个分割点中,所有特征 (性别,年龄和sibsp) 都会被AI考虑,并且基于该分割点将特征分成2组。我们有3个特征,所以会有3个分割的方法。现在我们将使用一个函数(function)来计算每个拆分所需的成本,并选择成本最低的分割点进行分割,在我们的例子中第一个分割点就是乘客的性别。该算法本质上是递归 (recursive) 的,因为形成的组可以使用相同的策略再进行细分。这算法也被称为贪心算法 (greedy algorithm),这使得根节点成为最佳的预测器/分类器。
分裂成本
让我们仔细看看用于分类(classification)的成本函数。
分类:G = sum(pk *(1-pk))
基尼系数 (Gini score) 评分提供了一个拆分的分数。Pk表示在进行一次的分柝后分类还有多乱 (对分类的判断进步了多少),比如说,如果在Titantic data中,我们第一个分类是年龄,在拆分后,死亡和生存的人依然是0.5 和0.5, pk 和 G 就会变得很高,AI就不会采用这个方式进行分割。
何时停止分裂?
你可能会问什么时候停止分裂呢?通常每一次的Data analysis 都会有一大堆特征,它导致大量的分裂,反过来又给了一个巨大的树。这样的树木很复杂,那么,我们需要知道什么时候停止。可惜,到目前为止,树木分支的上限还得由人手设定,非常不智能。
下星期我会用python 去做一个例子,有兴趣的请follow / upvote / resteem. Thank you very much.
click here!This post received a 0.7% upvote from @randowhale thanks to @jimsparkle! For more information,
Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.Congratulations! This post has been upvoted from the communal account, @minnowsupport, by Jimsparkle from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, and someguy123. The goal is to help Steemit grow by supporting Minnows and creating a social network. Please find us in the
If you like what we're doing please upvote this comment so we can continue to build the community account that's supporting all members.
I really like the image of the tree!
jim 大哥又寫好文章
really interested in Machine learning!
能知道楼主从事什么行业吗?
在香港一間公司做一個小小的data scientist. AI 也只是個新手. 還請多多指教
能让机器自动学习,很历害,期待更多专业文章 :)