机器学习
1、回归算法
回归算法:是监督学习的一种。回归算法
分为线性回归算法和非线性回归算
法。
1.1、线性回归算法
是指从输入到输出是线性变换,如加法和乘法等。线性回归算法旨在寻找空间中的一条线,使得这条线到所有样本点的距离和最小,线性回归算法常用于预测和分类领域。
假定数据集的特征满足线性关系,那就可以根据给定的训练数据训练一个模型,使用此模型进行预测或分类。线性回归中经常使用的两种算法是最小二乘法和逻辑回归。
1.1.1、最小二乘法
价格的预测值
😒 y=w_{0}+w_{1}x_{1} $
通过算法,计算出w0和w1,使得模型y能尽量的准确预测标记y。
使用最小二乘法,求出理想参数w:
w
=
(
X
T
X
)
−
1
X
T
Y
w = (X^T X)^{-1} X^TY
w=(XTX)−1XTY
1.1.2、逻辑回归
逻辑回归也是回归算法的一种,可以用来预测
,也可以解决二分类问题
。
逻辑回归与线性回归的不同只是在特征到结果的映射中加入了一层函数映射,这一层函数映射可以将连续映射到(0,1),然后使用某一个函数 q(z)作为假设函数来测。
那么逻辑回归如何将结果映射到(0,1)呢?这里要介绍一个 sigmoid 函数,也称为逻辑函数。
y
=
1
1
+
e
−
z
y = \frac{1} {1+e^{-z}}
y=1+e−z1
对应的曲线如图所示:
从图中可以看到,sigmoid 函数的y值介于0~1,即无限趋近于0或者趋近于1。令
z
=
w
T
x
z=w^Tx
z=wTx,并应用到 sigmoid 函数中,可得:
y
=
1
1
+
e
−
w
T
X
y = \frac{1} {1+e^{-w{^T}X}}
y=1+e−wTX1
其中,x为输入向量,w为我们要求取的参数向量。
由以上的形式可知,预测结果符合符合sigmoid 曲线的特征,呈s形。sigmoid 函数的转换率是非线性的,中间的变化比较敏感,但是转换率在两边的时候较低,这样导致很多区间的自变量变化对目标概率的影响无法区分,会造成无法确定分类阈值或者准确度较低等问题。
1.2、非线性回归算法
是指在输入和输出之间有一些非线性的变换,如阶乘运算、对数运算等。
2、支持向量机
支持向量机(Support Vector Machine, SVM)是一种有监督学习的分类器。如图所示,一条线可以将二维空间的离散点分为两类,在多维空间中,这条线就会变成一个超平面,将多维空间中的离散点分为两类,所以 SVM 是二分类算法。
将这个超平面用函数
f
(
x
)
=
w
T
x
+
b
f(x)=w^Tx+b
f(x)=wTx+b表示,其中,
w
=
(
w
1
,
w
2
,
w
3
…
w
n
)
w=(w_{1},w_{2},w_{3}…w_{n})
w=(w1,w2,w3…wn),为法向量,决定了超平面的方向,b为位移系数。
当f(x)等于0的时候,表示x位于超平面上;
当f(x)大于0的时候,x表示超平面一边的点;
当f(x)小于0的时候,x表示超平面另外一边的点。
我们把空间中到一个超平面的法向量称为向量
,把距离超平面最近、到超平面距离相等且在超平面两端的向量称为支持向量
。
在上图中,黑色的实线为分开两种点的超平面,A、B、C为到该超平面距离相等的点。可以发现,超平面的参数完全由A、B、C三个点决定,如果有其他的点进入两条虚线中间,支持向量就会发生变化,整个超平面也会发生变化。
由此可见,我们要寻找的超平面是由支持向量确定的,因此我们将整个多维空间中寻找该超平面的算法称为支持向量机
。
3、决策树
决策树是一种基本的分类与回归算法,与其他算法相比,决策树的原理浅显易懂,计算杂度较小,而且输出结果易于理解,在实际工作中有着广泛的应用。
决策树是一个类似于流程图的树结构。其中分支节点表示对一个特征进行测试,根据测试结果进行分类,叶节点代表一个类别
。
决策树的构建步骤一般是,使用算法搜遍所有可能的测试,找出对目标变量来说信息量最大的那一个节点,使用该节点划分能最大限度降低分类的不确定性。按此方式对所有划分后的子数据集反复进行递归划分,直到划分后的每个区域(决策树的每个叶节点)达到足够的“纯度
”为止。
那么,怎么选择一个信息量最大的节点或者怎么度量这个节点的“纯度”呢?下面将会进行介绍。
1)信息增益
2)基尼不纯度
3.1、信息增益
信息熵是衡量样本集合“纯度”常用的一种指标。
假定当前样本集合D中第 k类样本所占的比率为
P
k
(
k
=
1
,
2
,
3
,
…
∣
y
∣
)
P_{k}(k=1,2,3,…|y|)
Pk(k=1,2,3,…∣y∣),则D
的信息的计算公式如下。
Ent(D)的值越小,则D的不确定性越低(即“纯度”越高 ),信息量越小。因此,样本集A={1,1,1,2,2} 和样本集 B={1,2,3,4,5}相比,肯定样本集A的信息更小“纯度”更高。
3.2、基尼不纯度
基尼不纯度是衡量样本集合“纯度”的另一种指标。假定当前样本集合D中第 k类样本所占的比率为为
P
k
(
k
=
1
,
2
,
3
,
…
,
∣
y
∣
)
P_{k}(k=1,2,3,…,|y|)
Pk(k=1,2,3,…,∣y∣),则D的基尼不纯度的计算公式如下:
直观来说,Gini(D)反映了从数据集D中随机抽取两个样本后,其类别标记不一致的概率。因此,Gini(D)越小,则数据集D的“纯度”越高。例如,如果所有的样本都属于一个类别
P
k
=
1
P_{k}=1
Pk=1,则Gini(D)=0,即数据“纯度”最高。
3.3、剪枝处理
通常来说,构造决策树的所有叶节点都是纯的叶节点(决策树的每个叶节点只包含单一目标值),纯叶节点的存在说明这棵树在训练数据集上的精度是100%,训练数据集中的每个数据点都位于分类正确的叶节点中。
这会导致模型非常复杂,并且对训练数据集中的数据过拟合
防止过拟合有两种策略:一种是及早停止树的生长,也叫预剪枝
;另一种是先构造树,随后删除或折叠信息量很少的节点,也叫后剪枝
。
Sklearn中仅实现了预剪枝,预剪枝的限制条件可能包含限制树的最大深度、限制叶节点的最大数目或者规定一个节点中数据点的最小数目,来防止继续划分。
sklearn 的决策树的分类在 Decision Tree Classifier 类中实现。以下我们在"莺尾花“数据集上详细看看预剪枝的效果,实现的示例如下所示。