本文用尽量直白的语言、较少的数学知识给各位产品经理讲清楚:“机器学习的过程”、“什么问题适合机器学习?”以及“各个算法的原理是什么?”
一、机器学习的过程
机器学习的过程:从本质上来说,就是通过一堆的训练数据找到一个与理想函数(f)相接近的函数。 在理想情况下,对于任何适合使用机器学习的问题,在理论上都是会存在一个最优的函数让每个参数都有一个最合适的权重值,但在现实应用中不一定能这么准确得找到这个函数。所以,我们要去找与这个理想函数相接近的函数。只要是能够满足我们的使用的函数,我们就认为是一个好的函数。 这个训练数据的过程通常也被解释为: 在一堆的假设函数(Hypothesis set)中,它是包含了各种各样的假设,其中包括好的和坏的假设。 我们需要做的就是:从这一堆假设函数中挑选出它认为最好的假设函数(g)——这个假设函数是与理想函数(f)最接近的。
二、什么问题适合用机器学习解决
机器学习不是万能的,并不能解决所有的问题。 通过以上机器学习的过程可以看出来,实质上,机器学习是:通过已知经验找到规律来进行预测。 银行想知道应该发放多少贷款给某个客户时,可以根据过往成功放贷的数据找出每个贷款区间的人群特点、自身的房车资产状况等,再看看这个客户的特点符合哪个区间,以此去确定应该发放多少贷款,这就是适合用机器学习去解决的问题。
- 有规律可以学习
- 编程很难做到
- 有能够学习到规律的数据
- 预测(回归):根据已知数据和模型,预测不同客户应该发放的贷款额度是多少
- 判别(分类):与预测有点类似,也是根据模型判别这个客户属于过往哪一类客户的概率有多大
- 寻找关键因素:客户的属性非常多,通过模型我们可以找出对放贷影响最大的因素是什么
三、几种常见的模型和算法
1. 感知机Perceptron Learning Algorithm,PLA
感知机学习算法是一种二分类的线性分类算法,一般用来解决二分类(只存在两个结果)的问题。 例如:判断“一个同学的考试成绩合格还是不合格?”、“银行会不会给某个客户发放贷款?”等。 这种只存正、负两个结果的问题,就称为二分类的问题。 感知机学习算法的原理非常好理解,有点类似考试的概念: 把很多个影响因素看成每道题的得分。因为不同题目的权重不同,所以我们每道题的得分由权重(重要程度)和这个因素的得分相乘,最后把所有题目的得分加起来看看有没有超过60分(阈值)。如果超过了就是及格了(正结果),即对应的输出值为1,如果没有超过就是不及格(负结果),对应的输出值为-1。 还是以刚才银行贷款的例子来解释:通常银行判断在“给不给某个客户放贷款?”时,都是已经掌握了客户的各种信息(如:年薪、负债情况、社保缴费、公积金等等)。 因为数据的维度不同,描述的单位也不同,我们需要把这些数据按照各自维度的标准统一成可以量化的评分——可以按照年薪在5W以下得1分、5-10W得2分这样的方式进行量化。 每个维度的重要程度都不同,所以我们在相加的时候需要考虑为每个值加上一个权重,再看看最后得出来的结果有没有高过放款的阈值评分——如果高过这个分数就放款,低过这个分数就不放款。首先看看关于感知机的数学定义:


怎么去找到这条线(超平面)呢?
感知机使用的学习策略是“梯度下降法”。 这种方法的思想是:先在平面内随便找一条线,然后开始把样本点放到平面内。当一个点被误分类——即位于分类超平面错误的一侧时,调整模型的参数(w和b),使分类超平面向该误分类点的一侧移动,以减少该误分类点与超平面的距离,直到超平面越过该误分类点使其被正确分类为止。
感知机利用梯度下降法的训练过程
这种方式对于模型的训练非常快速,计算量相对较小。 但同时,这样的计算方式追求最大程度正确划分、最小化训练数据的错误,效果类似下图的直线——会导致比较容易造成过拟合的情况,即:模型对于新数据的包容性差,会过度地把新输入数据分成错误的类别。2. 线性回归Linear regression,LR
讲逻辑回归之前,我们先讲讲“什么是线性回归?”。 在统计学中,线性回归是指:利用称为线性回归方程的最小平方函数,对一个或多个自变量和因变量之间关系进行建模的一种回归分析。举个直观的例子:深圳春运时的客流量可能是与过年的时间相关的——越接近过年这天人流量越大。如下图所示:


