Python数据分析与可视化笔记 九 分类问题

时间:2024-04-08 19:08:13

分类

        分类是找出数据库中一组数据对象的共同特点,并按照分类模式将其划分为不同的类,其目的是通过分类模型,将数据库中的数据项映射到某个给定的类别。

        分类学习是一类监督学习的问题,训练数据会包含其分类结果,根据分类结果分为以下几种问题。

1.二分类问题:是与非的判断,分类结果分为两类。

2.多分类问题:分类结果为多个类别。

3.多标签分类问题:一个样本的预测结果可能是多个,或有多个标签。

        就模型本质所能解决问题的角度来说,可以分为线性模型非线性分类模型

        线性分类模型中,假设特征与分类结果存在线性关系,通常将样本特征进行线性组合,表达形式如下:

f(x) = w_1*x_1 + w_2*x_2 + ...+ w_d*x_d + b

表达成向量形式如下 f(x) = w点乘x + b, 其中 w = (w_1, w_2, ..., w_d),线性分类模型的算法则为对 w 和 b 的学习,典型的算法包括逻辑回归(Logistic Regression)线性判别分析( Linear Discriminant Analysis)

        非线性分类模型中的经典算法包括 K近邻(K-Nearest Neighbor, KNN)支持向量机(Support Vector Machine)决策树(Decision Tree)朴素贝叶斯(Naive Bayes)

逻辑回归

        逻辑回归的优点是直接对分类概率进行建模,无须事先假设数据分布,是一个判别模型。并且 g 相当于对 x 为正样本的概率预测,Logistic函数本身也有很好的性质,是任意阶可导凸函数。

线性判别分析

        针对训练集,将其投影到一条直线上,使得同类样本点尽量接近,异类样本点尽量远离。即同类样本计算得到的 f 尽量比较相似,协方差较小; 异类样本的中心间距尽可能大,同时考虑两者可以得到线性判别分析的目标函数。

支持向量机

        找到一个超平面可以将不同类别的样本分开,且使得所有的点都尽可能地远离超平面。离超平面近的点是容易被误分类的点,应使离得较近的带你尽可能地远离超平面。可以定义超平面的方程如下 w 点乘 x +b =0,其中 w 为超平面的法向量, b 为位移项。样本 i 到超平面的距离为 |w*x_i + b|。

        如果所有样本不仅可以被超平面分开,还和超平面保持一定函数距离,这样的超平面为支持向量机中的最优超平面,和超平面保持一定函数距离的样本定义为支持向量。

决策树

        决策树可以看作对于“当前样本是否属于正类”这一问题的决策过程,一般一棵决策树包含一个根结点、若干个中间节点和若干个叶节点,叶节点对应总问题的决策结果,根结点和中间节点对应中间的属性判定问题。决策树的生成是一个递归过程。同一个问题和样本可能产生不同的决策树,其目标是每一次划分使分支节点纯度尽量高,即样本尽可能属于同一个类别。度量纯度的指标有信息熵增益率基尼指数等。

K近邻

        K近邻算法的工作机制是,给定测试集合,基于某种距离度量计算训练集中与其最接近的 k 个训练样本,基于这 k 个样本的信息对测试样本的类别进行预测。似乎无须进行训练,训练时间开销为0。这一类算法被称为“懒惰学习”算法,而样本需要在训练阶段进行处理的算法被称为“急切学习”算法。