撒宇航
摘 要:在机器学习中,有两大类常见的问题,一类为回归问题,另外一类为分类问题。对于回归问题的解决,常见的方法有线性回归,随机森林等。而针对分类问题,有kNN,logsitic,SVM,神经网络等算法。不同的算法在不同的问题中具有不同的效果。因此,本研究通过具体的实例“泰坦尼克号乘客遇难预测”,通过运用机器学习中的不同分类模型来分析乘客的存活是运气原因,还是存在一定的规律性。通过该对问题的研究,比较了不同机器学习分类模型的差异性以及优缺点。
关键词:遇难乘客预测;kNN;SVM;逻辑回归;神经网络
泰坦尼克号的沉没是历史上具有广泛影响的沉船事件之一,1912年4月15日,在首次航行期间,泰坦尼克号撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难。这场轰动的悲剧震撼了国际社会。虽然幸存下来的人存在一些运气方面的因素,但有一些人比其他人更有可能生存,比如妇女,儿童和上层阶级。我们的目标便是根据每位乘客的性别,年龄,舱位等相关特征,来预测该乘客是否会在该次乘船事故中存活下来。训练集以及测试集,我们总共有900名左右的乘客数据,每位乘客包括10个特征,包括Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarke。我們将拿出600名乘客数据作为我们的训练集,剩余的300名乘客的数据,用来作为我们的测试集,用于检验训练出的模型的性能。
一、分类模型构建
(一) kNN模型
(1) kNN模型原理。kNN(k Nearest Neighbor)算法,又叫作k领近算法,是机器学习中一种常见的分类算法之一。其中的k表示待测样本最近的k个邻居。在1968年,Cover和Hart提出了kNN算法,这是一个在理论上比较成熟的方法[1]。
kNN算法的训练过程是将所有的训练集映射在特征空间中,测试过程将待测试样本,计算每个样本与训练集样本的欧氏距离,然后对所有距离进行排序,从中挑选出最近的k个样本,在k个样本中,采用基本投票原则,票数最多的类别作为待测样本的类别。
在我们的泰坦尼克号问题中,训练集一共含有600名乘客的特征数据,将它们映射到特征空间当中。测试阶段,我们将测试集的300个乘客数据,分别计算与600名乘客的欧几里得距离,从中挑选出最近的k个距离后,采用投票原则,将票数最多的类别作为待测样本的类别。
(2) 结果分析。我们调用了sklearn中集成的kNN模型,在训练集上进行了训练,并且尝试了不同的k取值,在该问题上的正确率。我们分别测试了当k 取5,10,15,20时模型的结果。测试的结果显示,在上述4种k的取值下,在测试集上的正确率分别为79.3%,81.7%,83.1%,82.4%。由此可见,在泰坦尼克号这个问题上,当k取值在15左右时,模型的结果较好。
关于kNN模型中k值的不同选择:当k值较小时,预测结果对近邻的实例点非常敏感,容易发生过拟合;如果k值过大模型会倾向大类,容易欠拟合;通常k是不大于20的整数。kNN算法的优点是精度高,对异常值不敏感。但是缺点是对k的取值相对比较敏感,不同的k取值对模型产生的结果可能差异性非常的明显。
另一方面,由于我们的训练集的大小仅仅为600个样本,而对于其他的一些机器学习应用,我们的数据集可能十分巨大,特征维数也会十分巨大,会造成kNN算法的运行速度缓慢,因为每预测一个样本,就要计算该样本与训练集中的所有的样本距离,还要对所有距离进行排序,这会大大提高算法运行的时间,降低kNN算法的效率,所以一般kNN算法只适用于数据集比较小的情况。
(二)逻辑回归模型
(1) 逻辑回归模型原理。逻辑回归是现今的工业界中一种常见的分类模型,对于大多数的问题都够取得相当不错的结果。逻辑回归的基本原理是使用逻辑回归函数来作为我们的预测函数,去预测在给定特征下,样本属于每个类别的概率。在训练阶段,通过梯度下降算法,不断的降低交叉熵代价函数,提高在训练集上的准确率。同时,我们加入了L1正则化,可以避免模型陷入过拟合。
(2)结果分析。通过在训练的过程中加入的L1正则化项,我们的模型基本没有发生过拟合,在训练集上的准确率达到了79.8%,在测试集上达到了81.7%的正确率,取得了良好的性能。逻辑回归的优点是在于简单,训练速度相对于KNN模型快很多。但是其一般更适合用于线性可分的问题当中,而对于一些线性不可分的问题中,采用更复杂的非线性模型可能会取得更好的效果。
(三)SVM模型
(1) SVM模型原理。支持向量机(support vector machine,SVM),是机器学习分类算法中一种综合性能十分优秀的模型。其不仅能处理线性可分的问题,引入的核函数,还能够处理线性不可分的问题。大大提高了模型的泛化能力。近年来,由于其性能优异,被广泛的运用在各种分类问题中。SVM可以理解为是逻辑回归的改进,对于逻辑回归模型来讲,由于存在无数个可能的解,解不唯一。即存在无数个超平面将数据分割开来,因此算法得到的解可能不一定是最优的。而SVM算法能从这无数个超平面中,选取一个最大间隔的超平面,使模型的泛化能力更强。SVM主要适用于两种情况。第一类是线性可分数据,第二类是线性不可分数据。对于线性可分数据,采用了核技巧,将数据从低维空间映射到高维空间,再通过松弛变量等技术使数据变的线性可分。
(2) SVM模型的核函数。对于线性可分的数据,普通的SVM可以取得很好的效果。但在现实世界里,存在着很多非线性可分的数据。这个时候,普通的SVM就不太适用。但是可以通过一定的核技巧,将数据从低维空间映射到高维度空间。此时,线性不可分数据就可能变成线性可分数据,核函数用来计算两个低维空间的向量在高维空间的内积,只要满足Mercer 条件的函数,都可以作为核函数。常见的核函数有线性核函数,高斯核函数,多项式核函数等。
(3) 结果分析。当训练集数目比较小时,SVM算法一般能够取得很好的效果。但是当训练集数目比较多时,SVM比较容易陷入过拟合,所以需要采用一定的正则化措施来缓解过拟合。因此我们使用了sklearn中带有核函数的SVM,在包含有600个样本的训练集上经过一段时间的训练后,最终得到的支持向量个数为298个。可以看到大概有50%的训练样本为支持向量。我们采用了不同的核函数来检验模型的效果,实验结果表明,不同的核函数在该问题上的差异性不显著。最终我们采用了带有高斯核函数的SVM,在训练集上的正确率为81.8%,在测试集中进行测试时,得到了83.5%的正确率。从训练集和测试集上的正确率来看,模型基本上没有发生过拟合。SVM也是在包含上述一系列的分類模型中,所达到的正确率比较高的模型,因此可见,SVM模型是效果非常好的一个分类模型。
(四)神经网络模型
(1)神经网络模型原理。神经网络是基于生物学中神经网络的基本原理,对人类大脑工作过程的一个简单的模拟。它能够通过一定的学习算法,学到一个非常复杂的非线性模型。当数据量比较大时,具有十分强大的泛化能力。神经网络通过将多个神经元通过一定的联结方式连接在一起,构成一个运算模型。每个神经元节点的输入是上一层神经元输入的线性组合,然后加上激活函数后,作为该个神经元的输出。常用的激活函数有sigmoid,tanh,Relu等。每两个神经元之间,具有一个权重值w。神经网络就是通过激活函数,权重,联结方式来模拟人类大脑的学习记忆功能。神经网络在工作时,首先通过前向传播计算代价函数值,然后通过反向传播算法计算代价函数的梯度值,最后通过一定的优化算法,更新神经网络的每一层的权重矩阵W。
在我们的泰坦尼克号乘客遇难问题中,每个乘客在经过预处理后,有14个特征,所以我们的神经网络的输入层一共含有14个神经元,第二层网络具有32个神经元,第三层网络具有64个神经元,输出层含有一个神经元。在这个问题上,我们建立了一个具有多层感知机的神经网络来进行预测,并且添加了相应的正则化项来防止模型的过拟合。
(2) 结果分析。我们通过构建了一个三层的感知机神经网络,对600个训练集数据进行训练,最终在训练集上取得了85.8%的正确率,在测试集上取得了83.5%的正确率,基本和SVM得到的结果不相上下。实质上,神经网络更适合处理特征数目很多,训练集数目很大的情况,而在泰坦尼克号这个问题上,由于我们只有几百个训练样本,每个样本只有十几个特征。因此,虽然结果表现不错,但是没有真正体现出神经网络强大的泛化能力,没有体现出多层神经网络的主要优势。
三、结语
本项目通过具体的实例“泰坦尼克号乘客遇难预测分析”,对该问题分别采用了kNN模型,逻辑回归模型,SVM模型以及神经网络模型。在该问题的同一测试集上,最优模型分别取得了79%,81.7%,83.5%,83.5的正确率。比较了机器学习中不同的分类模型在该问题上的优缺点。通过对该问题的研究,掌握了不同分类模型的差异性。
参考文献
[1] 杨丽华,戴齐,郭艳军.KNN文本分类算法研究[J].微计算机信息,2006,22(21):269-270.
[2] 范玉妹,郭春静.支持向量机算法的研究及其实现[J].河北工程大学学报(自然科学版),2010,27(04):106-112.