当前非常热门的莫过于大数据、云计算、机器学习等这些名词。无论什么产品,好像没有机器学习就不值得一谈,没有机器学习就没有先进性。今天跟大家一起看看机器学习到底是啥玩意儿。这里不对具体算法做过多解读,只是从整体阐述机器学习是何物。
1)如何判断机器学习的效果如何?为什么需要机器学习,而不是使用专家经验或着规则?
2)常用的机器学习方法有哪些?
3)工业界机器学习的流程是怎样的?
4)为什么需要特征工程,特征工程在机器学习中的作用是怎样的?
阅读完本篇文章之后,这些问题都将豁然开朗。
1 算法分类
整体来说机器学习分为有监督学习、无监督学习。有监督学习就是学习的数据中已经知道结果了,根据已知数据,训练出模型,然后给出较准确的预测。无监督学习就是事先不知道结果的,通过大数据的训练,得出结果。无监督学习一般用于深度学习。根据机器学习的用途可以分为:分类与回归两种类型。常用的分类算法有逻辑回归二分类、决策树、随机森林、朴素贝叶斯算法等;常用的回归算法有Xgboost。
随机森林:属于集成学习的一大分支,有多棵决策树,对每棵树的结果进行统计,比例最高的决策树作为结果。
XGboost:由多棵回归树组成,也属于集成学习的分支。
逻辑回归二分类:处理分类问题,处理速度较快,适合处理较大规模的样本。
场感知因子分解机:可以自动对特征做组合。
梯度提升树:是一种基于回归树的集成学习方法,XGBoost就是典型的应用。
模型融合是集成学习的一种代表,当单模型结果差异较大时,模型融合往往能取得不错的效果。
2 算法效果评估
对于一个算法模型,如何有效评估模型的好坏很重要。过拟合或者欠拟合都不好,目标是要做到泛化能力好。
2.1 混淆矩阵
最常用的评估方法就是混淆矩阵,如下图
对角线的数据表示预测值与真实值一致。
TPR(true positive rate):在所有实际为正类的集合中,正确地预测为了正类的比例。
FPR(false positive rate):在所有实际为负类的集合中,错误地预测为了正类的比例。
2.2 AUC-ROC
auc-roc作为一种分类器评估指标,ROC曲线是以TPR为纵轴,FPR为横轴的曲线,AUC为ROC曲线以下的面积,AUC值越大说明二分类评估器的模型效果越好。假设正样本数为M,负样本数为N,则总对数为M*N,当正样本被评估为正例的概率大于负样本被评估为正例的概率时计为1,所有计为1的和除以总对数(M*N),就是AUC的值[0,1],值越大说明分类算法效果越好。
参考:https://zhuanlan.zhihu.com/p/58587448
准确率、召回率等当样本数据不一样时,结果都不稳定,AUC-ROC指标还是比较稳定的。当然没有一个指标可以完美地评估所有模型,不同的应用场景模型评估关注的指标不太一样,按需选取评估指标。
3 特征工程
在算法界有句话叫做:“数据和特征决定了算法的上限,而模型和算法只是不断逼近这个上限”。好的特征加简单模型要强于不好的特征加复杂模型。在模型训练之前,从数据样本中提取有效特征是决定算法效果的关键步骤。整体机器学习的过程可以分为如下几步。
1)问题建模。首先要数据清洗,异常数据会影响学习的准确度。然后确认评估指标,要确保模型指标与线上业务指标一致,比如分类指标(准确度、召回率、精确率、混淆矩阵、AUC-ROC),回归指标(平均绝对误差、平均绝对百分误差),聚类指标,排序指标等。
2)特征工程。很重要,直接决定了机器学习结果的好坏。
3)模型选择
4)机器学习
5)模型融合
6)评估预测
3.1 特征工程一般包括3个步骤
1)特征选择(减少过拟合),过滤式特征选择,先过滤出特征,再用过滤出的特征进行模型训练;包裹式特征选择;嵌入式特征选择
2)归一化,将每个特征转化为0~1的数值
3)分箱算法,将连续特征离散化,会有更好的效果
3.2 特征提取
1)专业领域知识提取
好的特征能够使模型预测更加容易,特征就是使用数据的专业领域知识去创建能够使机器学习算法工作的特征。复杂的模型在一定程度降低了特征工程需要做的工作,因此特征工程与模型是此消彼长的。特征的挖掘一般与专业领域知识强相关,因此特征也是业务逻辑的一种数据层面的表示。
2)如果没有专业的领域知识,通过探索性的数据分析(EDA)也能发现较好的特征
3)数值特征,对于光滑函数(线性回归、逻辑回归),对输入比较敏感,可以先对数值特征做归一化。对于非光滑函数可以不做归一化
4)还有列别特征、时间特征、空间特征等
3.3 特征选择
特征选择就是从特征集合中选出一个子集。为了强化模型,降低过拟合,特征选择一般包括:特征生产、评价函数、停止搜索、验证过程。
1)过滤方法
单变量过滤法,只考虑单个特征变量与目标变量的关系,按相关度排序,过滤掉不想关的特征变量。
多变量过滤法,考虑多个变量与目标变量之间的关系
2)封装方法
过滤方法与具体的机器学习算法是独立的,封装方法使用具体的机器学习算法评估特征的有效性。首先用一个特征子集训练模型,然后验证该模型的有效性。特征子集搜索算法:完全搜索、启发式搜索、随机搜索。
不断地选择特征——>使用预先定义好的模型训练——>验证特征——>最终选择出效果最好的特征子集
3)嵌入法
潜入法就是过滤法与封装方法的融合。一般入门的采用过滤法就够了,简单便捷,不需要与模型的训练相结合。针对特征选择,目前也有很多开源的工具包可用。
更多精彩内容,欢迎关注
知乎:https://www.zhihu.com/people/mei-an-63
CSDN:https://blog.csdn.net/qq_42672856
微信: