精华内容
下载资源
问答
  • 文中提出一种基于机器学习算法的水文趋势预测方法,该方法旨在利用 XGBOOST机器学习算法建立参照期与水文预见期之间各水文特征的相似度映射模型,从而在历史水文时间序列中匹配出与预见期水文趋势最相似的序列,从而...
  • 机器学习发展历史回顾

    万次阅读 多人点赞 2018-09-05 18:21:20
    其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》...最早的机器学习算法可以追溯到20世纪初,到今天为止,已经过去了100多年。从1980年机器学习称为一个独立的方向开始算起,到现在...

    其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。

    机器学习是现阶段解决很多人工智能问题的主流方法,作为一个独立的方向,正处于高速发展之中。最早的机器学习算法可以追溯到20世纪初,到今天为止,已经过去了100多年。从1980年机器学习称为一个独立的方向开始算起,到现在也已经过去了近40年。在这100多年中,经过一代又一代人的努力,诞生出了大量经典的方法,在本文中,SIGAI将分有监督学习,无监督学习,概率图模型,深度学习,强化学习4个大方向对历史上出现的经典算法进行整理与总结,帮助大家理清机器学习这100多年来的发展历史,完成对机器学习的寻根问祖之旅。限于篇幅,我们无法对所有算法一一列举,只介绍有代表性的一部分。

     

    算法的分类

    总体上,机器学习算法可以分为有监督学习,无监督学习,强化学习3种类型。半监督学习可以认为是有监督学习与无监督学习的结合,不在本文讨论的范围之类。

    有监督学习通过训练样本学习得到一个模型,然后用这个模型进行推理。例如,我们如果要识别各种水果的图像,则需要用人工标注(即标好了每张图像所属的类别,如苹果,梨,香蕉)的样本进行训练,得到一个模型,接下来,就可以用这个模型对未知类型的水果进行判断,这称为预测。如果只是预测一个类别值,则称为分类问题;如果要预测出一个实数,则称为回归问题,如根据一个人的学历、工作年限、所在城市、行业等特征来预测这个人的收入。

    无监督学习则没有训练过程,给定一些样本数据,让机器学习算法直接对这些数据进行分析,得到数据的某些知识。其典型代表是聚类,例如,我们抓取了1万个网页,要完成对这些网页的归类,在这里,我们并没有事先定义好的类别,也没有已经训练好的分类模型。聚类算法要自己完成对这1万个网页的归类,保证同一类网页是同一个主题的,不同类型的网页是不一样的。无监督学习的另外一类典型算法是数据降维,它将一个高维向量变换到低维空间中,并且要保持数据的一些内在信息和结构。

    强化学习是一类特殊的机器学习算法,算法要根据当前的环境状态确定一个动作来执行,然后进入下一个状态,如此反复,目标是让得到的收益最大化。如围棋游戏就是典型的强化学习问题,在每个时刻,要根据当前的棋局决定在什么地方落棋,然后进行下一个状态,反复的放置棋子,直到赢得或者输掉比赛。这里的目标是尽可能的赢得比赛,以获得最大化的奖励。

    总结来说,这些机器学习算法要完成的任务是:

    分类算法-是什么?即根据一个样本预测出它所属的类别。

    回归算法-是多少?即根据一个样本预测出一个数量值。

    聚类算法-怎么分?保证同一个类的样本相似,不同类的样本之间尽量不同。

    强化学习-怎么做?即根据当前的状态决定执行什么动作,最后得到最大的回报。

     

    有监督学习

    我们首先来看有监督学习,这是机器学习算法中最庞大的一个家族。下图列出了经典的有监督学习算法(深度学习不在此列):

     

    线性判别分析(LDA)[1]是Fisher发明的,其历史可以追溯到1936年,那时候还没有机器学习的概念。这是一种有监督的数据降维算法,它通过线性变换将向量投影到低维空间中,保证投影后同一种类型的样本差异很小,不同类的样本尽量不同。

    贝叶斯分类器起步于1950年代,基于贝叶斯决策理论,它把样本分到后验概率最大的那个类。

    logistic回归[2]的历史同样悠久,可以追溯到1958年。它直接预测出一个样本属于正样本的概率,在广告点击率预估、疾病诊断等问题上得到了应用。

    感知器模型[3]是一种线性分类器,可看作是人工神经网络的前身,诞生于1958年,但它过于简单,甚至不能解决异或问题,因此不具有实用价值,更多的起到了思想启蒙的作用,为后面的算法奠定了思想上的基础。

    kNN算法[7]诞生于1967年,这是一种基于模板匹配思想的算法,虽然简单,但很有效,至今仍在被使用。

    在1980年之前,这些机器学习算法都是零碎化的,不成体系。但它们对整个机器学习的发展所起的作用不能被忽略。

    从1980年开始,机器学习才真正成为一个独立的方向。在这之后,各种机器学习算法被大量的提出,得到了快速发展。

    决策树的3种典型实现:ID3[4],CART[5],C4.5[6]是1980年代到1990年代初期的重要成果,虽然简单,但可解释性强,这使得决策树至今在一些问题上仍被使用。

    1986年诞生了用于训练多层神经网络的真正意义上的反向传播算法[11],这是现在的深度学习中仍然被使用的训练算法,奠定了神经网络走向完善和应用的基础。

    1989年,LeCun设计出了第一个真正意义上的卷积神经网络[13],用于手写数字的识别,这是现在被广泛使用的深度卷积神经网络的鼻祖。

    在1986到1993年之间,神经网络的理论得到了极大的丰富和完善,但当时的很多因素限制了它的大规模使用。

    1990年代是机器学习百花齐放的年代。在1995年诞生了两种经典的算法-SVM[9]和AdaBoost[12],此后它们纵横江湖数十载,神经网络则黯然失色。SVM代表了核技术的胜利,这是一种思想,通过隐式的将输入向量映射到高维空间中,使得原本非线性的问题能得到很好的处理。而AdaBoost则代表了集成学习算法的胜利,通过将一些简单的弱分类器集成起来使用,居然能够达到惊人的精度。

    现在大红大紫的LSTM[51]在2000年就出现了,这让很多同学会感到惊讶。当在很长一段时间内一直默默无闻,直到2013年后与深度循环神经网络整合,在语音识别上取得成功。

    随机森林[10]出现于2001年,于AdaBoost算法同属集成学习,虽然简单,但在很多问题上效果却出奇的好,因此现在还在被大规模使用。

    2009年距离度量学习的一篇经典之作[8]算是经典机器学习算法中年轻的小兄弟,在后来,这种通过机器学习得到距离函数的想法被广泛的研究,出现了不少的论文。

    从1980年开始到2012年深度学习兴起之前,有监督学习得到了快速的发展,这有些类似于春秋战国时代,各种思想和方法层出不穷,相继登场。另外,没有一种机器学习算法在大量的问题上取得压倒性的优势,这和现在的深度学习时代很不一样。

     

    无监督学习

    相比于有监督学习,无监督学习的发展一直和缓慢,至今仍未取得大的突破。下面我们按照聚类和数据降维两类问题对这些无监督学习算法进行介绍。

     

    聚类

    聚类算法的历史与有监督学习一样悠久。层次聚类算法出现于1963年[26],这是非常符合人的直观思维的算法,现在还在使用。它的一些实现方式,包括SLINK[27],CLINK[28]则诞生于1970年代。

     

    k均值算法[25]可谓所有聚类算法中知名度最高的,其历史可以追溯到1967年,此后出现了大量的改进算法,也有大量成功的应用,是所有聚类算法中变种和改进型最多的。

    大名鼎鼎的EM算法[29]诞生于1977年,它不光被用于聚类问题,还被用于求解机器学习中带有缺数数据的各种极大似然估计问题。

    Mean Shift算法[32]早在1995年就被用于聚类问题,和DBSCAN算法[30],OPTICS算法[31]一样,同属于基于密度的聚类算法。

    谱聚类算法[33]是聚类算法家族中年轻的小伙伴,诞生于2000年左右,它将聚类问题转化为图切割问题,这一思想提出之后,出现了大量的改进算法。

     

    数据降维

    下面来说数据降维算法。经典的PCA算法[14]诞生于1901年,这比第一台真正的计算机的诞生早了40多年。LDA在有监督学习中已经介绍,在这里不再重复。

     

    此后的近100年里,数据降维在机器学习领域没有出现太多重量级的成果。直到1998年,核PCA[15]作为非线性降维算法的出现。这是核技术的又一次登台,与PCA的结合将PCA改造成了非线性的降维算法。

    从2000年开始,机器学习领域刮起了一阵流形学习的旋风,这种非线性方法是当时机器学习中炙手可热的方向,这股浪潮起始于局部线性嵌入LLL[16]。此后,拉普拉斯特征映射,局部保持投影,等距映射等算法相继提出[17-19]。流形学习在数学上非常优美,但遗憾的是没有多少公开报道的成功的应用。

    t-SNE是降维算法中年轻的成员,诞生于2008年,虽然想法很简单,效果却非常好。

     

    概率图模型

    概率图模型是机器学习算法中独特的一个分支,它是图与概率论的完美结合。在这种模型中,每个节点表示随机变量,边则表示概率。因为晦涩难以理解,让很多同学谈虎色变,但如果你悟透了这类方法的本质,其实并不难。

    赫赫有名的隐马尔可夫模型[21]诞生于1960年,在1980年代,它在语音识别中取得了成功,一时名声大噪,后来被广泛用于各种序列数据分析问题,在循环神经网络大规模应用之前,处于主导地位。

     

    马尔可夫随机场诞生于1974年[23],也是一种经典的概率图模型算法。贝叶斯网络[22]是概率推理的强大工具,诞生于1985年,其发明者是概率论图模型中的重量级人物,后来获得了图灵奖。条件随机场[24]是概率图模型中相对年轻的成员,被成功用于中文分词等自然语言处理,还有其他领域的问题,也是序列标注问题的有力建模工具。

     

    深度学习

    虽然真正意义上的人工神经网络诞生于1980年代,反向传播算法也早就被提出,卷积神经网络、LSTM等早就别提出,但遗憾的是神经网络在过去很长一段时间内并没有得到大规模的成功应用,在于SVM等机器学习算法的较量中处于下风。原因主要有:算法本身的问题,如梯度消失问题,导致深层网络难以训练。训练样本数的限制。计算能力的限制。直到2006年,情况才慢慢改观。

    对神经网络改进一直在进行着,在深度学习的早期,自动编码器和受限玻尔兹曼机被广泛的研究,典型的改进和实现就有去噪自动编码器[34],收缩自动编码器[36],变分自动编码器[35],DBN[37],DBM[38]等轮流出场,虽然热闹,但还是没有真正得到成功应用。

     

    后来在语音识别中大显身手的CTC(连接主义时序分类)[39]早在2006年就被提出,然而生不逢时,在后面一直默默无闻。情况真正被改变发生在2012年,Alex网络的成功[41]使得深度神经网络卷土重来。在这之后,卷积神经网络被广泛的应用于机器视觉的各类问题。循环神经网络则被用于语音识别、自然语言处理等序列预测问题。整合了循环神经网络和编码器-解码器框架的seq2seq技术[40],巧妙了解决了大量的实际应用问题。而GAN[42]作为深度生成模型的典型代表,可以生成逼真的图像,得到了不可思议的效果,是现在深度学习中热门的研究方向。

    历史选择了神经网络并非偶然,它有万能逼近定理作为保障,可以拟合闭区间上任意一个连续函数。另外,我们可以人为控制网络的规模,用来拟合非常复杂的函数,这是其他机器学习算法不具备的。深度学习的出现,让图像、语音等感知类问题取得了真正意义上的突破,离实际应用已如此之近。

     

    强化学习

    相比有监督学习和无监督学习,强化学习在机器学习领域的起步更晚。虽然早在1980年代就出现了时序差分算法[42-44],但对于很多实际问题,我们无法用表格的形式列举出所有的状态和动作,因此这些抽象的算法无法大规模实用。

     

    神经网络与强化学习的结合,即深度强化学习46-50],才为强化学习带来了真正的机会。在这里,深度神经网络被用于拟合动作价值函数即Q函数,或者直接拟合策略函数,这使得我们可以处理各种复杂的状态和环境,在围棋、游戏、机器人控制等问题上真正得到应用。神经网络可以直接根据游戏画面,自动驾驶汽车的摄像机传来的图像,当前的围棋棋局,预测出需要执行的动作。其典型的代表是DQN[46]这样的用深度神经网络拟合动作价值函数的算法,以及直接优化策略函数的算法[47-50]。

     

    参考文献

    [1] Fisher, R. A. (1936). The Use of Multiple Measurements in Taxonomic Problems. Annals of Eugenics. 7 (2): 179–188.

    [2] Cox, DR (1958). The regression analysis of binary sequences (with discussion). J Roy Stat Soc B. 20 (2): 215–242.

    [3] Rosenblatt, F. (1958). "The Perceptron: A Probalistic Model For Information Storage And Organization In The Brain". Psychological Review. 65 (6): 386–408.

    [4] Quinlan, J. R. 1986. Induction of Decision Trees. Mach. Learn. 1, 1 (Mar. 1986), 81–106

    [5] Breiman, L., Friedman, J. Olshen, R. and Stone C. Classification and Regression Trees, Wadsworth, 1984.

    [6] Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan Kaufmann Publishers, 1993.

    [7] Thomas M Cover, Peter E Hart. Nearest neighbor pattern classification. IEEE Transactions on Information Theory, 1967.

    [8] Kilian Q Weinberger, Lawrence K Saul. Distance Metric Learning for Large Margin Nearest Neighbor Classification. 2009, Journal of Machine Learning Research.

    [9] Cortes, C. and Vapnik, V. Support vector networks. Machine Learning, 20, 273-297, 1995

    [10] Breiman, Leo. Random Forests. Machine Learning 45 (1), 5-32, 2001.

    [11] David E. Rumelhart, Geoffrey E. Hinton, and Ronald J. Williams. Learning internal representations by back-propagating errors. Nature, 323(99): 533-536, 1986.

    [12] Freund, Y. Boosting a weak learning algorithm by majority. Information and Computation, 1995.

    [13] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, L. D. Jackel, Backpropagation Applied to Handwritten Zip Code Recognition. 1989.

     

    [14] Pearson, K. (1901). On Lines and Planes of Closest Fit to Systems of Points in Space. Philosophical Magazine. 2 (11): 559–572.

    [15] Schölkopf, Bernhard (1998). "Nonlinear Component Analysis as a Kernel Eigenvalue Problem". Neural Computation. 10: 1299–1319.

    [16] Roweis, Sam T and Saul, Lawrence K. Nonlinear dimensionality reduction by locally linear embedding. Science, 290(5500). 2000: 2323-2326.

    [17] Belkin, Mikhail and Niyogi, Partha. Laplacian eigenmaps for dimensionality reduction and data representation. Neural computation. 15(6). 2003:1373-1396.

    [18] He Xiaofei and Niyogi, Partha. Locality preserving projections. NIPS. 2003:234-241.

    [19] Tenenbaum, Joshua B and De Silva, Vin and Langford, John C. A global geometric framework for nonlinear dimensionality reduction. Science, 290(5500). 2000: 2319-2323.

    [20] Laurens Van Der Maaten, Geoffrey E Hinton. Visualizing Data using t-SNE. 2008, Journal of Machine Learning Research.

     

    [21] Stratonovich, R.L. (1960). "Conditional Markov Processes". Theory of Probability and its Applications. 5 (2): 156–178.

    [22] Pearl J (1985). Bayesian Networks: A Model of Self-Activated Memory for Evidential Reasoning (UCLA Technical Report CSD-850017). Proceedings of the 7th Conference of the Cognitive Science Society, University of California, Irvine, CA. pp. 329–334. Retrieved 2009-05-01.

    [23] Moussouris, John (1974). "Gibbs and Markov random systems with constraints". Journal of Statistical Physics. 10 (1): 11–33.

    [24] Lafferty, J., McCallum, A., Pereira, F. (2001). "Conditional random fields: Probabilistic models for segmenting and labeling sequence data". Proc. 18th International Conf. on Machine Learning. Morgan Kaufmann. pp. 282–289.

     

    [25] MacQueen, J. B. (1967). Some Methods for classification and Analysis of Multivariate Observations. Proceedings of 5th Berkeley Symposium on Mathematical Statistics and Probability. 1. University of California Press. pp. 281–297. MR 0214227. Zbl 0214.46201. Retrieved 2009-04-07.

    [26] Ward, Joe H. (1963). "Hierarchical Grouping to Optimize an Objective Function". Journal of the American Statistical Association. 58 (301): 236–244. doi:10.2307/2282967. JSTOR 2282967. MR 0148188.

    [27] R. Sibson (1973). "SLINK: an optimally efficient algorithm for the single-link cluster method" (PDF). The Computer Journal. British Computer Society. 16 (1): 30–34. doi:10.1093/comjnl/16.1.30.

    [28] D. Defays (1977). "An efficient algorithm for a complete-link method". The Computer Journal. British Computer Society. 20 (4): 364–366. doi:10.1093/comjnl/20.4.364.

    [29] Dempster, A.P.; Laird, N.M.; Rubin, D.B. (1977). "Maximum Likelihood from Incomplete Data via the EM Algorithm". Journal of the Royal Statistical Society, Series B. 39 (1): 1–38. JSTOR 2984875. MR 0501537.

    [30] Ester, Martin; Kriegel, Hans-Peter; Sander, Jörg; Xu, Xiaowei (1996). Simoudis, Evangelos; Han, Jiawei; Fayyad, Usama M., eds. A density-based algorithm for discovering clusters in large spatial databases with noise. Proceedings of the Second International Conference on Knowledge Discovery and Data Mining (KDD-96). AAAI Press. pp. 226–231.

    [31] Mihael Ankerst, Markus M. Breunig, Hans-Peter Kriegel, Jörg Sander (1999). OPTICS: Ordering Points To Identify the Clustering Structure. ACM SIGMOD international conference on Management of data. ACM Press. pp. 49–60.

    [32] Yizong Cheng. Mean Shift, Mode Seeking, and Clustering. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1995.

    [33] Jianbo Shi and Jitendra Malik, "Normalized Cuts and Image Segmentation", IEEE Transactions on PAMI, Vol. 22, No. 8, Aug 2000.

     

    [34] Pascal Vincent, Hugo Larochelle, Yoshua Bengio, Pierreantoine Manzagol. Extracting and composing robust features with denoising auto encoders. international conference on machine learning, 2008.

    [35] Diederik P Kingma; Welling, Max (2013). "Auto-Encoding Variational Bayes". arXiv:1312.6114

    [36] Salah Rifai, Pascal Vincent, Xavier Muller, Xavier Glorot, Yoshua Bengio. Contractive Auto-Encoders: Explicit Invariance During Feature Extraction. international conference on machine learning, 2011.

    [37]Ruslan Salakhutdinov, Geoffrey E Hinton. Deep Boltzmann Machines. international conference on artificial intelligence and statistics, 2009.

    [38]Hinton G (2009). "Deep belief networks". Scholarpedia. 4 (5): 5947.

    [39]Alex Graves, Santiago Fernandez, Faustino J Gomez, Jurgen Schmidhuber. Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks.international conference on machine learning. 2006.

    [40]Ilya Sutskever, Oriol Vinyals, Quoc V Le. Sequence to Sequence Learning with Neural Networks. neural information processing systems. 2014.

    [41]Alex Krizhevsky, Ilya Sutskever, Geoffrey E.Hinton. ImageNet Classification with Deep Convolutional Neural Networks. 2012.

    [42]Goodfellow Ian, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets. Advances in Neural Information Processing Systems, 2672-2680, 2014.

     

    [42]Richard Sutton (1988). "Learning to predict by the methods of temporal differences". Machine Learning. 3 (1): 9–44.

    [43]Watkins, C.J.C.H. (1989), Learning from Delayed Rewards (PDF) (Ph.D. thesis), Cambridge University.

    [44]Online Q-Learning using Connectionist Systems" by Rummery & Niranjan (1994)

    [45]van Hasselt, Hado (2011). "Double Q-learning" (PDF). Advances in Neural Information Processing Systems. 23: 2613–2622.

    [46]Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis Antonoglou. Playing Atari with Deep Reinforcement Learning. NIPS 2013.

    [47]Mnih, V., Badia, A. P., Mirza, M., Graves, A., Harley, T., Lillicrap, T. P., Silver, D., and Kavukcuoglu, K. (2016). Asynchronous methods for deep reinforcement learning. In the International Conference on Machine Learning (ICML).

    [48]Williams, R. J. (1992). Simple statistical gradient-following algorithms for connectionist reinforcement learning. Machine Learning, 8(3):229–256.

    [49]Silver, D., Lever, G., Heess, N., Degris, T., Wierstra, D., and Riedmiller, M. (2014). Deterministic

    policy gradient algorithms. In the International Conference on Machine Learning (ICML).

    [50]Lillicrap, T. P., Hunt, J. J., Pritzel, A., Heess, N., Erez, T., Tassa, Y., Silver, D., and Wierstra, D.

    (2016). Continuous control with deep reinforcement learning. In the International Conference on

    Learning Representations (ICLR).

     

    [51]S. Hochreiter, J. Schmidhuber. Long short-term memory. Neural computation, 9(8): 1735-1780, 1997.

    [52] David Silver, et al. Mastering the Game of Go with Deep Neural Networks and Tree Search. Nature, 2016.

     

    推荐阅读

    [1]机器学习-波澜壮阔40年【获取码】SIGAI0413.

    [2]学好机器学习需要哪些数学知识?【获取码】SIGAI0417.

    [3] 人脸识别算法演化史【获取码】SIGAI0420.

    [4]基于深度学习的目标检测算法综述 【获取码】SIGAI0424.

    [5]卷积神经网络为什么能够称霸计算机视觉领域?【获取码】SIGAI0426.

    [6] 用一张图理解SVM的脉络【获取码】SIGAI0428.

    [7] 人脸检测算法综述【获取码】SIGAI0503.

    [8] 理解神经网络的激活函数 【获取码】SIGAI2018.5.5.

    [9] 深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读【获取码】SIGAI0508.

    [10] 理解梯度下降法【获取码】SIGAI0511.

    [11] 循环神经网络综述—语音识别与自然语言处理的利器【获取码】SIGAI0515

    [12] 理解凸优化 【获取码】 SIGAI0518

    [13] 【实验】理解SVM的核函数和参数 【获取码】SIGAI0522

    [14]【SIGAI综述】行人检测算法 【获取码】SIGAI0525

    [15] 机器学习在自动驾驶中的应用—以百度阿波罗平台为例(上)【获取码】SIGAI0529

    [16]理解牛顿法【获取码】SIGAI0531

    [17] 【群话题精华】5月集锦—机器学习和深度学习中一些值得思考的问题【获取码】SIGAI 0601

    [18] 大话Adaboost算法 【获取码】SIGAI0602

    [19] FlowNet到FlowNet2.0:基于卷积神经网络的光流预测算法【获取码】SIGAI0604

    [20] 理解主成分分析(PCA)【获取码】SIGAI0606

    [21] 人体骨骼关键点检测综述 【获取码】SIGAI0608

    [22]理解决策树 【获取码】SIGAI0611

    [23] 用一句话总结常用的机器学习算法【获取码】SIGAI0611

    [24] 目标检测算法之YOLO 【获取码】SIGAI0615

    [25] 理解过拟合 【获取码】SIGAI0618

    [26]理解计算:从√2到AlphaGo ——第1季 从√2谈起 【获取码】SIGAI0620

    [27] 场景文本检测——CTPN算法介绍 【获取码】SIGAI0622

    [28] 卷积神经网络的压缩和加速 【获取码】SIGAI0625

    [29] k近邻算法 【获取码】SIGAI0627

    [30]自然场景文本检测识别技术综述 【获取码】SIGAI0627

    [31] 理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景 【获取码】SIGAI0704

    [32] 机器学习算法地图【获取码】SIGAI0706

    [33] 反向传播算法推导-全连接神经网络【获取码】SIGAI0709

    [34] 生成式对抗网络模型综述【获取码】SIGAI0709.

    [35]怎样成为一名优秀的算法工程师【获取码】SIGAI0711.

    [36] 理解计算:从根号2到AlphaGo——第三季 神经网络的数学模型【获取码】SIGAI0716

    [37]【技术短文】人脸检测算法之S3FD 【获取码】SIGAI0716

    [38] 基于深度负相关学习的人群计数方法【获取码】SIGAI0718

    [39] 流形学习概述【获取码】SIGAI0723

    [40] 关于感受野的总结 【获取码】SIGAI0723

    [41] 随机森林概述 【获取码】SIGAI0725

    [42] 基于内容的图像检索技术综述——传统经典方法【获取码】SIGAI0727

    [43] 神经网络的激活函数总结【获取码】SIGAI0730

    [44] 机器学习和深度学习中值得弄清楚的一些问题【获取码】SIGAI0802

    [45] 基于深度神经网络的自动问答系统概述【获取码】SIGAI0803

    [46] 反向传播算法推导——卷积神经网络 【获取码】SIGAI0806

    [47] 机器学习与深度学习核心知识点总结 写在校园招聘即将开始时 【获取 码】SIGAI0808

    [48] 理解Spatial Transformer Networks【获取码】SIGAI0810

    [49]AI时代大点兵-国内外知名AI公司2018年最新盘点【获取码】SIGAI0813

    [50] 理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景 【获取码】SIGAI0815

    [51] 基于内容的图像检索技术综述--CNN方法 【获取码】SIGAI0817

    [52]文本表示简介 【获取码】SIGAI0820

    [53]机器学习中的最优化算法总结【获取码】SIGAI0822

    [54]【AI就业面面观】如何选择适合自己的舞台?【获取码】SIGAI0823

    [55]浓缩就是精华-SIGAI机器学习蓝宝书【获取码】SIGAI0824

    [56]DenseNet详解【获取码】SIGAI0827

    [57]AI时代大点兵国内外知名AI公司2018年最新盘点【完整版】【获取码】SIGAI0829

    [58]理解Adaboost算法【获取码】SIGAI0831

    [59]深入浅出聚类算法 【获取码】SIGAI0903


    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的

     

    展开全文
  • 我应该使用哪种机器学习算法

    千次阅读 2018-12-16 14:56:05
    我应该使用哪种机器学习算法? 该资源主要面向初学者到中级数据科学家或分析师,他们有兴趣识别和应用机器学习算法来解决他们感兴趣的问题。 当面对各种各样的机器学习算法时,初学者提出的一个典型问题是“我应该...

    我应该使用哪种机器学习算法?

    该资源主要面向初学者到中级数据科学家或分析师,他们有兴趣识别和应用机器学习算法来解决他们感兴趣的问题。

    当面对各种各样的机器学习算法时,初学者提出的一个典型问题是“我应该使用哪种算法?”   问题的答案因许多因素而异,包括:

    • 数据的大小,质量和特性。
    • 可用的计算时间。
    • 任务的紧迫性。
    • 您想要对数据做什么。

    即使是经验丰富的数据科学家也无法确定哪种算法在尝试不同的算法之前表现最佳。我们并不主张采用一种方法,但我们希望根据一些明确的因素提供一些指导,以便首先尝试哪种算法。

    机器学习算法备忘单

    流程图显示了何时使用哪种算法

    该  机器学习算法小抄  帮助您从各种机器学习算法选择找到适合您的具体问题适当的算法。本文将指导您完成如何使用工作表的过程。

    由于备忘单是为初学者数据科学家和分析师设计的,因此我们将在讨论算法时做出一些简化的假设。

    这里推荐的算法来自多个数据科学家和机器学习专家和开发人员的汇编反馈和提示。有几个问题我们没有达成协议,对于这些问题,我们试图强调共性并调和差异。

    随着我们的库增长以包含更完整的可用方法集,稍后将添加其他算法。

    如何使用备忘单

    将图表上的路径和算法标签读作“如果  <路径标签>  然后使用  <算法>”。例如:

    • 如果要执行降维,请使用主成分分析。
    • 如果您需要快速进行数字预测,请使用决策树或逻辑回归。
    • 如果需要分层结果,请使用分层聚类。

    有时会应用多个分支,有时候它们都不会完美匹配。重要的是要记住这些路径旨在成为经验法则,因此有些建议并不准确。我与之交谈的几位数据科学家表示,找到最佳算法的唯一可靠方法是尝试所有这些算法。

    机器学习算法的类型

    本节概述了最流行的机器学习类型。如果您熟悉这些类别并希望继续讨论特定算法,则可以跳过本节并转到下面的“何时使用特定算法”。

    监督学习

    监督学习算法基于一组示例进行预测。例如,历史销售额可用于估计未来价格。通过监督学习,您可以获得一个输入变量,该变量由标记的训练数据和所需的输出变量组成。您可以使用算法分析训练数据,以了解将输入映射到输出的功能。该推断函数通过从训练数据中推广以预测在看不见的情况下的结果来映射新的未知示例。

    • 分类:当数据用于预测分类变量时,监督学习也称为分类。将标签或指示器(狗或猫)分配给图像时就是这种情况。当只有两个标签时,这称为二进制分类。当有两个以上的类别时,这些问题被称为多类分类。
    • 回归:在预测连续值时,问题会成为回归问题。
    • 预测:这是根据过去和现在的数据对未来进行预测的过程。它最常用于分析趋势。一个常见的例子可能是根据当年和前几年的销售情况估算下一年的销售额。

    半监督学习

    监督学习的挑战是标签数据可能既昂贵又耗时。如果标签有限,您可以使用未标记的示例来增强监督学习。因为在这种情况下机器没有完全监督,我们说机器是半监督的。使用半监督学习,您可以使用带有少量标记数据的未标记示例来提高学习准确性。

    无人监督的学习

    在执行无监督学习时,机器会显示完全未标记的数据。它被要求发现作为数据基础的内在模式,例如聚类结构,低维流形或稀疏树和图。

    • 聚类:对一组数据示例进行分组,以使一个组(或一个集群)中的示例(与某些标准相比)与其他组中的示例更相似(根据某些标准)。这通常用于将整个数据集分成几个组。可以在每个组中执行分析以帮助用户找到内在模式。
    • 降维:减少所考虑的变量数量。在许多应用程序中,原始数据具有非常高的维度特征,并且某些特征是冗余的或与任务无关。减少维度有助于找到真实的潜在关系。

     强化学习

    强化学习根据环境反馈分析并优化代理的行为。机器尝试不同的场景来发现哪些动作产生最大的回报,而不是被告知要采取哪些动作。试错法和延迟奖励将强化学习与其他技术区分开来。

    选择算法时的注意事项

    在选择算法时,请始终考虑以下因素:准确性,培训时间和易用性。许多用户将准确性放在第一位,而初学者倾向于专注于他们最熟悉的算法。

    当提供数据集时,首先要考虑的是如何获得结果,无论结果如何。初学者倾向于选择易于实现且可以快速获得结果的算法。这很好,只要它只是这个过程的第一步。获得一些结果并熟悉数据后,您可能会花更多时间使用更复杂的算法来加强对数据的理解,从而进一步改善结果。

    即使在这个阶段,最好的算法可能不是已经达到最高报告准确度的方法,因为算法通常需要仔细调整和广泛的训练以获得其最佳可实现的性能。

    何时使用特定算法

    更仔细地查看单个算法可以帮助您了解它们提供的内容以及它们的使用方式。这些描述提供了更多详细信息,并提供了何时使用特定算法的附加提示,与备忘单一致。

    线性回归和逻辑回归    

    线性回归

    逻辑回归

     

    线性回归是一种建模连续因变量y之间关系的方法ÿ和一个或多个预测变量X。X与Y之间的关系可以线性建模为给出训练样例,参数矢量β 可以学习到。

    如果因变量不是连续的但是是分类的,则可以使用logit链接函数将线性回归转换为逻辑回归。Logistic回归是一种简单,快速但功能强大的分类算法。这里我们讨论因变量y的二进制情况ÿ只取二进制值(它可以很容易地扩展到多类分类问题)。

    在逻辑回归中,我们使用不同的假设类来尝试预测给定示例属于“1”类的概率与它属于“-1”类的概率。具体来说,我们将尝试学习形式的函数:。这里是一个sigmoid函数。给出训练样例,参数矢量β可以通过最大化β的对数似然来学习β 给定数据集。

        

    按线性回归分组

    SAS Visual Analytics中的逻辑回归

     

     

    线性SVM和内核SVM

    内核技巧用于将非线性可分离函数映射到更高维度的线性可分函数。支持向量机(SVM)训练算法找到由法向量w表示的分类器w ^和偏见bb超平面的 这个超平面(边界)以尽可能宽的边距分隔不同的类。问题可以转换为约束优化问题:

     

    支持向量机(SVM)训练算法找到由超平面的法向量和偏差表示的分类器。这个超平面(边界)以尽可能宽的边距分隔不同的类。问题可以转换为约束优化问题:

    线性和内核SVM图表

    内核技巧用于将非线性可分离函数映射到更高维度的线性可分函数。

    当类不是线性可分的时,可以使用内核技巧将非线性可分离空间映射到更高维度的线性可分离空间。

    当大多数因变量是数字时,逻辑回归和SVM应该是分类的第一次尝试。这些模型易于实现,参数易于调整,性能也相当不错。所以这些模型适合初学者。

    决策树

    预测模型的决策树。

    预测模型的决策树

    决策树,随机森林和梯度增强都是基于决策树的算法。决策树有许多变体,但它们都做同样的事情 - 将特征空间细分为大多数相同标签的区域。决策树易于理解和实施。然而,当我们耗尽树枝并深入树木时,它们往往会过度拟合数据。随机森林和梯度增强是使用树算法实现良好准确性以及克服过度拟合问题的两种常用方法。

    神经网络和深度学习

    卷积神经网络架构(图像源:维基百科创意共享

    由于其并行和分布式处理能力,神经网络在20世纪80年代中期蓬勃发展。但是,该领域的研究受到反向传播训练算法的无效性的阻碍,该算法被广泛用于优化神经网络的参数。支持向量机(SVM)和其他更简单的模型,通过求解凸优化问题可以很容易地训练,逐渐取代机器学习中的神经网络。

    近年来,诸如无人监督的预训练和分层贪婪训练等新的和改进的训练技术已经引起对神经网络的兴趣的复苏。越来越强大的计算能力,如图形处理单元(GPU)和大规模并行处理(MPP),也刺激了神经网络的复兴。神经网络中的复兴研究已经产生了具有数千层的模型的发明。

    神经网络

    SAS Visual Analytics中的神经网络

    换句话说,浅层神经网络已演变为深度学习神经网络。深度神经网络在监督学习方面非常成功。当用于语音和图像识别时,深度学习的表现与人类一样好,甚至更好。应用于无监督学习任务,例如特征提取,深度学习还从原始图像或语音中提取特征,而人为干预少得多。

    神经网络由三部分组成:输入层,隐藏层和输出层。训练样本定义输入和输出层。当输出层是分类变量时,神经网络是解决分类问题的一种方法。当输出层是连续变量时,则可以使用网络进行回归。当输出层与输入层相同时,网络可用于提取内在特征。隐藏层的数量定义了模型的复杂性和建模能力。

    深度学习:它是什么以及它为何重要

    k-means/k-modes,GMM(高斯混合模型)聚类

    K均值聚类

    高斯混合模型

     

     

    Kmeans/k-modes,GMM聚类旨在将n个观测值划分为k个聚类。K-means定义硬分配:样本只与一个集群相关联。然而,GMM为每个样本定义了一个软分配。每个样本都有可能与每个群集相关联。当给出簇k的数量时,两种算法都是简单且快速的,以便进行聚类。

    DBSCAN

     

    DBSCAN插图

    DBSCAN插图(图片来源:维基百科

    当没有给出簇数k时,可以通过密度扩散连接样本来使用DBSCAN(基于密度的空间聚类)。

    分层聚类

    可以使用树结构(树形图)可视化分层分区。它不需要簇的数量作为输入,并且可以使用不同的K在不同粒度级别(即,可以细化/粗化簇)查看分区。

    PCA,SVD和LDA

    我们通常不希望将大量特征直接馈送到机器学习算法中,因为一些特征可能是不相关的,或者“内在”维度可能小于特征的数量。主成分分析(PCA),奇异值分解(SVD)和 潜在Dirichlet分配(LDA)都可用于执行降维。

    PCA是一种无监督的聚类方法,它将原始数据空间映射到较低维空间,同时保留尽可能多的信息。PCA基本上找到最能保留数据方差的子空间,子空间由数据协方差矩阵的主要特征向量定义。

    SVD与PCA有关,因为中心数据矩阵的SVD(特征与样本)提供了主要的左奇异向量,这些向量定义了与PCA相同的子空间。然而,SVD是一种更通用的技术,因为它也可以做PCA可能不会做的事情。例如,用户对电影矩阵的SVD能够提取可以在推荐系统中使用的用户简档和电影简档。此外,SVD还被广泛用作自然语言处理(NLP)中的主题建模工具,称为潜在语义分析。

    NLP中的相关技术是潜在Dirichlet分配(LDA)。LDA是概率主题模型,它以类似于高斯混合模型(GMM)将连续数据分解为高斯密度的方式将文档分解为主题。与GMM不同,LDA模拟离散数据(文档中的单词),并且它约束主题是根据Dirichlet分布的先验分布。

     结论

    这是易于遵循的工作流程。尝试解决新问题时的外卖消息是:

    • 定义问题。你想解决什么问题?
    • 从简单开始。熟悉数据和基线结果。
    • 然后尝试更复杂的事情。

     

    来源:https://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/#prettyPhoto

    展开全文
  • 人工智能-10种机器学习常见算法

    千次阅读 2021-12-09 13:47:35
    线性回归(Linear Regression)是目前机器学习算法中最流行的一种,线性回归算法就是要找一条直线,并且让这条直线尽可能地拟合散点图中的数据点。它试图通过将直线方程与该数据拟合来表示自变量(x)和数值结果(y)。...

    机器学习是目前行业的一个创新且重要的领域。今天,给大家介绍机器学习中的10种常见的算法,希望可以帮助大家适应机器学习的世界。

    1、线性回归

    线性回归(Linear Regression)是目前机器学习算法中最流行的一种,线性回归算法就是要找一条直线,并且让这条直线尽可能地拟合散点图中的数据点。它试图通过将直线方程与该数据拟合来表示自变量(x)和数值结果(y)。然后就可以用这条直线来预测未来的值!
    这种算法最常用的技术是最小二乘法(Least of squares)。这个方法计算出最佳拟合线,以使得与直线上的每个数据点垂直距离最小。总距离是所有数据点的垂直距离(绿线)的平方和。其思想是通过最小化这个平方误差或距离来拟合模型。
    在这里插入图片描述
    线性回归
    在这里插入图片描述

    2、逻辑回归

    逻辑回归(Logistic regression)与线性回归类似,但逻辑回归是用于输出为二进制的情况(即,当结果只能有两个可能的值)。对最终输出的与预测是一个非线性的S型函数,称为logistic function,g()
    这个逻辑函数将中间结果映射到结果变量Y,其值范围是从0到1.然后,这些值可以解释为Y出现的概率。S型逻辑函数的性质使得逻辑回归更适合用于分类任务。在这里插入图片描述
    逻辑回归曲线图,显示了通过考试的概率与学习时间的关系

    3、决策树

    决策树(Decision Trees)可用于回归和分类任务。
    在这一算法中,训练模型通过学习树表示(Tree representation)的决策规则来学习预测目标变量的值。树是由具有相应属性的节点组成的。
    在每个节点上,我们根据可用的特征询问有关数据的问题,左右分支代表可能的答案。最终节点(即叶节点)对应于一个预测值。每个特征的重要性是通过自顶向下方法确定的,节点越高,其属性就越重要。
    在这里插入图片描述
    玩还是不玩,这是一个问题。

    4、朴素贝叶斯

    朴素贝叶斯(Naive Bayes)是基于贝叶斯定理。它测量每个类的概率,每个类的条件概率给出x的值。这个算法用于分类问题,得到一个二进制“是”/“非”的结果,如下图所示。
    在这里插入图片描述
    其中,P(Y|X)代表X事件发生的条件下,Y事件发生的概率;P(X)和P(Y)分别代表了事件X和事件Y发生的概率;P(X|Y)代表了Y事件发生的条件下,X事件发生的概率。
    朴素贝叶斯分类器是一种流行的统计技术,可用于过滤垃圾邮件

    5、支持向量机(SVM)

    支持向量机(Support Vector Machine, SVM)是一种用于分类问题的监督算法。支持向量机试图在数据点之间绘制两条线,它们之间边距最大。为此,我们将数据项绘制为n维空间中的点,其中n是输入特征的数量,我们生活在3维空间,所以大多数想象n=3。在此基础上,支持向量机找到一个最优边界,简称超平面(Hyperplane),它通过类标签将可能的输出进行最佳分离。二维数据用线分离,三维数据用平面分离,当n超过3时候,我们就无法想象。
    超平面与最近的类点之间的距离称为边距。最优超平面具有最大边界,可以对点进行分类,从而使最近的数据点与这两个点间的距离最大化,使得类类间的距离最小,类间的距离最大。
    在这里插入图片描述

    如图所示,H1没有将两个类分开。但是H2将两个类分开。但是H2只有很小的边距,而H3以最大的边距将它们分开了,使得类类间的距离最小,类间的距离最大。

    6、K-最近邻算法(KNN)

    这个可以参考我之前的博客,讲的很详细啊

    7、K-均值

    K均值(K-means)是通过对数据集进行分类来聚类的。例如这个算法可以根据购买历史将用户进行分组,它在数据集中找到K个聚类。K-均值用于无监督学习,因此,我们只需要使用训练数据X,以及我们想要识别的聚类数量K。
    该算法根据每个数据点的特征,将每个数据点迭代地分配给K个组中的一个组,它为每个K-聚类(称为质心)的聚类中。这个过程一直持续到质心停止变化为止。
    在这里插入图片描述

    8、随机森林

    随机森林(Random Forest)是一种非常流行的集成机器学习算法。这个算法的基本思想是,许多人的意见要比一个人的意见更加准确,好而不同。在随机森林中,我们使用决策树集成,一棵棵树,最后就集成了一片森林。
    为了对新对象进行分类,我们从每个决策树中进行投票,并结合结果,然后根据多数投票最终做出决定。
    在这里插入图片描述
    (a)在训练过程中,每个决策树都是基于训练集的引导样本来构建的。
    (b)在分类过程中,输入实例的决定是根据多数投票做出的。

    9、降维

    由于我们今天能够捕获的数据量信息太大,维度空间也越来越大,机器学习问题变得更加复杂。这个就意味着训练极其缓慢,而且很难找到一个好的解决方案。这个问题,通常被称为“维数灾难”(Curse of dimensionality)。
    降维(Dimensionality reduction)试图在不丢失最重要信息的情况下,通过将特定的特征组合成高层次的特征来解决这个问题。主成分分析是最流行的降维技术。
    主成分分析是通过将数据集压缩到低维线或超平面/子空间来降低数据集的维数。这尽可能地保留了原始数据的显著特征。
    在这里插入图片描述
    如图所示,可以通过将所有数据点近似到一条直线上来实现降维。

    10、人工神经网络(ANN)

    人工神经网络(Artificial Neural Networks, ANN)可以处理大型复杂的机器学习任务。神经网络本质上是一组带有权值的边和节点组成的相互连接的层,称为神经元。在输入层和输出层之间,我们可以插入多个隐藏层。人工神经网络使用了两个隐藏层。除此之外,还需要处理深度学习的问题。
    人工神经网络的工作原理与大脑的结构类似。一组神经元被赋予一个随机权重,以确定神经元如何处理输入数据。通过对输入数据训练神经网络来学习输入和输出之间的关系。在训练阶段,系统可以访问正确的答案。如果网络不能准确识别输入,系统就会调整权重。经过充分的训练后,它将始终如一地识别出正确的模式。
    在这里插入图片描述

    每个圆形节点表示一个人工神经元,箭头表示从一个人工神经元的输出到另一个人工神经元的输入的连接。
    这就是我对于机器学习的十种比较流行的算法的总结,大家也可以自己尝试去深入了解一下,希望对大家的学习有帮助啊。
    照例给大家推荐一个b站视频:YOLOV4和YOLOV5教程 BV1pv411V7kR

    展开全文
  • 常见机器学习算法优缺点总结

    千次阅读 2019-08-04 17:49:46
    常见机器学习算法优缺点总结 1. 回归 回归是一种用于连续型数值变量预测和建模的监督学习算法,使用案例包括房地产价格、股价走势或学生成绩等的预测。 回归任务的特征是具有数值型目标变量的标注数据集。换言之...

    常见机器学习算法优缺点总结

    1. 回归

    回归是一种用于连续型数值变量预测和建模的监督学习算法,使用案例包括房地产价格、股价走势或学生成绩等的预测。

    回归任务的特征是具有数值型目标变量的标注数据集。换言之,每一个用以监督算法的观察样本,都有一个数值型真值。

     

    1.1 (正则化)线性回归

    线性回归是回归任务最常用的算法。它最简的形式,是用一个连续的超平面来拟合数据集(比如,当你仅有两个变量时就用一条直线)。如果数据集内的变量存在线性关系,拟合程度就相当高。

    在实践中,简单线性回归通常会被其正则化形式(LASSO、Ridge 及弹性网络)所取代。正则化是对过多回归系数所采取的一种避免过拟合的惩罚技巧,同时,惩罚的强度需要被平衡好。

    • 优点:线性回归的理解和解释都非常直观,还能通过正则化来避免过拟合。此外,线性模型很容易通过随机梯度下降来更新数据模型。

    • 缺点:线性回归在处理非线性关系时非常糟糕,在识别复杂的模式上也不够灵活,而添加正确的相互作用项或多项式又极为棘手且耗时。

    1.2 回归树(决策树)(集成方法)

    回归树,又名决策树,通过将数据集重复分割成不同的分支来最大化每次分离的信息增益,从而让回归树很自然地学到非线性关系。

    集成的方法,如随机森林(RF)或梯度提升树(GBM),则能结合许多独立训练树的预测。我们在这里不会详述其中的机制,但在实践中,随机森林一般都有很出色的表现,梯度提升树则较难调参,但往往能有更高的性能上限。

    • 优点:决策树能学习非线性关系,对异常值也具有很强的稳健性。集成学习在实践中表现优异,经常赢得经典的(非深度学习)机器学习竞赛。

    • 缺点:由于无约束,单棵树容易过拟合,这是因为单棵树可保留分支直至记住训练的数据。不够,集成方法可以弱化这一缺点。

    1.3 深度学习

    深度学习是指能够学习极端复杂模式的多层神经网络。它们在输入层和输出层之间使用隐藏层来对数据的中间表征建模,这一点是其他算法很难做到的。

    深度学习还有几个重要的机制,如卷积、漏失等,这使该算法可以有效学习高维数据。然而,相对于其他算法,深度学习需要更多的数据来进行训练,因为该模型需要估算更大数量级的参数。

    • 优点:深度学习是当前特定领域的最先进技术,如计算机视觉与语音识别。深度神经网络在图像、音频和文本数据上表现优异,也很容易通过反向传播算法来更新数据模型。它们的架构(即层级的数量和结构)能适用于多种问题,同时隐藏层还能降低算法对特征工程的依赖。

    • 缺点:深度学习算法往往不适合用于通用目的,因为它们需要大量的数据。事实上,对于经典的机器学习问题,深度学习的表现并不比集成方法好。此外,由于训练所需的密集型计算,它们需要更多的专门知识才能进行调参(如设定架构与超参数)。

    1.4 荣誉奖:最近邻算法

    最近邻算法是“基于实例的”,也就意味着它需要保留每一个训练观察值。最近邻算法通过搜寻最相似的训练样本来预测新样本的观察值。

    它是内存密集型算法,处理高维数据时的效果并不理想,同时还需要高效的距离函数来计算相似度。在实践中,使用正则化的回归或树型集成方法通常是更好的选择。

    2.分类

    分类是一种用于分类变量建模及预测的监督学习算法,使用案例包括员工流失、邮件过滤、金融欺诈等的预测。

    正如你所见,许多回归算法都有其对应的分类形式,分类算法往往适用于类别(或其可能性)的预测,而非数值。

    2.1 (正则化)逻辑回归

    逻辑回归是线性回归所对应的分类方法,基本概念由线性回归推导而出。逻辑回归通过逻辑函数将预测映射到 0 到 1 的区间,因此预测值可被视为某一类别的概率。

    该模型依旧是线性的,只有当数据线性可分时(例如,数据可被某决策平面完全分离),这一算法才会有很好的表现。逻辑回归同样能惩罚模型系数以进行正则化。

    • 优点:输出结果会有很好的概率解释,而算法也能通过正则化以避免过拟合。逻辑模型很容易通过随机梯度下降来更新数据模型。

    • 缺点:逻辑回归在面对多元或非线性决策边界时性能较差。

    2.2 分类树(集成方法)

    对应于回归树的分类算法是分类树。通常,它们都是指决策树,更为严谨的说法是“分类回归树(CART)”,也就是非常有名的 CART 算法。

    • 优点:跟回归方法一样,分类树的集成方法在实践中的表现同样十分优异。它们在应对异常数据时有着相当的稳健性与可扩展性。由于其层级结构,分类树的集成方法能够很自然地对非线性决策边界建模。

    • 缺点:不可约束,单棵树容易过拟合,集成方法可削弱这一影响。

    2.3 深度学习

    深度学习同样很容易适应于分类问题。实际上,深度学习应用地更多的是分类任务,如图像分类等。

    • 优点:深度学习非常适合于音频、文本与图像数据的分类。

    • 缺点:与回归方法一样,深度神经网络需要大量的数据进行训练,所以也不是一个通用目的算法。

    2.4 支持向量机

    支持向量机使用一个名为核函数的技巧,来将非线性问题变换为线性问题,其本质是计算两个观测数据的距离。支持向量机算法所寻找的是能够最大化样本间隔的决策边界,因此又被称为大间距分类器。

    举例来说,使用线性核函数的支持向量机类似于逻辑回归,但更具稳健性。因而在实践中,支持向量机最大用处是用非线性核函数来对非线性决策边界进行建模。

    • 优点:支持向量机能对非线性决策边界建模,又有许多可选的核函数。在面对过拟合时,支持向量机有着极强的稳健性,尤其是在高维空间中。

    • 缺点:不过,支持向量机是内存密集型算法,选择正确的核函数就需要相当的j技巧,不太适用较大的数据集。在当前的业界应用中,随机森林的表现往往要优于支持向量机。

    2.5 朴素贝叶斯

    朴素贝叶斯是一种基于条件概率和计数的简单算法,其本质是一个概率表,通过训练数据来更新其中的概率。它预测新观察值的过程,就是根据样本的特征值在概率表中来寻找最为可能的类别。

    被称为“朴素”原因,是其核心的特征条件独立性假设(例如,每一项输入特征都相互独立),在现实中几乎是不成立的。

    • 优点:即便条件独立性假设很难成立,但实践中的朴素贝叶斯算法却能表现得很好。该算法易于实现且能伴随数据集更新。

    • 缺点:因为朴素贝叶斯的算法太过简单,所以很容易被上述分类算法所取代。

    3.聚类

    聚类是基于数据内部结构来寻找样本自然族群(集群)的无监督学习任务,使用案例包括用户画像、电商物品聚类、社交网络分析等。

    由于聚类属于无监督学习,也就不会输出“正确的答案”,评价结果时往往要用到数据可视化。如果你需要“正确的答案”,亦即训练集中存在预标注的集群,那么用分类算法会更加合适。

    3.1 K 均值

    K 均值是基于样本点间的几何距离来度量聚类的通用目的算法。由于集群围绕在聚类中心,结果会接近于球状并具有相似的大小。

    我们之所以推荐该算法给初学者,是因为它不仅足够简单,而且足够灵活,对于大多数问题都能给出合理的结果。

    • 优点:K 均值是最为流行的聚类算法,因为它足够快速、足够简单,如果你的预处理数据和特征工程都做得十分有效,那它将具备令人惊叹的灵活性。

    • 缺点:该算法需要指定集群的数量,而 K 值的选择通常都不是那么容易确定的。另外,如果训练数据中的真实集群并不是类球状的,那么 K 均值聚类会得出一些比较差的集群。

    3.2 仿射传播

    仿射传播是一种相对较新的聚类算法,它基于两个样本点之间的图形距离来确定集群,其结果倾向于更小且大小不等的集群。

    • 优点:仿射传播不需要指出明确的集群数量,但需要指定“sample preference”和“damping”等超参数。

    • 缺点:仿射传播的主要缺点是训练速度较慢,且需要大量内存,因而难于扩展到大数据集。此外,该算法同样在假定潜在的集群要接近于球状。

    3.3 分层 / 层次

    分层聚类,又名层次聚类,其算法基于以下概念来实现:

    1) 每一个集群都从一个数据点开始;

    2) 每一个集群都可基于相同的标准进行合并;

    3) 重复这一过程,直至你仅剩下一个集群,这就获得了集群的层次结构。

    • 优点:层次聚类的最主要优点,是集群不再假定为类球形。此外,它可以很容易扩展到大数据集。

    • 缺点:类似于 K 均值,该算法需要选定集群的数量,即算法完成后所要保留的层次。

    3.4 DBSCAN

    DBSCAN 是一种基于密度的聚类算法,它将样本点的密集区域组成集群;其最新进展是HDBSCAN,它允许集群的密度可变。

    • 优点:DBSCAN 不需要假定类球形集群,其性能可以扩展。此外,它不需要每个点都被分配到集群中,这就降低了集群的噪音。

    • 缺点:用户必须要调整“epsilon”和“min_sample”这两个超参数来定义集群密度。DBSCAN 对此非常敏感。

    维度灾难

    在机器学习领域,“维度(Dimensionality)”通常指数据集中的特征数量(即输入变量的个数)。

    当特征的个数特别大的时候(相对于数据集中观测样本的数量来说),训练出一个有效的模型,对算法要求就会特别高(即,用现有的算法训练出一个有效的模型特别困难)。这就是所谓的“维度灾难(Curse of Dimensionality)”,特别是对依赖于距离计算的聚类算法而言。

    对于“维度灾难”,有位 Quora 用户给出了一个非常好的类比:

    假设有一条100码的直线,而你在该直线的某处掉了一枚硬币。要找回硬币并不难,你只需沿着这条线走就行了,最多花上你2分钟时间。 然后,假设有一个长和宽都是100码的广场,而你是把硬币掉在广场的某个位置。现在再想找回它,可就不容易了,这好比在两个并排的足球场中找针,可能会耗上你几天时间。 再然后,假设是一个长、宽、高都是100码的立方体,那就好比是在30层楼高的大型体育场内找zhen找针……

    随着维度的增加,在空间中搜索的难度也会变得愈加困难。

    Quora链接:www.quora.com/What-is-the…

    这就需要数据降维的办法:特征选取和特征提取。

    4.特征选取

    特征选取是从你的数据集中过滤掉不相关或冗余的特征。特征选取与特征提取的关键区别在于:特征选取是从原特征集中选取一个子特征集,而特称提取则是在原特征集的基础上重新构造出一些(一个或多个)全新的特征。

    需要注意的是,某些监督式机器学习算法已经具备了内在的特征选取机制:比如正则回归与随机森林。通常,我们是建议一开始优先尝试这些算法,如果它们能匹配上你的问题的话。对此我们已经做过介绍。

    作为独立的任务,特征选取既可以是非监督式的(如方差阈值),又可以是监督式的(比遗传算法)。有必要的话,你还可以把多种方法以某种合理的方式整合在一起。

    4.1 方差阈值

    方差阈值会摒弃掉观测样本那些观测值改变较小的特征(即,它们的方差小于某个设定的阈值)。这样的特征的价值极小。

    举例来说,如果你有一份公共健康数据,其中96%的人都是35岁的男性,那么去掉“年龄”和“性别”的特征也不会损失重要信息。

    由于方差阈值依赖于特征值的数量级,你应该对特征值先做归一化处理。

    • 优点:使用方差阈值方式进行数据降维只需一个非常可靠的直觉:特征值不怎么改变的特征,不会带来什么有用的信息。这是在你建模初期进行数据降维相对安全的一种方式。

    • 缺点:如果你正在解决的问题并不需要进行数据降维,即便使用了方差阈值也几乎没有什么作用。此外,你需要手工设置、调整方差阈值,这个过程相当具有技术含量。我们建议从一个保守(也就是,较低)的阈值开始。

    4.2 相关性阈值

    相关性阈值会去掉那些高度相关的特征(亦即,这些特征的特征值变化与其他特征非常相似)。它们提供的是冗余信息。

    举例来说,如果你有一个房地产数据,其中两个特征分别是“房屋面积(单位:平方英尺)”和“房屋面积(单位:平方米)”,那么,你就可以去掉其中的任何一个(这非常安全,也不会给你的模型带来任何负面影响)。

    问题是,你该去掉哪一个特征呢?首先,你应该计算所有特征对的相关系数。而后,如果某个特征对的相关系数大于设定的阈值,那你就可以去掉其中平均绝对相关系数较大的那一个。

    • 优点:使用相关性阈值同样只需一个可靠的直觉:相似的特征提供了冗余的信息。对于某些含有强相关性特征较多的数据集,有些算法的稳健性并不好,因此,去掉它们可以提升整个模型的性能(计算速度、模型准确度、模型稳健性,等等)。

    • 缺点:同样,你还是必须手动去设置、调整相关性阈值,这同样是个棘手且复杂的过程。此外,如果你设置的阈值过低,那么你将会丢失掉一些有用的信息。无论在什么时候,我们都更倾向于使用那些内置了特征选取的算法。对于没有内置特征提取的算法,主成分分析是一个很好的备用方案。

    4.3 遗传算法

    遗传算法是可用于不同任务的一大类算法的统称。它们受进化生物学与自然选择的启发,结合变异与交叉,在解空间内进行高效的遍历搜索。这里有一篇非常棒的简介:“遗传算法背后的原理引入”。

    在机器学习领域,遗传算法主要有两大用处。

    其一,用于最优化,比如去找神经网络的最佳权重。

    其二,是用于监督式特征提取。这一用例中,“基因”表示单个特征,同时“有机体”表示候选特征集。“种群体”内的每一个有机体都会基于其适应性进行评分,正如在测试数据集上进行模型性能测试。最能适应环境的有机体将会生存下来,并不断繁衍,一直迭代,直至最终收敛于某个最优的解决方案。

    • 优点:在穷举搜索不可行的情况下,对高维数据集使用遗传算法会相当有效。当你的算法需要预处理数据却没有内置的特征选取机制(如最近邻分类算法),而你又必须保留最原始的特征(也就是不能用任何主成分分析算法),遗传算法就成了你最好的选择。这一情况在要求透明、可解释方案的商业环境下时有发生。

    • 缺点:遗传算法为你解决方案的实施带来了更高的复杂度,而多数情况下它们都是不必要的麻烦。如果可能的话,主成分分析或其它内置特征选取的算法将会更加高效和简洁。

    4.4 荣誉奖:逐步搜索

    逐步搜索是一个基于序列式搜索的监督式特征选取算法。它有两种形式:前向搜索和反向搜索。

    对于前向逐步搜索,你从没有任何特征开始。接着,从候选特征集中,选择一个特征来训练模型;然后,保存模型性能最好对应的那个特征;再往下,你不断往训练模型的特征集中添加特征,一次添加一个特征,直到你模型的性能不再提升。

    反向逐步搜索的过程相同,只不过顺序相反:从把所有的特征都用于训练模型,接着一次性移除一个特征,直到模型的性能骤降。

    我们提及这一算法纯粹是源于某些历史原因。尽管很多教科书都把逐步搜索算法作为一个有效的方法,但它所表现出来的性能总是不及其它监督式方法,比如正则化。逐步搜索有很多明显的缺陷,最致命的一点就是它是一个贪心算法,无法面对未来变化的冲击。我们并不推荐这个算法。

    5.特征提取

    特征提取是用来创造一个新的、较小的特征集,但仍能保留绝大部分有用的信息。值得再提的是,特征选取是用来保留原始特征集中的一部分子特征集,而特征提取则是创造全新的特征集。

    跟特征选取一样,某些算法内部已经具有了特征提取的机制。最好的案例就是深度学习,它可以通过每一层隐神经层,提取出越来越有用的能表征原始数据的特征。我们在“深度学习”部分已给出相关的讲解。

    作为独立的任务,特征提取可以是非监督式的(如主成分分析)或监督式的(如线性判别分析)。

    5.1 主成分分析

    主成分分析是一个非监督式算法,它用来创造原始特征的线性组合。新创造出来的特征他们之间都是正交的,也就是没有关联性。具体来说,这些新特征是按它们本身变化程度的大小来进行排列的。第一个主成分代表了你的数据集中变化最为剧烈的特征,第二个主成分代表了变化程度排在第二位的特征,以此类推。

    因此,你可以通过限制使用主成分的个数来达到数据降维的目的。例如,你可以仅采用能使累积可解释方差为90%的主成分数量。

    你需要在使用主成分分析之前,对数据进行归一化处理。否则,原始数据中特征值数量级最大的那个特征将会主导你新创造出来的主成分特征。

    • 优点:主成分分析是一项多用途技术,实用效果非常好。它部署起来快速、简单,也就是说,你可以很方便地测试算法性能,无论使用还是不使用主成分分析。此外,主成分分析还有好几种变体和扩展(如:核主成分分析(kernel PCA),稀疏主成分分析(sparse PCA)),用以解决特定的问题。

    • 缺点:新创造出来的主成分并不具备可解释性,因而在某些情况下,新特征与应用实际场景之间很难建立起联系。此外,你仍然需要手动设置、调整累积可解释方差的阈值。

    5.2 线性判别分析

    线性判别分析不是隐含狄利克雷分布,它同样用来构造原始特征集的线性组合。但与主成分分析不同,线性判别分析不会最大化可解释方差,而是最大化类别间的分离程度。

    因此,线性判别分析是一种监督式学习方式,它必须使用有标记的数据集。那么,线性判别分析与主成分分析,到底哪种方法更好呢?这要视具体的情况而定,“没有免费的午餐”原理在这里同样适用。

    线性判别分析同样依赖于特征值的数量级,你同样需要先对特征值做归一化处理。

    • 优点:线性判别分析是一种监督式学习,基于这种方式获取到的特征可以(但并不总是能)提升模型性能。此外,线性判别分析还有一些变体(如二次线性判别分析),可用来解决特定的问题。

    • 缺点:与主成分分析一样,新创造出来的特征不具有可解释性。而且,你同样要手动设置、调整需要保留的特征数量。线性判别分析需要已经标记好的数据,因此,这也让它更加接地气儿。

    5.3 自编码机

    自编码机是一种人工神经网络,它是用来重新构建原始输入的。例如,图像自编码机是训练来重新表征原始数据的,而非用以区分图片里面的小猫、小狗。

    但这有用吗?这里的关键,是在隐含层搭建比输入层和输出层更少数量的神经元。这样,隐含层就会不断学习如何用更少的特征来表征原始图像。

    因为是用输入图像来作为目标输出,自编码机被视为无监督学习。它们可被直接使用(如:图像压缩)或按顺序堆叠使用(如:深度学习)。

    • 优点:自编码机是人工神经网络中的一种,这表示它们对某些特定类型的数据表现会非常好,比如图像和语音数据。

    • 缺点:自编码机是一种人工神经网络。这就是说,它们的优化需要更多的数据来进行训练。它们并不能作为一般意义上的数据降维算法来用。

    小结

    基于我们的经验,以下是一些有用的建议:

    1. 练习,练习,练习。要找到一些数据集,趁热打铁。了解这些算法只是一个开头,掌握好它们就需要你不停地实践。

    2. 掌握好基础。掌握这里算法,能为你去运用机器学习打下坚实的基础,因为其他所有的算法都是基于上述算法的一些变形。举例来说,先掌握主成分分析和线性判别分析之前的区别,而后再去学习线性判别分析的相关细节以及二次线性判别分析之间的差别,效果会更好。

    3. 铁律,好的数据远胜于花哨的算法。在机器学习应用领域,算法总是可以替换的;而有效的探索性分析、数据清洗与特征工程总是能大力提升你的结果。我们会经常提及这一点,因为这就是该死的真相!

    本文为转载,感谢作者的总结 原文地址

     

    展开全文
  • 首先我们简单描述一个机器学习常用的领域:金融风控。 金融风控流程与重点 互联网金融公司,其风控流程因为业务不同而各有所不同。而业务类型,如果按照借款用途来划分,有消费贷款,企业贷款,供应链贷款,融资...
  • 机器学习的概念、历史和未来

    千次阅读 2018-07-17 10:17:00
    在直观的层面,如果说计算机科学是研究关于算法的科学,那么机器学习就是研究关于“学习算法”的科学,或者说,不同于一般的显式编程,机器学习就是研究如何使得计算机在无法被显式编程的情况下进行学习的领域,需要...
  • 机器学习算法应用场景实例六十则

    千次阅读 2020-12-17 14:47:57
    原文链接:https://blog.csdn.net/liulingyuan6/article/details/53648273本文整理了60个机器学习算法应用场景实例,含分类算法应用场景20个、回归算法应用场景20个、聚类算法应用场景10个以及关联规则应用场景10个...
  • 本文将推荐几种机器学习算法,你应该考虑是否将它们投入应用。这五种算法覆盖最常用于聚类、分类、数值预测和朴素贝叶斯等四个门类。 1. 聚类算法:k-means 聚类算法的目标:观察输入数据集,并借助数据集中...
  • 机器学习算法总结

    千次阅读 2018-08-19 11:23:02
    ~~~~~·个人整理,如需转载,请说明并备注,不甚感激~~...BAT机器学习面试系列 1.请简要介绍下SVM。 SVM,全称是support vector machine,中文名叫支持向量机。SVM是一个面向数据的分类算法,它的目标是为确定一个...
  • 离线机器学习-通过定时任务来训练算法,具有缺点,不具有实时性。 在线学习-实时学习 机器学习的典型应用 关联规则-啤酒和纸尿裤-购物篮分析-捆绑销售-货物摆放位置的挑战-数据挖掘 聚类-用户细分精准营销 朴素...
  • 机器学习算法分类

    千次阅读 2019-09-19 14:31:56
    机器学习算法分类按照学习方式可以分为如下四类按照学习任务可以分成如下三类综合来看功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表...
  • 机器学习必学十大算法

    千次阅读 2021-10-03 01:08:08
    点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达本文介绍了 10 大常用机器学习算法,包括线性回归、Logistic 回归、线性判别分析、朴素贝叶斯、KNN、随机森林...
  • 机器学习算法介绍

    千次阅读 2019-03-13 09:36:53
    谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明、更个性化的技术。 也许我们生活在人类历史上最关键的时期:从使用大型...
  • 常见的十大机器学习算法

    千次阅读 2017-07-01 12:24:23
    机器学习算法的广义分类大概有三种:监督式学习、无监督学习、强化学习。 监督学习由一个目标变量或结果变量(或因变量)组成。这些变量由已知的一系列预示变量(自变量)预测而来。利用这一系列变量,我们生成一个...
  • 机器学习算法地图

    千次阅读 多人点赞 2018-07-05 12:10:07
    其它机器学习、深度学习算法的...文章《机器学习算法地图》系SIGAI原创,仅供个人学习使用,未经允许,不得转载,不能用于商业目的。如需获取原版PDF全文,可搜索关注VX公众号SIGAICN。(https://0x9.me/dxRg5) ...
  • 此资源主要面向初级到中级数据科学家或分析师,他们有兴趣识别和应用机器学习算法以解决他们感兴趣的问题。 初学者在面对各种机器学习算法时提出的一个典型问题是“我应该使用哪种算法?”问题的答案取决于许多因素...
  • 使用以前出售数据的汽车的历史记录以及使用机器学习技术(例如监督学习)可以预测汽车的合理价格,在这里我还使用了机器学习算法(例如,Random Forest和Extra Tree Regression)以及强大的python库Scikit-Learn...
  • Python迁移学习:机器学习算法

    千次阅读 2020-12-16 10:46:30
    “终有一天,人工智能会像我们看待非洲平原上低级生物的化石一样看待我们。...为了更好地使用机器学习工具箱,我们需要先了解以下几种机器学习的分类方式。 基于是否有人工进行监督的分类如下。 .
  • 机器学习 机器学习与计算统计密切相关(并且经常与之重叠),该统计也侧重于通过使用计算机进行预测。 它与数学优化有着紧密的联系,后者为该领域提供了方法,理论和应用... 机器学习算法 NumPy 大熊猫 Matplotlib
  • 该存储库包含用于动态分支预测的机器学习算法的实现。 这些算法是: 感知器 具有全球/本地历史的感知器 学习矢量量化全局/本地历史 支持向量机(SVM)全局 支持向量机(SVM)本地 朴素贝叶斯 具有集合关联性的朴素...
  • [量化学院]机器学习有哪些常用算法

    千次阅读 2019-01-12 10:58:19
    导语:通过文章《什么是机器学习》我们大概知晓了机器学习,那么机器学习里面究竟有多少经典的算法呢?本文简要介绍一下机器学习中的常用算法。这部分介绍的重点是这些方法内涵的思想,数学与实践细节不会在这讨论。...
  • 机器学习综述及各算法特点

    千次阅读 2019-05-15 16:07:28
    机器学习有下面几种定义: “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。 “机器学习是对能通过经验自动改进的计算机算法的研究”。 “机器学习...
  • 机器学习中的最优化算法总结

    千次阅读 2019-03-26 08:37:27
    对于几乎所有机器学习算法,无论是有监督学习、无监督学习,还是强化学习,最后一般都归结为求解最优化问题。因此,最优化方法在机器学习算法的推导与实现中占据中心地位。在这篇文章中,小编将对机器学习中所使用的...
  • 机器学习算法应用场景实例

    千次阅读 2018-05-25 09:39:32
    机器学习算法应用场景实例六十则 标签: 人工智能数据挖掘机器学习竞赛算法 2016-12-14 22:19 8217人阅读 评论(2) 收藏 举报  分类: 竞赛(4)  版权声明:本文为博主原创文章,未经博主允许不得...
  • 机器学习建模流程涉及到几个重要的步骤,如下图所示。在下面的篇章中,我们就每一个步骤展开讨论。 数据收集 获得有效的数据是建模的第一个步骤。这个过程可能是一次性的,也有可能是长期的,需要仔细...
  • 机器学习算法与模型的区别

    千次阅读 2020-07-15 11:03:00
    来源:AI前线本文约2528字,建议阅读6分钟。本文介绍机器学习“算法”和“模型”之间的区别。机器学习涉及到机器学习算法和模型的使用。对于初学者来说,这很容易让人混淆,因为“机器学习算法...
  • 写这篇文章的目的,就是希望它可以让有志于从事数据科学和机器...我也会写下对于各种机器学习算法的一些个人理解,并且提供R和Python的执行代码。读完这篇文章,读者们至少可以行动起来亲手试试写一个机器学习的程序。
  • 机器学习算法线上部署方法

    千次阅读 2017-01-13 10:59:19
    作者:潘鹏举,携程酒店研发BI经理,负责酒店服务相关的业务建模工作,主要研究方向是用机器学习实现业务流程自动化、系统智能化、效率最优化,专注于算法实践和应用。 我们经常会碰到一个问题:用了复杂的GBDT或者...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,998
精华内容 33,999
热门标签
关键字:

机器学习算法历史