AI产品经理必须要懂的算法(自学笔记6)

目录

机器学习分类

1.K近邻算法(K-Nearest Neighbor)

2.线性回归(Linear Regression)

3.逻辑回归(LR,Logistic Regression)

4.朴素贝叶斯(NBM,Naive Bayesian Model)

5.决策树与随机森林

6.支持向量机机(Support Vector Machine,SVM)

7.K-means 聚类算法

8.深度学习


机器学习分类

分类问题、回归问题、聚类问题

1.K近邻算法(K-Nearest Neighbor)

KNN 是基于距离的一个简单分类算法。

原理:对于一个待测的样本点,我们去参考周围最近的已知样本点的分类,如果周围最近的 K 个样本点属于第一类,我们就可以把这个待测样本点归于第一类。

优点:简单易懂,实现起来非常容易,不需要进行训练;在处理边界不规则数据的分类问题时要比线性分类器的效果好

缺点:只适合小数据集,因为它在处理数据量比较大的样本时会非常 耗时,所以,在实际工业中,我们一般会选用 Kd-tree 来进行预测。对数据容错性偏低,当待测样本周围的 K 个 数据样本中存在错误样本的时候,就会对预测结果有很大的影响。

例子:预测候选人能不能拿到 Offer

X 轴代表候选者的工作年限,Y 轴代表候选者目前的月收入,我 们对拿到 Offer 的人用红色进行了标记,对没拿到的用蓝色进行了标记。

现在让你预测千秋同学能否拿到offer。

假如k值取3,就在千秋同学的附近,选出距离他最近的 3 个人,分别是潇然、斯南和莎佳。这三人中,潇然和斯南同学都拿到了 Offer,莎佳同学没拿到 Offer。这样一来,我们就可以直接预测出千秋同学是可以拿到 Offer 的,因为距离最近的 三个人当中,拿到 Offer 的人数大于没有拿到 Offer 的人数,或者说“少数服从多数”。

当 K 取 1 的时候,就表示我们只评估与待测样本最近的一个样本的值是什么分类就行了, 如距离千秋同学最近的是莎佳,她最终没有拿到 Offer ,所以,我们就可以预测千秋同学 也拿不到 Offer。

当 K 取 9 的时候,就表示我们需要评估与样本集个数一样的样本点。可想而知,最终的结 果就和整体的样本分布一样了,哪个分类的样本多,预测结果就是哪个分类,模型也就不 起作用了。

当 K 越小的时候,模型就越容易过拟合;K 越大的时候,就越容易欠拟合。所以,对于 K 的取值,一种有效的办法就是从 1 开始不断地尝试,并对比准确率,然后选取效果最好的那个 K 值。

2.线性回归(Linear Regression)

原理:已知线性回归方程是 Y = AX + B,我们将已有数据代入到这个方程中,然后求得出一组 A 和 B 的最优解,最终拟合出一条直线,使得图中每个点到直线的距离最短,也就是损失函数最小。这样,我们就能通过这个最优化的 A 和 B 的值,估算出新的数据 X 和 Y 的关系,进行数据的预测。

上面是一元回归方程,因为影响结果 Y 的其实只有一个影响因素 X。如果有多个影响因素,比如预测银行贷款,贷款人的工资和年龄都会影响贷款额度。这个时候,我们就要构建二元回归方程了,它的分布也不再是一 条直线,而是一个较为复杂的平面了,公式是 Y=A1 X +A2 X +B。同理,还有多元回归方程。

优点:简单易实现,运算效率高,可解释性很强。

缺点:预测的准确度比较低,不具备求解一个非线性分布的能力

应用场景:如预测身高、预测销售额、 预测房价、预测库存等等

3.逻辑回归(LR,Logistic Regression)

原理:在线性回归模型基础上,把原有预测的连续值转化成一个事件的概率,用来解决分类问题

当线性回归的预测结果,由于受到个别极端数值的影响而不准的时候,我们就可以用逻辑 回归来解决。

在数学中,我们通常会采取一些平滑函数,去减小这些极端值对于整体分布的影响,让整体的分布更加集中。所谓的平滑函数,你可以理解为是把线性回归预测到的具体的值,通 过一个函数转化成为 0~1 的一个概率值,如下图所示

