下面开启我们的数算法旅程,我们下面先认识几个概念。
熵
熵, 我记得第一次接触这个名词应该是在高中化学。里面有提到过这个概念。在信息论中,这是一个很重要的概念,它是对随机变量不确定性的度量。假如说,有一个随机变量,它的概率分布为:
那么这个随机变量的熵就是:
直观上理解就是,随机变量的不确定性越大,其熵就越大。
条件熵
条件熵
H(Y|X)
H
(
Y
|
X
)
表示在随机变量
X
X
给定的条件下,随机变量的不确定性。其定义为:
其中 pi=P(X=xi) p i = P ( X = x i )
信息增益
信息增益的意思是在得知随机变量
X
X
的信息之后,随机变量的信息的不确定性减少的程度。
g(Y,X)=H(Y)−H(Y|X)
g
(
Y
,
X
)
=
H
(
Y
)
−
H
(
Y
|
X
)
也称之为互信息。
信息增益比
Gini系数
Gini也是衡量一个随机变量不确定性的方式。
自适应基函数模型(Adaptive basis function models)
兄弟们会说,这是怎么鬼,听起来有点高大上啊。不要被名字吓到啊哈哈。我们要说的CART,ID3,C4.5。包括后来的boosting。本质上都是自适应基函数模型。大家会说,什么叫基函数模型啊,什么又是自适应啊。基函数模型,正统的定义说来也乏味。大致就是说,最后的模型是由一个个元模块,元模型依据某种方式组合而成的。而这种组合的方式也是训练得来的,由此称为自适应基函数模型。当然这是我的大白话,一言以蔽之:
m m 就是我们有多少的元模型,元模块。
大家听我说的这么玄乎,好像很厉害的样子。下来我具体的说说都是些什么模型。
CART ID3 C4.5
可能和这个大多数不一样,我先从CART讲起,呼应上面的公式。
CART全称 分类与回归树 Classification and regression tree.是一种既能应用于分类问题,能有应用于回归问题的一种决策树算法,是不是觉得是废话。先说说怎么用于回归问题。
算法选好了,下一步就是选损失函数嘛,这个大家都熟了。对于回归,我们选择平方误差
yi y i 当然就是真实标签了, f(xi) f ( x i ) 呢?是我们的模型预测输出,我们模型预测的输出是这么个样子的:
我解释一下这个模型,就是说一个待预测的样本,它对应的输出是先看这个样本落入到哪个子特征空间( 决策树算法就是要在特征空间里划一个一个的子空间,其实想想感知机,SVM那种超平面的形式也是在划子空间,只不过因为那是处理线性问题的,是划一个超平面,一分为二,这边是正,那边是负,决策树呢,就是复杂点,没那么一刀切了。大家想想是不是),然后这个子空间里的原有的训练样本决定了一个带预测样本能输出什么?怎么决定呢?不跟大家卖官司,这不是回归问题吗?就是这个子空间里原有样本的均值!
这就是CART处理回归问题的基本思路。大家注意这个 I I 函数,中文名好像叫指示函数。不懂的查查意思就行了。
那么现在的问题就是,这个一个一个的子空间怎么划呢?
所谓划子空间,没那么高大上,就是挑选一个特征,然后在这个特征上找到一个划分点,那么现在问题就变成了,挑选什么特征,又选什么划分点呢?好,假如说,我们设想一种极端情况,就是因为某种原因,我们现在只能挑选一个特征,再在这个特征上找划分点,怎么办?那就看找哪个特征,哪个划分点损失函数就小啊!对了,就是要这样想!那么这个特征 和划分点就是能满足以下这个式子的:
j j 就是特征,就是划分点。 R1 R 1 , R2 R 2 就是被你现在找到的特征和划分点后,被分出来的两个空间。 C1 C 1 , C2 C 2 就是这两个空间内样本的均值。
好了,现在限制解除了,我们可以继续再找特征载划分了,怎么办,在现在被划分出来的空间里,继续递归的使用上面的方法直到停止。
难吗?实不难也。
好了,不装逼,那分类问题怎么办?通用的思路,只不过不能是落入子空间的均值了,分类问题吗,就成了这个子空间里,哪一类多,待预测的样本就分成哪一类,写成公式起来就是:
其中 Ck=argmaxkcount(y==k) C k = a r g m a x k c o u n t ( y == k ) ,说白了,就是这个子空间内,数目最多的那个类。
还是那个问题,子空间怎么划,大家还记不记得我们上面说的信息增益, “信息增益的意思是在得知随机变量X的信息之后,随机变量Y的信息的不确定性减少的程度。”,就要在这里用到它!那到这里就是, 得知特征A的信息后,样本的信息不确定性减少的程度!。在当前状态下,得知哪个特征后,样本的信息不确定性减少的越多,我们就先划分哪个特征!大家先别激动,先缓缓这个信息增益啊是在ID3算法里用到,CART这里用的Gini系数,相似的思想是,得到哪个特征的信息之后,我样本的不确定信息越小,我就先划分哪个特征!
ok了,就是这么个思想。
这个就是我们在得到A的特征后,样本D的不确定性,其实我说一句,这不就是和条件熵差不多的意思吗?
同样的,不断的递归直到满足停止条件。
分类与回归,同样的框架,具体的损失函数不一样。其实我跟大家说,这一个个公式写的,损失函数有那么复杂吗?我给大家重写一下这两个损失函数,当然不是我原创啊,出自 hands on machine learning with sklearn and tf。好像是这么个名字。CART对分类问题时候的损失函数:
CART对回归问题时候的损失函数:
MSE M S E 就是平方误差函数。
简单明了。
再看自适应基函数模型
说完CART,我们暂停一下,在看自适应基函数的模型公式:
现在大家应该对这个公式有更直观的印象了。也知道 wmϕm(x) w m ϕ m ( x ) 有什么具体的形式。我请大家再看一下这个模型公式,大家仔细看一下,这个公式像什么啊?
大家熟悉吗?这个在哪里出现过?线性回归,逻辑回归,感知机。诸君觉得这两者有什么本质上的区别吗?没有,我举得没有。 x x 换成了,取了个名字叫基函数。
大家往后还会知道,神经网络里也有 f(x)=w0+WTx f ( x ) = w 0 + W T x 。
我真的感慨, f(x)=w0+WTx f ( x ) = w 0 + W T x ,这放佛是机器学习一切的起点。