机器学习入门1:算法概述
本文是机器学习入门的基础版,学习对象产品经理同学;
机器学习,简言之:一堆数据,用算法模型进行训练,再用于使用。
似乎算法看上去是最重要的,但这里也需要强调下:数据来源,数据处理,特征选取,在特定场景下算法优劣的衡量和算法一样重要。
1.算法
算法满意度:
如何衡量一个算法的好坏,有两个指标:准确率、召回率(也叫查准率和查全率)。准确率和召回率都是越高越好,且是互斥关系,单独说准确率或召回率高是没有意义。
有如下定义:
准确率 P = TP/TP+FP = TP/T’ 识别出的正例中有多少是正例
召回率 R = TP/TP+FN = TP/T 输入的正例中多少被找回了
算法平衡点:
在衡量算法好坏时,常用P-R图表示。将预测结果按预测概率从高到低排序,再按此顺序,将样本作为正例,计算准确率和召回率。以准确率为横轴、召回率为纵轴得到P-R曲线。
而以假正例率为横轴,真正例率为纵轴得到的ROC曲线,面积称为AUC。
当A曲线完全包含B曲线时,则断定A曲线性能更好,若有交叉,则无法一般性的断定谁更好,只能在给定准确率/召回率时比较。
2.数据预处理-归一化
在上述算法中,如果我测试100个苹果,100个非苹果,准确率是1/2;但如果我测试100个苹果,200个非苹果,得到的准确率是100/300=1/3; 测试200个苹果,100个非苹果,得到的准确率是2/3;发生了什么问题?这是因为在统计时,必须两种样本的数量相当,否则计算概率(比值)一定会倾向于数量大的那部分。
即在训练过程也是一样,最好保持训练样本中正负样本的数量相当。
所以,在训练之前,数据预处理的重要一步是归一化。
(注:归一化还包括其他内容,例如让数据的变化范围在给定区域等,这里仅指让正负样本的数量一致。)
最简单的方式有二种:
1) 上采样(过采样)
将样本少的一方放大,但不能简单的copy多份,会导致严重过拟合问题。过拟合是指,学习算法把样本学的太好了,很可能把一些训练样本自身的特征当成了该类别的一般特征,导致泛化性能下降。
代表性算法有SMOTE是通过对正例进行插值得到额外的正例。(可自主了解该算法)
2) 下采样(欠采样)
将样本多的一方缩小,但不能随意丢弃,很可能丢失重要信息。代表性算法有EasyEnsemble。
3.特征提取/特征选择
要点:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已;
为什么要进行特征选择?
1.维数灾难。当属性太多时,选择重要的特征,使学习过程仅在一部分特征上构建模型,则维数灾难问题将大为减轻。
2.去除不相关特征会降低学习任务的难度。属性并不是越多越好,复杂的,没有意义的属性会增加学习的成本。就好像侦破案件时,只保留关键因素,真相越容易看清。
如何从初识特征集中选取子集,并评价该子集的好坏。一般的,由贪心算法的思路,分为前向搜索、后向搜索、或二者结合的方式。
前向搜索是指,在初始集合中先选取一个属性作为特征子集,在接下来的每一轮中,都选择一个最有意义的属性加入特征子集,直到特征子集最有意义。
后向搜索是指,将初始集合作为特征子集,在接下来的每一轮中,都剔除一个最无意义的属性,直到保留下来的特征子集最有意义。
上述表达中的“最有意义”依赖如何评价子集的好坏,一般可通过计算特征子集的信息增益判断。
常见的特征选择方法有:过滤式、包裹式、嵌入式。
4.算法的划分方式
机器学习算法有很多,有分类、回归、聚类、推荐、图像识别领域等等。在机器学习算法中,没有最好的算法,只有“更适合”解决当前任务的算法。
按照学习方式的不同,一般划分为四类:
监督学习
输入数据叫训练集,训练集中需要预测的字段是有已知答案的(比如是不是垃圾邮件,或者某一时间点的股价)。
一个预测模型通过训练过程来准备,训练过程中如果预测是错误的能够得到纠正。训练过程会一直持续,直到算法模型达到一定的预测准确度。
典型的问题是分类和回归。
典型的算法有对数几率回归和反向传播神经网络。
非监督学习
输入数据中需要预测的字段没有已知答案。
预测模型通过输入数据中的推导结构来准备。这样可能抽象出通用规则。它通过一个过程来系统地减少冗余,也有可能是通过相似性来组织数据。
典型的问题是聚合,降维,和相关性学习。
典型的算法是Apriori算法和k-Means算法。
总结:当使用数据构建商业决策模型,你通常会使用监督型和非监督型的学习算法。
半监督学习
输入数据中有的有预测结果,有的没有。
存在需要预测的问题,但是模型需要学习结构来组织数据并作出预测。大多数的实际应用都是半监督学习,因为现在的数据太多了,不太可能所有的数据都没有标签,同时,将所有的数据都带上标签又太费时间,所以半监督学习是个很好的折中。
典型问题是分类和回归。
典型算法是一些对其他灵活算法的扩展,这些灵活的算法对如何为数据建模作出了假设。
目前一个热点问题就是在类似图像识别这样的领域中使用半监督学习,这些问题中一般都拥有很大的数据集,但是很少的数据已经有了预测结果。
强化学习
输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。
典型问题是常见的应用场景包括动态系统以及机器人控制等,AlphaGo则是强化学习最有名的实例。
典型算法-马可夫决策就是强化学习的一种,还包括Q-Learning、时间差学习(Temporal difference learning)。
常用top10算法:
线性回归(Linear Regression)
逻辑回归(Logistic Regression)
决策树(Decision Tree)
支持向量机(Support Vector Machine, “SVM”)
朴素贝叶斯分类(Naive Bayes)
K最近邻(K-Nearest Neighbors, “KNN”)
K均值(K-Means)
随机森林(Random Forest)
降维(Dimensionality Reduction Algorithms)
梯度增强和自适应增强(Gradient Boost & Adaboost)
其他算法:
SparseLR、FFM、DNN、RNN
算法思想:
现有的机器学习算法只有几种思想,基于每种算法思想会衍生出一系列同类型的算法,使机器学习算法家族庞大而复杂。
例如以神经网络为思想衍生的一系列算法,BP网络是指BP算法训练的多层前馈神经网络,RBF网络是一种单隐层前馈网络,以及复杂模型为代表的深度学习。同时,各思想之间有借鉴及交融,形成新的算法。
例如,集成学习的主要思想是通过结合多个学习器来完成学习任务,其两大类别的代表算法有Boosting和随机森林。而随机森林的基础思想是决策树,所以可以说随机森林是一种集成学习算法,也可以说随机森林是一种决策树算法。