【2】监督学习--1--分类

一、基本概念

  • 输入:一组有标签的训练数据(也称观察和评估),标签表明了这些数据(观察)的所署类别。
  • 输出:分类模型根据这些训练数据,训练自己的模型参数,学习出一个适合这组数据的分类器,当有新数据(非训练数据)需要进行类别判断,就可以将这组新数据作为输入送给学好的分类器进行判断。

1.分类学习-评价

  • 训练集(training set):顾名思义用来训练模型的已标注数据,用来建 立模型,发现规律。
  • 测试集(testing set):也是已标注数据,通常做法是将标注隐藏,输送 给训练好的模型,通过结果与真实标注进行对比,评估模型的学习能力。 训练集/测试集的划分方法:根据已有标注数据,随机选出一部分数据 (70%)数据作为训练数据,余下的作为测试数据,此外还有交叉验证法, 自助法用来评估分类模型

2.分类学习-评价标准

精确率:精确率是针对我们预测结果而言的,(以二分类为例)它表示 的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能 了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP), 也就是

P = (TP)/(TP+FP)

召回率:是针对我们原来的样本而言的,它表示的是样本中的正例有多 少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP), 另一种就是把原来的正类预测为负类(FN),也就是

R = TP/(TP+RN)

假设我们手上有60个正样本,40个负样本,我们要找出所有的正样本,分 类算法查找出50个,其中只有40个是真正的正样本,

TP: 将正类预测为正 类数 40;FN: 将正类预测为负类数 20;
FP: 将负类预测为正类数 10; TN: 将负类预测为负类数 30
准确率(accuracy)=预测对的/所有 = (TP+TN)/(TP+FN+FP+TN) = 70% 
精确率(precision)=?
召回率(recall)=?

Sklearn vs. 分类

与聚类算法被统一封装在sklearn.cluster 模块不同,sklearn库中的分类算法并未被统一 封装在一个子模块中,因此对分类算法的import 方式各有不同。

Sklearn提供的分类函数包括:

  • k近邻(knn)
  • 朴素贝叶斯(naivebayes),
  • 支持向量机(svm),
  • 决策树 (decision tree)
  • 神经网络模型(Neural networks)等
  • 这其中有线性分类器,也有非线性分类器

分类算法的应用

  • 金融:贷款是否批准进行评估
  • 医疗诊断:判断一个肿瘤是恶性还是良性
  • 欺诈检测:判断一笔银行的交易是否涉嫌欺诈
  • 网页分类:判断网页的所属类别,财经或者是娱乐?

5.案例分析

##人体运动状态预测-实例分析

5.1 背景介绍

  • 可穿戴式设备的流行,让我们可以更便利地使用传感器获取人体的各项数据, 甚至生理数据。
  • 当传感器采集到大量数据后,我们就可以通过对数据进行分析和建模,通过 各项特征的数值进行用户状态的判断,根据用户所处的状态提供给用户更加 精准、便利的服务

5.2 数据介绍

  • 我们现在收集了来自 A,B,C,D,E 5位用户的可穿戴设备上的传感器数据, 每位用户的数据集包含一个特征文件(a.feature)和一个标签文件 (a.label)。
  • 特征文件中每一行对应一个时刻的所有传感器数值,标签文件中每行记录了 和特征文件中对应时刻的标记过的用户姿态,两个文件的行数相同,相同行 之间互相对应。

特征文件的各项特征具体如下表所示

1 2 3-15 16-28 29-41
时间戳 心率 传感器1 传感器2 传感器3

在传感器1对应的13列数据特征中,包含:1项温度数据、3项一型三轴加速 度数据、3项二型三轴加速度数据、3项三轴陀螺仪数据和3项三轴磁场数据

3 4-6 7-9 10-12 13-15
温度 一型三轴加速度 二型三轴加速度 三轴陀螺仪 三轴磁场

人体的温度数据可以反映当前活动的剧烈程度,一般在静止状态时,体温趋 于稳定在36.5度上下;当温度高于37度时,可能是进行短时间的剧烈运动,比 如跑步和骑行。

在数据中有两个型号的加速度传感器,可以通过互相印证的方式,保证数据 的完整性和准确性。通过加速度传感器对应的三个数值,可以知道空间中x、y、 z三个轴上对应的加速度,而空间上的加速度和用户的姿态有密切的关系,比如 用户向上起跳时,z轴上的加速度会激增。

陀螺仪是角运动检测的常用仪器,可以判断出用户佩戴传感器时的身体角度 是水平、倾斜还是垂直。直观地,通过这些数值都是推断姿态的重要指标。