例如:上述例子的日期是一个特征,我们还可以找到地区、节假日、其他车站的客流量等等不同的因素,每个特征至少对应一个未知的参数。这样就形成了一个线性模型函数。当特征变多时,上述线性回归的向量表示形式为:


3. 逻辑回归 Logistic regression,LR
逻辑回归实际上也是一个线性回归模型,但是线性回归常常用来做预测,逻辑回归却常常用来解决二分类问题。 为什么会有这么大的差异呢? 如果对于上面的感知机算法来说,目标是为了找到一个能够将正负样本完全分开的超平面的话,从另外一个层面看感知机算法就相当于是一个跃阶函数。 我们只需要找到阈值,并且拿输入的数据去对比,得出数据是大于还是小于这个阈值,然后就能给出的就是0或1(正/负样本)的反馈。 对应到数学模型上:我们只需要把算出来的结果映射到这个跃阶函数上看看大于0还是小于0,就能说他是一个正样本还是负样本。

- 直接对分类可能性建模,不需要事先假设数据的分布情况。感知机算法中如果不先假设一下数据的分布再去确定线的位置的话,很可能会算错,但是逻辑回归算法就避免了这个问题。
- 不仅可以预测出类别,还可以给出具体的概率预测值。这对预测结果有更好的解释性。
- 有很好的数学性质,方便计算,工程量较小。
4. K近邻分类算法 K-Nearest Neighbor,KNN
上面我们说到,感知机以及逻辑回归实际上都是一种二分类算法,非黑即白。 那,如果遇到多分类问题该如何解决呢? 有一种非常简单的算法可以帮助我们快速解决这个问题——K近邻分类算法。 K近邻分类算法是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。 用官方的解释来说:所谓K近邻算法,即存在一个样本数据(训练样本)集,并且样本中每个数据都存在标签(类别)——也就是说样本集中每一个数据都被分到一个类别中。输入新的数据后,将新数据的每个特征与样本集中的数据对应的特征进行比较,然后算法提取样本集中特征最相似的数据的分类标签,即可以为新输入的数据进行分类。

- 精度很高,对异常数据也不敏感(所属类别是由大多数点决定了,一两个异常点不会有太大的影响)。
- 与上面的PLA、LR算法相比,不需要训练模型,易于实现,来一个新数据就可以马上进行比对。
5. 朴素贝叶斯分类器 Naive Bayes Classifier,NBC
贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理和特征条件独立假设为基础,故统称为贝叶斯分类。 而朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。 朴素贝叶斯的简单之处在于:对于给出的待分类项,求解在此待分类项出现的条件下各个类别出现的概率。哪个概率最大,就认为此待分类项属于哪个类别。 这就有点像我们走在街上,迎面走过来一个黑色皮肤的人,那我们就猜他是非洲人,因为黑人中非洲人最多。 通过上述例子我们可以看到:我们判断一个人是非洲人基于一个很关键的信息,因为他是黑色皮肤的人。所以,我们的判断实际上是发生在“拥有黑色皮肤”这件事的情况下我们的推断。 这种在其他已知事件发生的基础上去计算某件事发生的概率叫做“条件概率”。一般我们使用贝叶斯定理求解条件概率。 要搞懂贝叶斯定理之前,我们首先要搞懂“什么是正向概率?”和“什么是反向(条件)概率?”。 在贝叶斯研究之前, 人们已经能够计算正向概率。 比如:“假设袋子里有N个白球M个黑球,你伸手进去摸一把,摸出黑球的概率有多大?”。 然而在我们实际生活中,日常能观察到的只是事物表面的结果——往往我们只知道从袋子里取出来的球是什么颜色,并不能看到袋子里的实际情况。这时候我们就希望有一些方法可以通过观察这些取出来的球的颜色,可以推测出袋子里面黑白球的比例是什么样的。 我们通过下图简单讲一下贝叶斯定理的组成:

- 生成式模型,通过计算概率来进行分类,可以用来处理多分类问题而且分类的结果很容易被解释
- 所需估计的参数不大,对缺失数据不太敏感
- 无需复杂的迭代求解框架,适用于规模巨大的数据集
爱盈利-运营小咖秀(www.aiyingli.com) 始终坚持研究分享移动互联网App运营推广经验、策略、全案、渠道等纯干货知识内容;是广大App运营从业者的知识启蒙、成长指导、进阶学习的集聚平台;
想了解更多移动互联网干货知识,请关注微信公众号运营小咖秀(ID: yunyingshow)
【转载说明】  若上述素材出现侵权,请及时联系我们删除及进行处理:8088013@qq.com