机器学习 (八)kaggle竞赛之泰坦尼克号项目实战-1

版权声明:本文为博主原创文章,未经博主允许不得转载,谢谢尊重每个人的权利。 https://blog.csdn.net/lilongsheng1125/article/details/79411956

引言

       机器学习算法都是为项目为数据服务的,某一个算法都有它自己的适用范围,以及优势与劣势,研究算法由于平日的日常操练,那么用它去做项目就如同上战场杀敌一样,去发挥它的价值,kaggle就是这样一个刷怪升级的地方,在kaggle里面有无数的妖魔,等级从初级到专家级不等,下面就让我们去尝试一下。

套路

       我们要做的是泰坦尼克号,通过分析人员的各种属性数据,研究其获救率的课题,其实在做任何事情的时候大概都有一定的套路在里面,就拿软件工程来说,在开发一个项目的时候从运营、产品、需求、开发、测试是一个完整流程,有的公司可能会省略需求人员,在机器学习里面研究过程过度依赖于分析人员自身 自身经验,分析、测试、上线等都是分析人员自己搞定,在每个小的阶段有各自的评价指标来观测我们分析模型的好坏,比如召回率、正确率,按着大概步骤进行的好处是会提高效率以及产出稳定性。

分析利器

       在看泰坦尼克时看了韩小阳老师的博客,写的很到位,膜拜一下大神人物,不过相信牛人背后的付出也是很坚信,没有人随随便便成为大神,来让我们一起成为大神吧,向前迈进。。。。

sklearn 神器

       一张图胜过千言万语,下面这张图是sklearn库主要结构和功能,可以看到分了六大块,分别是分类器、回归、聚类、降维、模型选取、预处理,可以说再机器学习里面完全够用了,省去了我们自己撸代码的过程。
这里写图片描述

数据初步分析

对数据的认识很重要
       这句话的意思即在给定的或我们自己分析出来的一堆特征集合中,每个集合和目标变量是啥关系我们要心里门清,要不咋分析呢,数据属性对模型结果其实是影响很大的,这也算是知己知彼,道理都是相通的,大道至简。
        在认识数据的过程中可以利用pandas、matplotlib这样常用的数据分析库来辅助分析,他们可以轻松的画出各种图标,如柱状图、折线图、合图、密度分布图等等,毕竟数据是死的几百甚至几万条数据中看出来走势也是很难的,这也算是利用的图标的优势,俗话说一张图胜过千言万语,大家都知道蒙娜丽莎图像,这里面隐含了多少内容是无法预测的,所以,这一步可以多借助于图像分析将事半功倍。
该步骤主要目的就是认识数据,我们要达到的目的是清楚每个属性特征和目标变量之间的关系,影响程度都要清楚,如此一来我们才有可能选择出来好的特征,去除没有影响的特征。

简单数据处理

特征工程很重要 feature engineering
       特征工程即分析组合各种特征,特征是模型的输入数据是算法模型的血液和心脏,在处理各种特征时很大程度上也是根据每个人的经验以及理解来处理.

  • 缺失值

       如果缺值的样本占总数比例极高,我们可能就直接舍弃了,作为特征加入的话,可能反倒带入noise,影响最后的结果了
如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把NaN作为一个新类别,加到类别特征中
如果缺值的样本适中,而该属性为连续值特征属性,有时候我们会考虑给定一个step(比如这里的age,我们可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个type加到属性类目中。
有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上,这个实例中就是属于缺失值不太多的情况。

  • 枚举类型
    该类型需要转换为dummes类型来处理,sklear preprocessing模块已经给我们写好了函数get_dummy直接调用接口,既可以按列来处理,也可以多了一起处理,还是很好用的。
  • 值太大
    这种类型就用到了归一化处理,将数据处理为-1到1或者0-1之间的数,归一化一般是用每个值除以最大值减去最小值的比值。
  • 其它情况
    当然除了这几种最基本的情况,还有很多情况和种类需要处理,这里就不一一雷叔

选择建立模型

把数据处理完后下一步就该选择模型算法了,首先我们要确定我们是在求解哪一类问题,是回归、分类还是聚类,确认了问题类型选择相应的算法,在这里我们是想确定乘客获救不活就显然是分类问题,我们选择分类算法 顿时脑海中浮现出KNN 决策树、逻辑回归等等算法,从常用角度来说逻辑回归更常用些,我们先试试再说,利用sklearn中的linear_model.LogisticRegression函数即可,第一次不管模型效果咋样先建立了一个baseline再说,后面可以不断优化迭代,这类似于我们做事情好多事情需要一步步来,一步到位不好。

模型优化

到这里baseline模型已经建好了,现在的工作重点已经从建立模型到了如何优化模型,以及测试模型的好坏阶段,常用的方式有下面几种,这也算是常规且好用的套路。
- 系数关联分析
该思路即分析建好的模型各个系数也是权重对评价结果好坏的影响,一般该值越大影响越大
- 交叉验证
开始的时候一直不太理解交叉验证的原因,后来发现使用交叉验证其实也是又条件的,如果训练样本不多的时候如果只训练一次很容易发生非均衡问题样本的分布我们并不知道,也许我们第一次拿来训练的样本包含离异值很多,造成模型不稳定或者过拟合现象,交叉验证可以充分发挥训练集数据的价值,我们拿10-folder验证来说,训练集数据分为10分需要交叉验证10次,数据对模型的影响已经很小了,通过交叉验证可以很好地提高模型效果,所以,这种方式被大多数人在使用。

  • 学习曲线
    学习曲线是进一步观察模型是否欠拟合或者过拟合的图形工具,很方便,后面我们会详细介绍学习曲线

模型融合

在商品或者上线的模型一般都是融合模型,不仅仅利用了一种模型或者算法,没中模型或者都有一种局限性,模型融合的思想类似于把众家的有点集中到一家,发挥特例的特长,是的结果更好的思想技术,当然对于不同的模型有不同的思路,具体还需要去分析那个模型可以和那个模型融合,比如随机森林、GBT、adaboot、xgboot等等,以后会详细分析。

问题思考

把下面的问题留给阅读者
1.如何发现模型过拟合或欠拟合?
2.过拟合或欠拟合有哪些方式解决?

总结

       kaggle 网站里面的项目感觉还是非常不错的,里面也有很多大牛,理论结合实践才是提高和提升的快速方法,另外多思考、多想很多问题自然会想明白,作为一名IT工程师不过学习和不断理解新知识也是一项基本素养,俗话说活到老学到老,知识是无止境的,这知识刚刚打开了一扇大门,日后将同算法的同胞们共同奋斗。

猜你喜欢

转载自blog.csdn.net/lilongsheng1125/article/details/79411956
今日推荐