机器学习入门-4:算法

来源:https://www.cnblogs.com/subconscious/p/4107357.html
监督算法:
- 回归算法 (线性回归、逻辑回归)
- 神经网络
- SVM (支持向量机)
无监督算法:
- 聚类算法
- 降维算法
特殊算法:
- 推荐算法

回归算法
机器学习的入门算法。
原因:(1)简单,可以让人平滑地从统计学迁移到机器学习;(2)其他所有算法的基石。
两个重要子类:线性回归、逻辑回归。

线性回归就是我们前面说过的房价求解问题。如何拟合出一条最佳直线以匹配我所有的数据。一般使用“最小二乘法”来求解。
“最小二乘法”的思想是假设我拟合出的直线达标数据的真实值,而观测到的数据代表拥有误差的值。为了尽可能减少误差的影响,需要求解一条直线使所有误差的平方和最小。最小二乘法将最优问题转换为求函数极值问题。

逻辑回归是一种与线性回归非常类似的算法。线性回归处理的是数值问题,也就是最后预测出的结果是数字,如房价。而逻辑回归属于分类算法,也就是最后的结果是分类,如判断这封邮件是否是垃圾邮件、用户是否会点击此广告等。
实现方面,逻辑回归只对线性回归的计算结果加上一个Sigmoid函数,将数值结果转化为了0~1之间的概率。接着我们可以根据这个概率做预测,例如概率>0.5,则这个邮件是垃圾邮件、肿瘤是恶性肿瘤等等。从直观上来说,逻辑回归是画了一条分类线,如下图。
机器学习入门-4:算法
假设我们有一组肿瘤患者的数据,这些患者的肿瘤有些是良性的(途中蓝色),有些是恶性的(图中红色)。这里肿瘤的红蓝色可以被称为数据的“标签”。同时每个数据包含两个“特征”:患者的年龄与肿瘤大小。我们将这两个特征与标签映射到这个二维空间上,形成了上图的数据。
当我有一个绿色点时,我该判断这个肿瘤是恶性的还是良性的呢?根据红蓝点,我们训练出了一个逻辑回归模型,也就是图中的分类线。这时,根据绿点出现在分类线的右侧,我们判定它的标签是红色,也就是说属于恶性肿瘤。

逻辑回归算法划出的分类线基本都是线性的,这意味着当两类之间的界线不是线性时,逻辑回归的表达能力就不足。

神经网络
神经网络的诞生起源于对大脑工作机理的研究。
早期生物界学者们使用神经网络来模拟大脑。机器学习的学者们使用神经网络进行机器学习的实验,发现在视觉与语音的识别上效果都相当好。在BP算法(加速神经网络训练过程的数值算法)诞生以后,神经网络的发展进入了一个热潮。BP算法的发明人之一就是谷歌大脑负责人Geoffrey Hinton。

具体来说,神经网络的学习机理是什么?简单来说,就是分解与整合。在著名的Hubel-Wiesel试验中,学者们研究猫的视觉分析机理是这样的。
机器学习入门-4:算法
比方说,一个正方形,分解为4个折线进入视觉处理的下一层中,四个神经元分别处理一个折线。每个折线再继续被分解为两条直线,每条直线再被分解为黑白两个面。于是,一个复杂的图像变成了大量的细节进入神经元,神经元处理以后再进行整合,最后得出了看到的是正方形的结论。这就是大脑识别的机理,也是神经网络工作的机理。

让我们看一个简单的神经网络的逻辑架构。在这个网络中,分成输入层、隐藏层和输出层。输入层负责接收信号,隐藏层负责对数据的分解与处理,最后的结果被输出到输出层。每层中的一个圆代表一个处理单元,可以认为是模拟了一个神经元,若干个处理单元组成了一个层,若干个层在组成一个网络,也就是神经网络。
机器学习入门-4:算法
在神经网络中,每个处理单元事实上就是一个逻辑回归模型,逻辑回归模型接收上层的输入,把模型的预测结果作为输出传输到下一个层次。通过这样的过程,神经网络可以完成非常复杂的非线性类型。

下图演示神经网络在图像识别领域的一个著名应用,这个程序叫做LeNet,是一个基于多个隐层构建的神经网络。通过LeNet可以识别多种手写数字,并达到很高的识别精读与拥有较好的鲁棒性。
机器学习入门-4:算法
右下方的方形中显示的输入到计算机的图像,方形上方的红色字样“answer”后面显示的是计算机的输出。左边的三条竖直的图像列显示的神经网络中的三个隐藏层的输出,可以看出,随着层次的不断深入,越深的层次处理的细节越低,例如中间出了个处理的额基本都已经是线的细节了。LeNet的发明人就是Facebook人工智能实验室主任Yann Lecun。

