暑假学习总结机器学习(其一)————回想基础概念及流程

暑假摸鱼一时爽
一直摸鱼一直爽
——————————————————————

一.机器学习是什么?

——————————————————————————————————————————
在Nature杂志封面上曾登场过两次AlphaGo(Zero)打败世界围棋冠军的消息引发了国内对于机器学习的讨论,并且随着国内各高校增设人工智能及相关专业,学习机器学习的人数也变得越来越多。那么,什么是机器学习呢?
光是看着各大科普网站上的讲解你可能还是一头雾水,各种各样有名的机器学习算法与机器学习类型让人眼花缭乱。其实它还有一个不太起眼的,更加专业的名称,那就是统计学习理论,这是因为其在算法中涉及了大量的统计学理论,概率论等相关学科。我个人认为认为机器学习本质上就是利用大量的数据,捕捉其数据中影响结果的特征,配上推断统计的机器学习算法,辅以合理的参数优化,以得到更加接近于真实的预测结果。

二.初学者机器学习算法库——scikit-learn

——————————————————————————————————————————
初学机器学习的人建议使用scikit-learn库进行机器学习算法的导入,其库中包含了大量的著名且实用的机器学习算法,如逻辑回归(LR),朴树贝叶斯,支持向量机(SVC)等机器学习算法。
那么问题来了,如此众多的又好用的机器学习算法要如何选择呢?
不要急,scikit-learn官网为我们提供了十分具体的图示指导我们如何选择合适的机器学习算法。
暑假学习总结机器学习(其一)————回想基础概念及流程_第1张图片
比如现在比较流行的文字情感分析,属于自然语言处理(NLP)的范畴,给定的数据应该是很多句文字和标记文字情感标签,我们可以通过这张图开始进行算法的选择。
——————————————————————
首先确定给定的样本数据大于50组(样本数据太少是无法进行大数据分析的),之后我们确定我们的目的是为了判断其文字情感(积极或消极)的类别,然后确定样本数据是带有标签的,这时我们就进入了分类器(classification)算法的范围之内。
继续进行判断,在各类比赛之中我们的样本数据一般不超过十万,这时我们可以使用线性支持向量机(Linear SVC)进行尝试,如果没有用的话,我们可以继续判断为文本数据,最后我们知道了要朴树贝叶斯算法进行机器学习。而其确实也被广泛地应用于文本数据的分类,效率也相对比较高。

三.机器学习流程简述

——————————————————————————————————————————

3.1 数据导入

拿到数据之后(一般情况为.csv格式),使用pandas库(可以进行大量数据分析的库)就可以将数据导入方便以后进行数据处理。

3.2 数据清洗

将样本数据导入之后我们需要检查其样本数据中有无残缺的,即缺失的标签或者内容。我们需要对其进行彻底地处理,否则在后续的运算中就无法进行算法调用。处理的方法有很多种,对于残缺数量较少的整型或者浮点型数据,我们可以对其它完整的数据进行平均值计算然后填充进入空数据中,使其更少地影响原数据导向分析,如果是二分类字符型数据,我们可以将其转化为0与1进行处理(如果有多项可以设置为0,1,2,3等等)。另外,对于数据缺失量大到足以影响其原本数据发展导向或者难以进行处理的话,我们也可以直接将其进行弃用。

3.3 数据可视化分析

将样本数据处理到可用的时候,我们可以使用Matplotlib库(用于将数据可视化分析)对其进行可视化操作,如柱状图,条形图还有很多体现多种特征的复合图,都可以方便我们找到其中与预测结果有直接相关性。

3.4 特征工程

此部分需要我们将筛选出来的特征进行进一步进行测试查询,并计算出每一个特征与预测结果的相关指数。由于相关性较小的指数参与结果预测的话很容易出现偏差,对于相关性较小的特征通常不会被选入作为相关特征进行机器学习预测。而特征工程也是一个十分影响机器学习算法选择的部分,所以说选择合适的特征并适当选择对应的机器学习算法是十分重要的一个部分。

3.5 机器学习部分

在数据处理干净,特征选择都已经决定时。我们需要将数据分为两部分,一部分是训练集,一部分是测试集。通常训练集与测试集的占比为3:7。训练集顾名思义是用来在机器学习中担当模型训练的作用,作用是通过机器学习算法一步一步创造出可以进行预测数据导向的模型。而测试集则是用来测试模型的准确度的数据集。
——————————————————————
有人可能问:既然用来训练的数据越多越好,那为什么还要分出来那么多测试集呢?这是因为如果将所有数据都投入进行训练的话,自我测试出的分数会越来越高(因为本身就是同一组数据),这时候就出现了过拟合现象,指其模型预测过度接近于自身数据集。换言之就是此模型预测外部数据的准确率是远不如你在内部数据进行测试的准确率,颇有几分“掩耳盗铃”的意思。
接下来就是选择机器学习的算法了,使用scikit-learn可以直接按照上面的教程进行选择。
一次学习之后模型预测准确率肯定是不会达到可以使用的标准的,所以我们需要调整参数以提升模型预测的准确率,比如调整各个特征的权重大小,即调整各个特征对于模型预测结果的偏向指数,如果某个特征对于结果影响相对大,就提高权重,反之亦然,除此之外还有很多的参数也可供调整。
经过各种形式的参数调整(当然过程会很复杂),我们将会得到一个可用的,准确率合格的模型。
如果是参加比赛的话,我们可以导入其待预测的数据集进行预测数据填充并提交,一般情况下都能当下看到自己的分数。

你可能感兴趣的:(python,机器学习)