磁场传感器可以检测用户周围的磁场强度和数值大小,这些数据可以帮助我 们理解用户所处的环境。比如在一个办公场所,用户座位附近的磁场是大体上固 定的,当磁场发生改变时,我们可以推断用户的位置和场景发生了变化。

标签文件内容如图所示,每一行代表与特征文件中对应行的用户姿态类别。 总共有0-24共25种身体姿态,如,无活动状态,坐态、跑态等。标签文件作为 训练集的标准参考准则,可以进行特征的监督学习。

5.3任务介绍

假设现在出现了一个新用户,但我们只有传感器采集的数据,那么该如何得到 这个新用户的姿态呢? 又或者对同一用户如果传感器采集了新的数据,怎么样根据新的数据判断当前 用户处于什么样的姿态呢?

在明确这是一个分类问题的情况下,我们可以选定某种分类模型(或者说是 算法),通过使用训练数据进行模型学习,然后对每个测试样本给出对应的分类 结果。

机器学习的分类算法众多,在接下来的学习中我们将会详细介绍经典的分类 算法,如K近邻、决策树和朴素贝叶斯的原理和实现。

三、基本分类模型

见下一博文

四、更多概念

Logistic regression ( 逻辑回归 ) ,尽管它的名字是回归,是一个用于分类的线性模型而不是用于回归。 Logistic Regression 在文献中也被称为 logit 回归,maximum-entropy classification ( MaxEnt ) ( 最大熵分类 ) 或 log-linear classifier ( 对数线性分类器 ) 。在这个模型中,描述单个试验的结果的概率使用 logistic function ( 逻辑函数 ) 进行建模。

可以从 LogisticRegression 类中访问 scikit-learn 中 logistic regression ( 逻辑回归 ) 的实现。该实现可以拟合 binary ( 二进制 ) ,One-vs- Rest ( 一对一休息 ) 或 multinomial logistic regression ( 多项逻辑回归 ) 与可选的 L2 或 L1 regularization ( 正则化 ) 。

作为优化问题,binary class L2 penalized logistic regression ( 二进制类 L2 惩罚逻辑回归 ) 使以下 cost function ( 成本函数 ) 最小化:

$$ \min \limits_{w,c}\ \frac{1}{2}w^{T}w + C \sum_{i=1}^{n} log(exp(-y_{i}(X_{i}^{T}w +c ))+1) $$

类似地, L1 regularized logistic regression ( L1 正则化逻辑回归 ) 解决了以下优化问题:

$$ \min \limits_{w,c}\ ||w||_{1} + C \sum_{i=1}^{n} log(exp(-y_{i}(X_{i}^{T}w +c ))+1) $$

在 Logistic 回归类中实现的 solver ( 求解器 ) 是 “liblinear”, “newton-cg”, “lbfgs” and “sag”:

solver ( 求解器 ) “liblinear” 使用 coordinate descent ( 坐标下降 ) (CD) 算法,并依赖于与 scikit-learn 一起提供的优秀 C ++ LIBLINEAR library 。然而,在 liblinear 中实现的 CD 算法不能学习一个真正的 multinomial (multiclass) 多项(多类)模型;相反,优化问题以 “one-vs-rest” 的方式分解,因此对所有类进行单独的二进制分类。这发生在 hood 下,所以使用此求解器的 LogisticRegression 实例表现为 multiclass classifiers ( 多类分类器 ) 。对于 L1 惩罚,sklearn.svm.l1_min_c 允许计算 C 的下限,以获得非 “null” (所有特征权重为零)模型。

“lbfgs”, “sag” 和 “newton-cg” 求解器仅支持 L2 penalization ( L2 惩罚 ) ,并且发现某些高维度数据的收敛速度更快。这些求解器将多类设置为“多项式”可以学习一个真正的 multinomial logistic regression model ( 多项式逻辑回归模型 ) [5] ,这意味着它的概率估计应该比默认的 “one-vs-rest” 设置更好地校准。 “lbfgs”,“sag” 和 “newton-cg” 求解器不能优化 L1-penalized ( L1 惩罚 ) 模型,因此 “multinomial” 设置不会学习 sparse models ( 稀疏模型 ) 。

求解器 “sag” 使用 Stochastic Average Gradient descent ( 随机平均梯度下降 ) [6]。当样本数量和特征数量都很大时,它比其他大型数据集的求解器更快。

简而言之,可以选择具有以下规则的 solver ( 求解器 ) :

Case Solver
Multinomial loss or large dataset “lbfgs”, “sag” or “newton-cg”
Small dataset or L1 penalty “liblinear”
Very Large dataset “sag”

参考资料

个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn

Sam avatar
About Sam
专注生物信息 专注转化医学