进入90年代,神经网络的发展进入了一个瓶颈期。其主要原因是尽管有BP算法的加速,神经网络的训练过程仍然很困难,因此90年代后期支持向量机SVM算法取代了神经网络的地位。

SVM (支持向量机)
支持向量机算法是诞生于统计学习界,同时在机器学习界大放光彩的景点算法。
支持向量机算法从某种意义上来说,是逻辑回归算法的强化:通过给逻辑回归算法更严格的优化条件,支持向量机算法可以获得比逻辑回归更好的分类接线。但是如果没有某类函数技术,则支持向量机算法最多算是一种更好的线性分类技术。
但是,通过跟高斯“核”的结合,支持向量机可以表达出非常复杂的分类界线,从而达到很好的分类效果。“核”事实上就是一种特殊的函数,最典型的特征就是可以将低维度的空间映射到高维度的空间。
机器学习入门-4:算法
我们如何在二维平面划分出一个圆形的分界线?在二维平面中可能会很困难,但是通过“核”可以将二维空间映射到三维空间,然后使用一个线性平面就可以达到类似效果。也就是说,二维平面划分出的非线性分类界限可以等价于三维平面的线性分界线。于是,我们可以通过在三维空间中进行简单的线性划分就可以达到在二维平面中的非线性划分效果。

支持向量机是一种数学成分很浓的机器学习算法(相对的,神经挽留过则是由生物学成分)。在算法的核心步骤中,又一步证明,把数据从低维度映射到高维度也不会带来最后计算复杂性的提升。
于是,通过支持向量机算法,既可以保持计算效率,又可以获得非常好的分类效果。

聚类算法
前面的算法中的一个显著特征就是我的训练数据中包含了标签,训练出的模型可以对其他未知数据预测标签。在下面的算法找那个,训练数据都是不含标签的,而算法的目的是通过训练,推测出这些数据的标签。这类算法有一个统称,即无监督算法。最代表的就是聚类算

让我们还拿一个二维的数据来说,某一个数据包含两个特征。我希望通过聚类算法,给他们中不同的种类打上标签,我该怎么做?简单来说,聚类算法就是计算种群中的距离,根据距离的远近将数据划分为多个族群。

聚类算法中最典型的是K-Means算法。

降维算法
降维算法也是一种无监督学习算法,其主要特征是将数据从高维度降到低维层次。在这里,维度其实表示的是数据的特征量的大小。例如,房价包含长、宽、面积和房间数量四个特征,也就是维度为4的数据。可以看出来,长与宽事实上与面积表示的信息重叠了,例如面积=长*宽。通过降维算法,我们可以除去冗余信息,将特征减少为面积与房间数量两个特征,即从4维数据压缩到2维。于是,我们将数据从高维降到低维,不仅利于表示,同时在计算上也能带来加速。
降维算法的主要作用是压缩数据与提升机器学习其他算法的效率。通过降维算法,可以将具有几千个特征的数据压缩到若干个特征。另外一个好处是数据的可视化,例如将5维数据压缩到2维,就可以用二维平面来可视。
降维算法的主要代表是PCA算法(即主要成分分析算法)。

推荐算法
推荐算法是目前业界非常火的个一种算法,在电商界,如亚马逊、天猫、京东等都得到了广泛的运用。推荐算法的主要特征就是可以自动向用户推荐他们最感兴趣的东西,从而增加购买率,提升效益。

推荐算法有两个主要类别:
一类是基于物品内容的推荐,是将与用户购买的内容近似的物品推荐给用户,这样的前提是每个物品都有若干个标签,因此才可以找出与用户购买物品类似的物品,这样推荐的好处是关联程度大,但是由于每个物品都需要贴标签,因此工作量巨大。
另一类是基于用户相似度的推荐,则是将于目标用户兴趣相同的其他用户购买的东西推荐给目标用户。例如小A历史上购买了物品B和C,经过算法分析,发现另一个与小A相似的用户小D购买了物品E,于是将物品推荐给小A。
两类推荐都有各自的优缺点,在一般的电商应用中,一般是两类混合使用。推荐算法中最有名的算法就是协同过滤算法。

其他
除了以上算法之外,机器学习界还有其他的如高斯判别,朴素贝叶斯,决策树等等算法。但是上面列的六个算法是使用最多,影响最广,种类最全的典型。机器学习界的一个特色就是算法众多,发展百花齐放。