常用的机器学习算法小结

=Start=

缘由:

简单整理一下,方便以后参考。

正文:

参考解答:

一般数据处理的流程如下:

数据处理的一般流程

另外就是我自己从其它地方看到的一个大致的路线(不一定正确):
AI人工智能 -> ML机器学习 -> DL深度学习 -> NLP自然语言处理

ML机器学习
有监督学习

分类

    • kNN
    • 决策树
    • 朴素贝叶斯
    • SVM
    • logistic回归
    • AdaBoost

回归

    • 线性回归
    • 树回归
无监督学习

聚类

    • kMeans
    • EM
    • DBSCAN
    • Apriori
    • FP-growth

密度估计

常用的降维方法

PCA

LDA

DL深度学习
  • CNN-卷积神经网络
  • RNN-递归神经网络
  • LSTM-长期短期记忆网络

==

kNN算法
核心:将样本分到离它距离最近的样本所属的类。

决策树
核心:一组嵌套的判定规则。

贝叶斯分类器
核心:将样本判定为后验概率最大的类。

SVM-支持向量机
核心:最大化分类间隔的线性分类器(不考虑核函数)。

Logistic回归
核心:直接从样本估计出它属于正负样本的概率。

AdaBoost算法
核心:用多个分类器的线性组合来预测,训练时重点关注错分的样本,准确率高的弱分类器权重大。


人工神经网络
核心:一个多层的复合函数。

CNN卷积神经网络
核心:一个共享权重的多层复合函数。
卷积神经网络在本质上也是一个多层复合函数,但和普通神经网络不同的是它的某些权重参数是共享的,另外一个特点是它使用了池化层。训练时依然采用了反向传播算法,求解的问题不是凸优化问题。和全连接神经网络一样,卷积神经网络是一个判别模型,它既可以用于分类问题,也可以用用于回归问题,并且支持多分类问题。

RNN循环神经网络
核心:综合了复合函数和递推数列的一个函数。和普通神经网络最大的不同在于,循环神经网络是一个递推的数列,因此具有了记忆功能。

kMeans算法
核心:把样本分配到离它最近的类中心所属的类,类中心由属于这个类的所有样本确定。


PCA
核心:向重构误差最小(方差最大)的方向做线性投影。

LDA
核心:向最大化类间差异、最小化类内差异的方向线性投影。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4543.html