最常见的平滑函数是 sigmod 函数,通过这个函数的映射,我们可以把某些极端 值产生的影响变得非常微小,尽可能地降低它们造成误判的结果,而且,这个函数的输出是在 0~1 之间(表达一个事件会发生的概率,也就是说逻辑回归的结果会输出一个事件的概率。当 sigmod 函数的输出大于 0.5 的时候,我们预测房价就会涨,小于 0.5 的时候,我们预测房价就会跌。

优点:简单易实现,运算效率高,可解释性很强,模型分布更集中。

缺点:对于非线性分布的预测结果不会很理想。

应用场景:预测广告点击率、商品点击率、商品推荐、股价预测、产品销量预测等等

4.朴素贝叶斯(NBM,Naive Bayesian Model)

贝叶斯原理:

条件概率:事件 B 在另一个事件 A 已经发生条件下的概率,记作 P(B|A)。在统计学中, 也称之为似然函数。比如说,北京下雨后,发生道路堵车的概率。

先验概率是事件 A 或事件 B 是根据经验来判断发生的概率,记作 P(A)、P(B)。比如说, 今天我面试了某厂的员工,根据过去的经验这个公司来的员工都很优秀,所以我判断这个人大概率也很优秀。

后验概率是我们已经看到某个事情发生了,再判断这个事情发生原因的概率。比如 P(A|B) 是已知 B 发生后 A 的条件概率,也叫做 A 的后验概率。比如说,一个西瓜很甜(事件B),然后我们推测它的土壤非常好(事件A)的概率,就是后验概率。

贝叶斯的原理就是根据先验概率和条件概率估算得到后验概率。

朴素贝叶斯的原理:

在贝叶斯的原理上,加了一个前提假设:所有条件对结果都是独立发生作用的。

公式如下:

比如:A 代表堵车,B 代表北京下雨,P 代表概率

P(A):堵车的概率;

P(B):下雨的概率;

P(B|A):在堵车的情况下,北京下雨的概率;

P(A|B):在北京下雨的情况下,堵车的概率。

根据过往的统计结果,我们可以得到 P(A)=60%,P(B)=30%,P(B|A)=40%,根据公式:P(A|B)=P(B|A) P(A)/P(B) = 40% * 60% / 30% = 80%。也就是说,在北京下雨的情况下,有 80% 的可能性会堵车。

应用场景:适用于文本分类、情感分析、垃圾邮件分类这类场景,这些数据的相互独立性更高。另外,朴素贝叶斯还会和协同过滤一起,使用到推 荐系统中。

5.决策树与随机森林

决策树

原理:

举例:怎么决定要不要租一个房子?

只选择离公司近的房子,比如说 5 公里以内的或者通勤时间在 40 分 钟以内的。其次,如果价格便宜,不管装修得好不好我都租,如果价格贵那我就要看装修 情况,装修好就租,装修不好就不租。

根据据距离、价格、装修这几个条件,决策树的示意图如下:

决策树(Decision Tree)是一种树形结构的算法,上面的节点代表算的某一个特征(如距离、价格),节点上每一个分支代表的是这个特征的不同种类(如距离远、距离近),叶子节点代表最终的决策结果。

决策树生成的过程包括三个部分,分别是特征选择、决策树生成、决策树剪枝。

信息熵:在特征选择和决策树的生成阶段,通过信息熵来决定哪些特征重要以及它们应该放到哪个节点上。信 息熵越大,系统的不确定性就越大,样本就越多样,样本的纯度越低,信息熵越小,系统的不确定性就越小,样本越趋于一致,那样本的纯度就越高。

决策树会计算每一个特征划分后样本的“纯度”,纯度越高的特征越接近根节点。

下面是3种决策树算法:

剪枝操作:决策树很容易出现过拟合情况,剪枝就 是我们对一棵树进行简化,减少它的复杂程度,提高模型的泛化能力。剪枝的原理主要就是判断把某个节点去掉之后,模型的准确度会不会降低了,如果没有降低,就 可以减掉这个节点。

剪枝的操作还分为预剪枝和后剪枝,它们的区别是剪枝发生的阶段不同。预剪枝在决策树生成时候同步进行。而后剪枝是决策树生成之后,再对决策树的叶子节点开始一步一步地向根方向剪枝。

优点:可解释性强,直观好理解

缺点:当数据量大,数据维度很多的时候,决策树会变得非常复杂,训练时间会很久。需要算法同学手工设置决策树的深度,如果设置了不合适的参数,很可能造成欠拟合或者过拟合。

随机森林(Random Forest)

指的是由多棵决策树组成

随机指的是每一个决策树的样本是随机从数据集中采样得到的。假设, 模型由三个决策树 A、B、C 组成,我们给每棵决策树都随机抽取样本进行训练,由于这三棵树的训练样本不一样,因此它们最后得到的决 策结果有可能不同。最后,我们再把这三棵树得到的结果做一个综合,就能得到最终的决策结果了。

优缺点:随机性很强,不容易产生过拟合的情况,但正因为样本是随机 的,所以模型对于样本数据的异常值也不太敏感。面向大数据量的情况下,随机森林的运行效率更高,但计算成本会更高。模型上限很低

6.支持向量机机(Support Vector Machine,SVM)

当样本数据是线性可分(用 一条直线可以将样本数据分开)的时候,找到距离两类样本间隔最大的一条线,或者说是两类样本数据之间的中轴线。因为有无数条线可以区分两个分类,只有它们之间的中轴线距离所有样本点的距离最远。

如何处理非线性可分:现实情况中,很多数据是线性不可分的,就比如橙色和蓝色的球均匀地 混合在了一起。

SVM 的解决办法就是将二维平面映射到三维空间,我们可以想象成是把二维平面中的直线 通过在三维空间上的投影构造出一个平面。这个平面把原有的空间分割成为了两部分,让 两种颜色的小球样本在高维空间中线性可分。当然,我们也可以在平面的基础上延伸,比 如映射到一个超过三维的空间,这就构造出了一个超平面。这种数学思路是 SVM 算法最优 秀的地方,也是 SVM 和其他线性算法最大的区别

总之,线性分类算法都可以叫线性分类器,它在二维空间中是直线,在三维空间是平面, 在三维以上的空间维度是超平面。

优缺点:SVM 可以解决线性问题,又可以解决非线性问题,同 时,它可以求出一个全局最优解。但是,SVM 训练资源开销比较大,所以适合应用在小样本量的数据分类中,而且它只能通过多个二分类的组合,来间接解决多分类问题。

应用场景:在深度学习模型还没有火起来之前,SVM 算法可以说是分类算法的天花板了,尤其在文本 分类场景下效果表现非常好,比如情感分析、短文本分类等等。

7.K-means 聚类算法

前面的都是有监督算法,聚类算法是无监督学习算法中最常用的一种。

原理:

基于距离的聚类算法,采用距离作为相似性的评价指标,待测样本点距离聚类中心的距离越近,它的相似度就越大。当几个样本非常相似的时候,我们就把它们归为一类,再用这几个样本的 中心位置表示这个类别,以方便其他相似样本的加入。

我们来举个具体点的例子。假设现在要给 9 个样本进行聚类,它们有两个特征维度,分布在一个二维平面上,如下 图所示。

第一步,我们先随机在这个空间中选取三个点,也就是质心。

第二步,我们用欧式距离计算所有点到这三个点的距离,每个点都选择距离最近的质心作 为的中心点。这样一来,我们就可以把数据分成三个组。

第三步,在划分好的每一个组内,我们计算每一个数据到质心的距离,取均值,用这个均 值作为下一轮迭代的中心点。

最后,我们不断重复第二步和第三步进行迭代,直到所有的点已经无法再更新到其他分 类,也就是聚类中心不会再改变的时候,算法结束。

我们怎么知道数 据需要分成几个类别,也就是怎么确定 K 值呢?

K 值的确定,一般来说要取决于个人的经验和感觉,没有一个统一的标准。所以,要确定 K 值是一项比较费时费力的事情,最差的办法是去循环尝试每一个 K 值。然后,在不同的 K 值情况下,通过每一个待测样本点到质心的距离之和,来计算平均距离。

应用场景:常见的有文本聚类、售前辅助、风险监测等等。

文本聚类:根据文档内容或主题对文档进行聚类。有些 APP 或小程序做的事儿,就是从网 络中爬取文章,然后通过 K-means 算法对文本进行聚类,结构化后最终展示给自己的用 户。

售前辅助:根据用户的通话、短信和在线留言等信息,结合用户个人资料,帮助公司在售 前对客户做更多的预测。

风险监测:在金融风控场景中,在没有先验知识的情况下,通过无监督方法对用户行为做 异常检测。

优点:简单 易实现,运算效率高,可解释性很强。

缺点:分别是不稳定,容易受到噪声影 响,并且不如有监督学习算法准确。

8.深度学习

神经网络

假如,你现在就职于一家很“民主”的公司,每年年终总结的时候,公司会让每一名员工 写下自己对公司的意见,并且收集起来。为了节约行政成本,这些意见都会由当前层级的 领导整合后,提交给他的上一级领导。如下图:

我们可以把每个“员工”的意见,想象 成机器学习中的“特征”,把每一层“领导”对收集上来的意见的整合,想象成当前层级 的“输出”,最后把“总经理”收到的结果想象成模型的“最终输出”。这样一来,就形 成了一个多层级的机器学习模型,也就是我们说的神经网络。

神经网络用三层结构来表示,分别为输入层、隐藏层,以及输 出层。其中,隐藏层对我们来说是黑盒,隐藏层中的每上一个隐藏层的输出都是下一个隐 藏层的输入,每一层都是在表达一种中间特征,目的是将特征做非线性高阶变换。

在这个神经网络的结构中,不同层级之间的联系是非常紧密的,因为每个连接层之间的节 点(领导),都会和上下两个层级中的所有节点(领导)进行沟通。我们也把这种结构叫 做全连接神经网络模型。

神经网络模型的组成

上图这样由“圆圈”和“连接线”组成的图就是神经网络结构图,我们可以通过一个数学 公式来表达:A(n+1) = δ n (WnAn + b n )。

首先,图中的一个个“圆圈”就是 Neuron(神经元),表示当前层级下计算节点的输 出,也就是 ,我们可以把它想象成某个层级的领导对收集上来的意见整合后的结 果。 而“连接线”就是 Weights(网络权重),表示不同层级之间的连接,用 表示。我 们可以把它想象成不同员工意见的权重,比如核心员工的意见份量就重一些,绩效差的员 工份量就轻一些。 同时,因为每个人所在公司位置不同,所以对于意见的反馈结果也会不同。比如,有 些“部门经理”在收到员工的意见后,决定直接放大负面反馈的意见,而有些“部门经 理”则决定谨慎处理,减少负面意见反馈的声音。在机器学习中,我们会把这些带有主观 偏见的处理,叫做神经网络模型中的 bias 偏移,用 表示。

因此,神经网络模型还设计了一个对下层意见解读和调整的操作。一般来说,我们会采用 增加激活函数对每一层整体的输出做改进,把每层的结果做非线性的变化,去更好地拟合 数据分布,或者说来更好地展示给上层的“领导”。常见的激活函数有 Relu ,tanh,sigmoid 等等,我们用 δ^n ()表示。

深度学习模型训练目标

神经网络的目标就是在给定一个任务 的情况下,找到最优的 Weights 和 bias,使得 Loss 最低。

由于最开始的参数都是随机设置的,因此获得的结果肯定与真实的结果差距比较大。那 么,为了训练神经网络中的参数,神经网络模型会采用反向传播,把 Loss 误差从最后逐层 向前传递,使当前层知道自己在哪里,然后再更新当前层的 Weights 权重和 bias 偏移, 进而减小最后的误差。

在目前的机器学习领域中,深度学习可以说是性能最好的网络模型了。但同时,它也具有可解释 弱,模型训练慢,对大数据有依赖,模型复杂度高的缺点,这让它的应用场景受到了局限。

应用场景:计算机视觉、人脸识别、语音识别、机器翻译、自然语言处理、推荐系统等等。

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值