上一篇中介绍了机器学习的基本概念,这一篇通过一个案例讲解机器学习是如何实现的。
机器学习中有一个非常基础的算法就是决策树算法,名称听上去很高深莫测的样子,其实很简单,还是以机器学习jack这个人对人脸丑或帅的判断。
首先抽样一批照片,让jack来告诉机器他的主观判断,为了简化逻辑,我把抽样数目精简到了7个样本,并列了一个表格:
(注:同样为了简化逻辑,我把每个项目结果都简化了,比如脸型,我简化为“长”和“扁”,实际应用中有可能会有“圆”,“椭圆”, “三角脸”,“国字脸”等等,但原理都一样)
“决策树”算法的核心就是根据已经有的样本数据做一个概率上的统计,然后当机器遇到样本中没有的数据时,会找出与样本中最接近的概率,从而得出结论。
那它是如何实现的呢?也很简单,就是把上面的表格变成一个流程图一样的树状结构,我们来一步步的实现这个树结构:
首先我们把脸型作为起始点:
在样本列表中,长脸型的一共有4个人,而jack认为帅的有3个,所以对jack而言,长脸型帅的概率为3:4 ,也就是75%( 需要注意的是,实际样本数据会非常大,除非jack对长脸有特殊爱好,否则概率会更接近50%,而不是有如此大的对比,因为这才是仅仅第一个节点,后面还有眼睛·嘴巴·鼻子的综合考虑)
然后对于长脸,扁脸这个分支,我们再建立“眼睛”的节点。比如在长脸的情况下:
注意:这个时候jack认为大眼睛帅的概率是在长脸的这个分支下的,也就是根据样本表格,长脸,大眼睛的状况对jack有致命诱惑,100%认为他帅了( 现实样本中不太可能出现,因为这才是第2个节点)
根据以上逻辑,以此类推,最终建立一颗完整的树
虽然样本也许只有几十个,但是建立完的这颗树却可以囊括所有情况。
比如有一种新的情况:
扁脸,大眼睛,塌鼻子,大嘴巴,虽然样本中没有这种情况,但是在决策树中总能找到分枝
然后根据分支中的统计,jack认为这条分支最终结果是帅的概率为98%, 那机器就可以推断,jack是认为这种脸型是帅的。
---------至于更专业而深入的几点,如果你不是程序员,就可以不看了----------
1:)如果选择根节点?虽然理论上任何一项都可以作为根节点,但是为了分支最简化,可以根据每个节点的熵值排序,作为结点的顺序
2:)这个算法需要程序员自己去实现吗?完全不需要,比如ios,安卓等平台都有官方实现好的算法api, 其他平台也都有第三方的。这些通用算法你只需要知道里面的基本思路和一些术语就完全可以了