《常用的机器学习算法小结》上有12条评论

  1. 关于学习机器学习算法的一些建议(忠告)
    https://zhuanlan.zhihu.com/p/69104881

    * 不要将大把时间浪费在一次性搞懂理论理解上
    * 不要尝试停下来理解所有的知识点
    * 不要浪费时间:请学习快速学习知识点,一天学4-5个
    * 请跑代码,“真的”去跑代码。不要去深入学习理论。去玩转代码,看看它们“吃进什么吐出什么”
    * 选择一个项目,认真做好,做到超棒!
    * **如果卡壳了,不要停下来深挖,继续前行!



    如果你不确定哪个学习效果更好,每个都试试看。

    多数公司浪费大量时间在收集更多数据上。正确做法是,用一小撮数据跑跑看,然后在看问题是否是数据不够。

    如果你认为自己“天生不擅长数学”, 请看看Rachel的TED演讲: There’s no such thing as “not a math person” 8. My own input: only 6 minutes, everyone should watch it!

    可能最重要的是和小伙伴们一起学,这样效果往往更好。组建一个读书会,学习小组,定期聚会,动手做些项目。不需要是什么特别棒的东西,只要是能让世界更美好一点,甚至是让你的2岁大孩子开心的事情。完成一件事情,然后在进一步完善它。

    学习深度学习, 最重要的就是代码,不停写代码,看看你的输入值,输出值,尝试输出一个你的mini-batch。

  2. 面试官如何判断面试者的机器学习水平?
    https://www.zhihu.com/question/62482926

    自己拿过Hulu,阿里,腾讯,美团的算法工程师offer,也作为面试官面试过100+候选人,简单谈一下机器学习工程师的面试,说白了就一句话,
    把你做过的机器学习项目的细节讲清楚,有自己的理解,对经典的以及前沿的机器学习知识有所了解。

    机器学习面试要考察三方面的内容,1、理论基础,2、工程能力,3、业务理解。之前有的答主罗列了几乎所有知识点,面试者能够逐一准备当然是好的,但我不相信有任何人能够对所有问题有深入的理解。也正因为这一点,面试官一般不会大面积的深入考察所有知识点,面试时间也不允许,但资深一点的面试官只要从简历出发问你一个项目,这三方面的能力也就都考察到了。毕竟魔鬼躲在细节里嘛。

    我记得我的一位面试同学介绍自己实习时候用过XGBoost预测股票涨跌,那面试官会由浅入深依次考察:
    * GBDT的原理 (理论基础)
    * 决策树节点分裂时如何选择特征,写出Gini index和Information Gain的公式并举例说明(理论基础)
    * 分类树和回归树的区别是什么?(理论基础)
    * 与Random Forest作比较,并以此介绍什么是模型的Bias和Variance(理论基础)
    * XGBoost的参数调优有哪些经验(工程能力)
    * XGBoost的正则化是如何实现的(工程能力)
    * XGBoost的并行化部分是如何实现的(工程能力)
    * 为什么预测股票涨跌一般都会出现严重的过拟合现象(业务理解)
    * 如果选用一种其他的模型替代XGBoost,你会选用什么?(业务理解和知识面)

    除了上面的问题,我会再检查一下面试者对NN,RNN,个别聚类算法,模型评估等知识的理解程度以及对GAN,LSTM,online learning是否有基本理解,这是考察面试者对经典以及前沿的机器学习知识的了解程度。再稍微检查一下面试者对工具的了解程度,写一段简单的spark或者map reduce的程序,如果无误的话,那么可以说这位面试者的机器学习部分是完全合格的。

    当然,如果你介绍的项目是用CNN实现的,这条考察线路当然是不一样的,大概会是
    LR推导->梯度消失->激活函数->TensorFlow调参经验这条路,大家体会意思就好。除此之外,还有其他工程方向的面试官会着重考察coding和一些算法题目,那是另外一个话题了。

    根据我去年的面试经验,即使清华北大的同学也往往无法回答完整这些提问。一项答不出来的话无伤大雅,但两项答不出来我基本会给fail或maybe。

    所以真的希望大家严肃对待写在简历上的东西,面试官会刨根问题的问到骨子里。但就我个人而言我不会深究面试者简历之外的东西,比如故意问一问GAN的细节让你一定要答出来,我认为这样毫无意义,有故意刁难之嫌。

  3. 这是一篇关于如何成为一名AI算法工程师的长文
    https://mp.weixin.qq.com/s/kreVG3PA1wO2xXwX5MCF5A

    # BAT常见的面试题(不分先后)
    自我介绍/项目介绍
    类别不均衡如何处理
    数据标准化有哪些方法/正则化如何实现/onehot原理
    为什么XGB比GBDT好
    数据清洗的方法有哪些/数据清洗步骤
    缺失值填充方式有哪些
    变量筛选有哪些方法
    信息增益的计算公式
    样本量很少情况下如何建模
    交叉检验的实现
    决策树如何剪枝
    WOE/IV值计算公式
    分箱有哪些方法/分箱原理是什么
    手推SVM:目标函数,计算逻辑,公式都写出来,平面与非平面
    核函数有哪些
    XGB原理介绍/参数介绍/决策树原理介绍/决策树的优点
    Linux/C/Java熟悉程度
    过拟合如何解决
    平时通过什么渠道学习机器学习(好问题值得好好准备)
    决策树先剪枝还是后剪枝好
    损失函数有哪些
    偏向做数据挖掘还是算法研究(好问题)
    bagging与boosting的区别
    模型评估指标有哪些
    解释模型复杂度/模型复杂度与什么有关
    说出一个聚类算法
    ROC计算逻辑
    如何判断一个模型中的变量太多
    决策树与其他模型的损失函数、复杂度的比较
    决策树能否有非数值型变量
    决策树与神经网络的区别与优缺点对比
    数据结构有哪些
    model ensembling的方法有哪些

    # 小结
    问题是散的,知识是有关联的,学习的时候要从大框架学到小细节。

    没事多逛逛招聘网站看看招聘需求,了解市场的需求到底是什么样的。时代变化很快,捕捉信息的能力要锻炼出来。你可以关注的点有:职业名/职业方向/需要会什么编程语言/需要会什么算法/薪资/...

    每个面试的结尾,面试官会问你有没有什么想问的,请注意这个问题也很关键。
    比如:这个小组目前在做什么项目/实现项目主要用什么语言和算法/…
    尽量不要问加不加班,有没有加班费之类的,别问我为什么这么说(摊手)

    # 一碗鸡汤
    一切才刚刚开始,别着急
    找一件可以坚持的事,不要停止去寻找的脚步

  4. 学机器学习有必要懂数学吗?深入浅出机器学习与数学的关系
    https://mp.weixin.qq.com/s/8zPh0tVVvnEbSDzNsxDcTw

    随着AI资源越来越丰富,网上po出了越来越多的机器学习路线,机器学习攻略,这些路线攻略五花八门,却都有一个共同点,最基础的是数学和编程语言。编程语言作为基础,很好理解,机器学习是靠程序来完成的嘛,当然要学会编程语言啦~但是,为什么要学数学呢?还不是一门数学,最起码的也要包括微积分、线性代数、概率论、统计学,更不用说什么凸优化、数值计算、运筹学等等,在高中时期被数学折磨的阴影还留存着,不禁想要大声问一句:在机器学习中,这些数学都是做什么的啊?为什么一定要学这些数学呢?

    首先我们要知道,机器学习理论是一个涵盖统计、概率、计算机科学和算法方面的领域,该理论的初衷是以迭代方式从数据中学习,找到可用于构建智能应用程序的隐藏洞察。尽管机器学习和深度学习有巨大的发展潜力,但要深入掌握算法的内部工作原理并获得良好的结果,就必须透彻地了解许多技术的数学原理。搞清楚这些数学原理,可以帮助我们:选择正确的算法、选择参数设置和验证策略、通过理解偏差-方差权衡,识别欠拟合和过拟合、估算正确的置信区间和不确定性。

    线性代数
    微积分
    概率论
    统计学

    统计学是核心,微积分告诉我们怎样学习和优化模型,线性代数使得算法能在超大型数据集上运行,概率论帮我们预测某个事件发生的可能性。

  5. 一文了解人工智能——学科介绍、发展史、三大学派
    https://mp.weixin.qq.com/s?__biz=MjM5MzA1Mzc3Nw==&mid=2247485106&idx=1&sn=eb2aa7dd252565ee10bd5f254a205146

    在介绍人工智能之前,我们要先了解智能到底是什么?智能,其实就是智力和能力的总称。世界著名教育心理学家霍华德·加德纳提出了著名的“多元智能理论”,他认为人类个体都独立存在着八种智能,分别如下:

    -> 视觉—空间智能,指对线条、形状、结构、色彩和空间关系的敏感以及通过平面图形和立体造型将它们表现出来的能力。
    -> 语言—言语智能,指听说读写能力,利用语言描述事件、表达思想并与人交流的能力。
    -> 交往—交流智能 ,指与人相处交往的能力,表现为察觉、体验他人情绪、情感和意图并据此作出适宜反应的能力。
    -> 自知—自省智能,指认识、洞察和反省自身的能力,表现为正确地意识和评价自身的情绪、动机、欲望、个性、意志,并在正确的自我意识我自我评价的基础上形成自尊、自律和自制的能力。
    -> 逻辑—数理智能 ,指运算和推理能力,表现为对事物间各种关系如类比、对比、因果和逻辑等关系的敏感以及通过数理运算和逻辑推理等进行思维的能力。
    -> 音乐—节奏智能,指感受、辨别、记忆、改变和表达音乐的能力,表现为个人对音乐包括节奏、音调、音色和旋律的敏感以及通过作曲、演奏和歌唱等表达音乐的能力。
    -> 身体—动觉智能,指运用四肢和躯干的能力,表现为能够较好地控制自己的身体、对事件能够做出恰当的身体反应以及善于利用身体语言来表达自己的思想和情感的能力。
    -> 自然观察智能,指个体辨别环境的特征并加以分类和利用的能力。

    何为智能?
    何为人工智能?
    弱人工智能?
    人工智能发展史
    三大学派
    -> 符号主义学派
    -> 连接主义学派
    -> 行为主义学派

    这篇文章从整体介绍了什么是人工智能、人工智能的发展以及人工智能的三大学派,从整体上了解了人工智能这门学科的情况,并且知道了目前的人工智能并非是科幻片里面的人工智能,现实与理想之间的差距还是很大的。

  6. 机器学习一般常用的算法有哪些?哪个平台学习机器算法比较好呢?
    https://www.zhihu.com/question/54121522/answer/689000680

    摘要: 本文为机器学习新手介绍了十种必备算法:线性回归、逻辑回归、线性判别分析、分类和回归树、朴素贝叶斯、K-近邻算法、学习向量量化、支持向量机、Bagging和随机森林、Boosting和AdaBoost。

    在机器学习中有一种“无免费午餐(NFL)”的定理。简而言之,它指出没有任何一个算法可以适用于每个问题,尤其是与监督学习相关的。

    因此,你应该尝试多种不同的算法来解决问题,同时还要使用“测试集”对不同算法进行评估,并选出最优者。

    然而,这些都有一个共同的原则,那就是所有监督机器学习算法都是预测建模的基础。

    机器学习算法包括目标函数(f),输入映射变量(X),生成输出变量(y):Y=f(X)。这是一个通用的学习任务,希望在给出新案例的输入变量(X)能预测出(Y)。

    最常见的机器学习方式是Y= f(X)的映射来预测新的X,这被称为预测建模或预测分析。

  7. 机器学习新手必学十大算法指南
    https://yq.aliyun.com/articles/406011
    https://pan.baidu.com/s/1pNtAbvd

    A TOUR OF THE TOP 10 ALGORITHMS FOR MACHINE LEARNING NEWBIES
    https://builtin.com/data-science/tour-top-10-algorithms-machine-learning-newbies

    1 — Linear Regression.
    2 — Logistic Regression.
    3 — Linear Discriminant Analysis.
    4 — Classification and Regression Trees.
    5 — Naive Bayes.
    6 — K-Nearest Neighbors.
    7 — Learning Vector Quantization.
    8 — Support Vector Machines.
    9 — Bagging AND Random Forest
    10 — Boosting AND AdaBoost

    https://www.datacamp.com/community/news/a-tour-of-the-top-10-algorithms-for-machine-learning-newbies-dbf6geuypk6

  8. 自然语言处理能做什么
    https://mp.weixin.qq.com/s?__biz=MzU2NDg4ODcwOA==&mid=2247483816&idx=1&sn=20f46760486b1cd75c9e6157d913e865

    推荐一个网站:
    https://nlpprogress.com/
    https://github.com/sebastianruder/NLP-progress
    该网站收录了几乎所有的 NLP 研究分支,并且跟踪 NLP 在这些任务上的进展(SOTA,state-of-the-art)。网站更新比较及时,至少,当前我们能在部分榜单上看到 XLNET。(北京时间:20190724)

  9. 机器学习中非常有名的理论或定理你知道几个?
    https://mp.weixin.qq.com/s/e0VIymlr9_7d_d9vgwc5Bg

    # PAC学习理论
    当使用机器学习算法来解决某个问题时,通常靠经验或者多次实验来得到合适的模型,训练样本数量和相关的参数。但是经验判断成本较高,且不太可靠,因此希望有一套理论能够分析问题,计算模型能力,为算法提供理论保证。这就是计算学习理论(Computational Learning Theory),其中最基础的就是近似正确学习理论(Probably Approximately Correct, PAC)。

    # 没有免费午餐定理
    没有免费午餐定理(No Free Lunch Theorem,NFL)是由Wolpert和Macerday在最优化理论中提出的,NFL证明:对于基于迭代的最优化算法不会存在某种算法对所有问题(有限的搜索空间内)都有效。如果一个算法对某些问题有效,那么他一定在另一些问题上比纯随机搜索算法更差。也就是说,不能脱离具体问题来讨论算法的优劣,任何算法都有优劣性,必须要“具体问题具体分析”。

    # 丑小鸭定理
    丑小鸭定理(Ugly Duckling Theorem)是1969年由渡边慧提出的[Watan-able, 1969]。“丑小鸭与白天鹅之间的区别和两只白天鹅之间的区别一样大”。这个定理初看好像不符合常识,但是仔细思考后是非常有道理的。因为世界上不存在相似性的客观标准,一切相似性的标准都是主观的。如果以体型大小的角度来看,丑小鸭和白天鹅的区别大于两只白天鹅的区别;但是如果以基因的角度来看,丑小鸭与它父母的差别要小于他父母和其他白天鹅之间的差别。

    # 奥卡姆剃刀
    奥卡姆剃刀(Occam's Razor)是由14世界逻辑学家William of Occam提出的一个解决问题的法则:“如无必要,勿增实体”。
    奥卡姆剃刀的思想和机器学习上正则化思想十分相似:简单的模型泛化能力更好。如果有两个性能相近的模型,我们更倾向于选择简单的模型。因此在机器学习准则上,我们经常会引入参数正则化(比如L2正则)来限制模型能力,避免过拟合。

    # 归纳偏置
    在机器学习中,很多算法会对学习的问题做一些假设,这些假设就称为归纳偏置(Inductive Bias)。比如在最近邻分类器中,我们会假设在特征空间内,一个小的局部区域中的大部分样本都属于同一类。在朴素贝叶斯分类器中,我们会假设每个特征的条件概率是相互独立的。
    归纳偏置在贝叶斯学习中也成为先验(priors)。

    # 中心极限定理
    中心极限定理是研究独立随机变量和的极限分布为正态分布的命题。经过科学家长期的观察和总结,发现服从正态分布的随机现象往往是由独立(或弱相依)的随机变量产生的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注