目录
-
感知机
-
定义:
-
感知机是实现二分类的线性模型。感知机的学习过程是导入误分类的损失函数,然后利用梯度下降的方法来使他达到最小值;分离超平面f(x)=sign(wx+b) w是权重,w和b是感知机参数
-
-
学习策略:
-
感知机的学习——将正负实例点正确分开——求出正确分离超平面——损失函数最小(所有点距离超平面的距离之和)
-
-
学习算法
-
原始形式
- 每个点有个坐标(
,
)
为实例点,
为标记(只有1/-1)。当超平面将点都正确分开后,超平面上面的y=1,下面的y=-1.
- 算出每个点到超平面的距离之和为损失函数(忽略掉距离之和的分母),求出损失函数的最小值。损失函数为
- 求损失函数为最小值的方法为随机梯度下降法
- 举例:
- 每个点有个坐标(
-
对偶形式
-
思路:将w和b表示为
和
的线性组合形式,通过求解其系数而求得w和b
-
举例:
-
-
-
总结:
-
感知机学习的策略就是极小化损失函数,损失函数是各分类点到超平面的总距离
-
原始形式中,首先任意选取一个超平面,然后随机选取一个误差点,使用随机梯度函数的方法求得其最小值。
-
-
-
-
K近邻
-
K近邻法算法
- 定义:是一种基本分类与回归方法。
- 面对新的输入实例,在训练集中找到实例周边的K个实例,这K个实例属于哪一类,就把该输入实例分为哪一类
-
K近邻模型
- 距离度量
随着p取值的变化,距离也会发生变化。
-
K值的选择
-
在应用中K通常选一个较小的数,然后用交叉验证的方式来选取最优的K值
-
交叉验证:将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。
-
-
分类决策规则
-
决策规则往往是由多数表决,由输入实例的K个邻近的训练实例多数决定输入实例的类
-
误分类率最小等于经验风险最小,多数表决规则等价于经验风险最小化,
就要最大
-
- 距离度量
-
K近邻法的实现——kd树
-
目的:对训练数据进行快速K近邻搜索。
-
构造kd树
-
构造kd树相当于不断用垂直于坐标轴的超平面将K维空间切分,构成一系列的k维超矩形区域,kd树的每一个节点对应于一个k维超矩形区域。
-
方法:
-
构造根节点,根节点包括对应于包含T的k维空间的超矩形区域。
-
,选择
为坐标轴,以T中所有实例的
坐标的中位数为切分点,将此矩形区域划分为两个子区域,左子结点,右子结点。选取中位数的点要选择实例点。
-
重复第二步,在左右结点中选取
为切分的坐标轴,以
中坐标的中位数为切分点,将该矩形区域切分为两个子区域,直到没有可以切分的实例点。
-
-
搜索kd树
-
先以输入点所在区域的点为最近邻,同时执行下以下两个步骤
-
如果该结点保存的实例点比当前最近点距离目标点更近,则以该实例点为“当前最近点”。
-
(b)当前最近点一定存在于该结点一个子结点对应的区域。检
查该子结点的父结点的另一子结点对应的区域是否有更近的点。具体地,检查另一子结点对应的区域是否与以目标点为球心、以目标点与“当前最近点”间的距离为半径的超球体相交。如果相交,可能在另一个子结点对应的区域内存在距目标点更近的点,移动到另一个子结点。接着,递归地进行最近邻搜索;
如果不相交,向上回退。 -
实例:
-
-
-
-
-
总结:
- k近邻法是基本且简单的分类与回归方法。k近邻法的基本做法是:对给定的训练实例点和输入实例点,首先确定输入实例点的k个最近邻训练实例点,然后利用这k个训练实例点的类的多数来预测输入实例点的类。
- k值的选择反映了对近似误差与估计误差之间的权衡,通常由交叉验证选择最优的k。常用的分类决策规则是多数表决,对应于经验风险最小化。
- k近邻法的实现需要考虑如何快速搜索k个最近邻点。kd树是一种便于对k维空间中的数据进行快速检索的数据结构。kd树是二叉树,表示对k维空间的一个划分,其每个结点对应于k维空间划分中的一个超矩形区域。利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。
-
实例
-
import numpy as np from sklearn.neighbors import kneighbors_graph, KNeighborsClassifier from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split wine = load_wine() X_train, X_test, y_train, y_test = train_test_split(wine.data, wine.target, test_size=0.3,random_state=1) """ 在需要设置random_state的地方给其赋一个值,当多次运行此段代码能够得到完全一样的结果, 别人运行此代码也可以复现你的过程。若不设置此参数则会随机选择一个种子,执行结果也会因此而不同了。 虽然可以对random_state进行调参,但是调参后在训练集上表现好的模型未必在陌生训练集上表现好, 所以一般会随便选取一个random_state的值作为参数。 X_train, X_test, y_train, y_test 记住这个顺序!!!!!! """ knn = KNeighborsClassifier(n_neighbors=1) knn.fit(X_train, y_train) print('测试数据得分: {:.2f}'.format(knn.score(X_test, y_test))) X_new = np.array([[13.2, 2.77, 2.51, 18.5, 96.6, 1.04, 2.55, 0.57, 1.47, 6.2, 1.05, 3.33, 820]]) prediction = knn.predict(X_new) print('预测新红酒的分类为: {}'.format(wine['target_names'][prediction]))
-
-
-
朴素贝叶斯
k为特征数量。
-
目的:
- 是基于贝叶斯定理与特征条件的独立假设的分类方法。
-
学习与分类
- 朴素贝叶斯是通过训练数据集学习联合概率分布p(x,y),具体地,可以先学先验概率分布及条件概率分布,
-
朴素贝叶斯算法
:
-
贝叶斯估计:
-
k为特征数量。
-
-
实例:
-
朴素贝叶斯实例:
-
贝叶斯估计实例:
-
-
实例
-
import numpy as np from sklearn.naive_bayes import GaussianNB from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split wine = load_wine() X_train, X_test, y_train, y_test = train_test_split(wine.data, wine.target, random_state=0,test_size=0.3) clf = GaussianNB() clf.fit(X_train, y_train) GaussianNB() print('测试数据得分: {:.2f}'.format(clf.score(X_test, y_test))) X_new = np.array([[13.2, 2.77, 2.51, 18.5, 96.6, 1.04, 2.55, 0.57, 1.47, 6.2, 1.05, 3.33, 820]]) prediction = clf.predict(X_new) print('预测新红酒的分类为: {}'.format(wine['target_names'][prediction])) #检测结果:准确率为0.94
-
-
-
决策树
-
决策树模型与学习
- 分类决策树由结点和有向边组成。节点有两种类型:内部节点和叶节点;内部节点表示一个特征或属性,叶节点表示一个类。
- 从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子节点;这时,每个子节点对应着该特征的一个取值。,循环往复,直到分配到叶节点的类中。
- 每个实例都只满足一条规则的条件。
-
特征选择
- 特征选择在于选择对训练数据具有分类能力的特征。而信息增益是方便我们判断那个特征具有更好的分类效果
- 信息增益
经验熵 - 熵:代表随机变量不确定的程度
-
经验条件熵
-
信息增益
-
定义:
-
H(D)表示对数据集D进行分类的不确定状态,H(D|A)表示在特征A给定的条件下对数据集D进行分类的不确定性。他们的差,表示的就是由于特征A而产生的不确定性减少的程度。
-
-
-
-
决策树的生成
-
C4.5算法
使用信息增益比来选择特征。
-
-
剪枝
- 定义:
|T|为决策树叶结点个数,t为决策树T的叶结点,该结点有
个样本点。
- 从已生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点,从而简化分类树模型。
- 方法:极小化损失函数或代价函数
- 损失函数:
- 定义:
-
CART算法——可以用来分类也可以用于回归
-
介绍:
-
CART是假设决策树是二分树,内部结点特征的取值为“是”或“否”;由以下两个步骤来完成:1.构建决策树,尽可能的大;2.利用极小化损失函数来完成剪枝。
-
-
决策树的生成
-
回归树——对回归树用平方误差最小化准则
-
-
分类树——对分类树用基尼指数最小化准则
-
基尼指数
-
算法
-
-
- 剪枝:
- 从决策树底端开始剪枝,直到根结点,形成一个子树序列
- 利用交叉验证法在独立验证数据集上测试,选择最优子树
- 算法
-
标 为以t为根节点的子树的损失函数;C(t)为损失函数函数 题
-
-
-
特征选择准则:
-