前言这是知乎的最后一题:k-近邻、贝叶斯、决策树、svm、逻辑回归与最大熵模型、隐马尔可夫、条件随机性一般工作中使用的机场、adaboost和em?一般用途是什么?应该注意什么?这个问题有13,000个关注者和50个答案。我知道距离解封还有几个小时。写在公众号上,之前只写了两道题,很多思路都是一样的。今天,作为一个缝合怪物,这个系列就完成了。引入时间来到了2021年,神经网络从来没有被任何人考虑过,现在已经开始占据主导地位。在各个领域和场景中,神经网络都变得不可或缺。我们把这些算法分门别类,大致可以分为有监督的和无监督的。大多数答案也集中在监督选择上。Unsupervised在实际工作应用中确实有使用,因为各种问题都不如supervised。让我们抛开它们复杂的外衣,剥开茧,找出它们在应用中的关键差异。没有最好的算法,只有最适合的场景。我会坚持最经典的话题。主题:请使用逻辑回归模型对人体分类器建模。身体分为两种类型:肥胖和瘦弱。输入特征是身高和体重。数据集是这样的:我们从逻辑回归开始,通篇引入一个非常关键的概念,非线性。LR逻辑回归的解决方案是我取两个加权系数并使用sigmoid(ax+by+c)来完成它。LR建模的过程就是学习abc这三个参数的过程。LR在早期工业世界中发挥了举足轻重的作用。你可能听过丰巢用亿万特征解决个性化广告的传说。那大概是LR人生的高光时刻吧。他就是做了上亿个这样的参数,然后计算一个加权和,通过sigmoid转换成概率。看起来这个模型有多少人力就有多少智能,非常接近人工智能的本质。只要能搞清楚特征,算出权重,问题就迎刃而解了?其实我们很难简单的从身高体重来判断一个人的身材。你说姚明280斤。他真的很胖吗?别忘了他有226厘米高。这组数据可能超出了你的认知,光看数据不看照片,很难判断他是胖还是瘦。(其实挺胖的哈哈)嗯,看到那组数据,一下子说出来也不好。是机器学习中一个非常关键的概念,“非线性”。这个问题不太好“线性”解决。线性解决方案意味着我取两个系数并将它们加权在原始特征x和y上,并使用sigmoid(ax+by+c)来完成它。解决方案有两种:1.升级模型,在内核中加入线性逻辑回归,增加非线性能力。我们使用这个模型sigmoid(ax+by+kx*y^(-2)+c)。该模型通过多项式核方法的升级,解决了低维空间线性模型不易求解的问题。2.特征工程,取出体检报告上的BMI指数,BMI=体重/(身高^2)。这样,通过BMI指数,就可以很清楚地帮助我们描述一个人是怎样的。甚至,您可以丢弃原始的体重和身高数据。类似的问题还有朴素贝叶斯和SVM。贝叶斯接触朴素贝叶斯估计的人都是从文本分类任务开始的。教科书中经常提到的垃圾邮件分类示例。作为一种经典的统计机器学习方法,朴素贝叶斯是基于贝叶斯原理应用的最直观、最简单、速度最快的算法。还是用我上面提到的例子,朴素贝叶斯是怎么解决这个问题的?我只需要计算这样一个贝叶斯公式p(category|feature)=p(feature|category)*p(category)/p(feature)特征就是身高和体重,类别就是身材。最后三项,对应身高、体重、体型的统计概率,可以在数据集中进行计算。贝叶斯模型训练的过程就是计算这些各种形式的概率表达式的过程。这样,我就把预测变成了一个查表乘法的过程。查表是计算机中最快的操作,这意味着它也是推断速度最快的模型。朴素贝叶斯假设每个特征之间是条件独立的,即p(height,weight|body)=p(height|body)*p(weight|body)也是由于他的过度简化,这使得它几乎只能在特定的场景下使用应用,比如特别简单的文本分类,比较适合朴素贝叶斯。SVM支持向量机也是一种线性模型。SVM应该是学术界非常喜欢的一个模型。它具有分类器的最佳愿望。它在特征空间中绘制一个平面,划分样本点。从可视化的角度来看,这个模型可以说是充满了可解释性。事情往往适得其反,很多都不是线性可分的,你不能简单地画一个超平面。你需要画一个非常之字形的东西来把它们分开。回到刚才身体分类器的例子,如果你没有BMI指标,和你有BMI指标,SVM的超平面是完全不同的。如果有BMI指标,我可以在一维坐标轴上画点来解决。如果没有BMI指标。只能像LR一样通过核法解决。在第一种方法中,我们使用核方法来增加这些模型的维度,在第二种方法中,我们使用特征方法。要知道,天下没有免费的午餐。当你使用核方法增加维度时,实际上很难细化一个恰好为x*y^(-2)的多项式表达式。你必须把x*y,x^项2*y,x*y^2扔进去。决策树这么暴力的操作有两个问题,一个是共线性,一个是噪声。首先,共线性是指几个item表达的意思是收敛的,保持着很强的线性关系,这是逻辑回归的致命问题,因为它给权重带来了不稳定性。您必须知道逻辑回归的权重可以暗示特征重要性。它还破坏了朴素贝叶斯的基本假设。这些都有副作用。(如果这段话看不懂,仔细研究逻辑回归模型和共线性的理论,这里就不单独展开了)第二,噪声让你的分类器学到了一些不好的东西,不利于你的决策没有产生泛化贡献,反而偏离了你的模型,学到了一些不是知识的角落。而有一些模型,自然可以解决这些问题。典型的是决策树和神经网络。决策树的优点1.天然的鲁棒性,可以自动从异常点和缺失值中学习信息。不需要规范化。直接从螺柱开始。2、树可以半自动完成一些特征的非线性表达工作,基于贪心分割+采样等防过拟合的方法,可以更好的挖掘数据的非线性。3.树的可解释性非常好,可以产生特征重要性,帮助你理解数据,提高特征工程。一个经典的套路是思考topN个特征背后的逻辑,并围绕它们进行特征工程。神经网络NN模型也有一些天然的优势:1.全自动特征工程和峰值非线性表达能力。在具有统一数据表示范式和统一语义意义的稠密数据(典型的文本图像)上,NN可以发挥十。此外,人们很难为典型的ID序列制作花朵。也就是Bagofwords或者借用embedding来表达,一半是NN的功劳。2、NN模型容量极大,在数据量上放大了1的优势。不过树模型的优点好像其他模型也有。它们和SVM、LR模型有什么区别?1.首先,这些模型获取非线性的方式过于粗糙,有种大炮打蚊子的感觉。依靠内核强行增加VC维度,带来的噪音很大,有用的信息很少。其次,内核是先验的,很容易被人设定的参数所偏离。这在实际业务数据中是非常致命的。2.理论上LR+完美特征工程可以很强,但是太难了,而且不是每个人都是特征工程高手。早期丰巢的亿级特征LR效果特别好,逐渐成为传奇。这是给你的整张表优点缺点LR等速度极快,通常具有很高的可解释性。非线性,依赖内核,人工特征工程。决策树1.鲁棒性、异常值、缺失值都是可以学习的信息2.中等的非线性能力,在一定范围内是优势3.很好的可解释性,可以帮助你优化特征工程1.非线性有限的表现力使得它很难在文本图像上发挥作用。2、数据量带来的边际收益不大,容易触及天花板。NN1.全自动化特征工程2.模型容量大,可以利用数据量1.异常值敏感,依赖人工处理2.无法解释,改进迭代措施和结果的路径太远.3.过度拟合和噪声隐含在过度的非线性中。为了横向比较,我改进了我之前使用的图片。这个图表示y轴是人类认知可解程度,对应特征工程的难度和可行性。x轴是数据的非线性。常被调侃的人工智能,意思是有多少人工智能就有多少智能,也就是人工特征工程给线性模型发挥的空间。随着数据非线性的增加和特征工程难度的增加,LR线性模型的使用越来越小。相反,决策树和神经网络等非线性模型开始大显身手。回到问题,这些模型使用的频率可能与各自图表中的面积几乎相同。神经网络已经占据了行业的半边天,而决策树则占据了剩下的大部分。还有少数场景,因为特殊性,还是用LR等模型。
