还记得 "无免费午餐 "定理吗?不,这不是关于食物(还不是)。但是如果你饿了,在读这篇文章之前先吃点东西--我不想让你的口水流满键盘。
我要提醒你--在所有可能情况的集合上,没有任何算法是最优的。机器学习算法是微妙的工具,你要根据问题集进行调整,特别是在监督机器学习中。
今天,我们将看到流行的分类算法是如何工作的,并帮助我们,例如,挑选和分类美妙、多汁的西红柿。
分类是如何工作的
我们每天都在预测一件事是否可以被称为一个特定的类别。举个例子,分类帮助我们在超市里挑选西红柿时做出决定("绿色"、"完美"、"腐烂")。用机器学习的术语来说,我们给我们手中的每一个西红柿分配一个类别的标签。
你的番茄采摘比赛(有人会称它为分类模型)的效率取决于其结果的准确性。你自己去超市的次数越多(而不是派你的父母或你的重要朋友去),你在挑选新鲜美味的西红柿方面就会变得越好。
计算机也是一样的!为了让分类模型学会准确预测结果,它需要大量的训练实例。
4种类型的分类
_(1).jpg)
二进制
二元分类是指有两个类别的工作,它们相互之间的关系是真和假。想象一下,你面前有一个巨大的拉杆箱,里面有黄色和红色的西红柿。但是,你的意大利面食谱上说,你只需要红色的。
你会怎么做?很明显,你使用标签编码,在这种情况下,把 "红色 "定为1,把 "非红色 "定为0。对西红柿进行分类从未如此简单。
.jpg)
多级分类
你在这张照片中看到了什么?
_(1).jpg)
红色的牛扒西红柿。樱桃西红柿。鸡冠花番茄。传家的西红柿。
这里没有黑白之分,没有像二元分类中的 "正常 "和 "不正常"。我们欢迎各种美妙的蔬菜(或浆果)进入我们的餐桌。
如果你不是西红柿烹饪爱好者,你可能不知道的是,不是所有的西红柿都同样适合做同一道菜。红牛角番茄非常适合做莎莎酱,但你不要腌制它们。樱桃西红柿适合做沙拉,但不适合做意大利面。因此,知道你在处理什么问题是很重要的。
多类分类法可以帮助我们将所有的西红柿从盒子里分类出来,不管有多少个类。
_(1).jpg)
多标签
多标签分类适用于一个输入可以属于一个以上的类别,比如一个人是两个国家的公民。
为了处理这种类型的分类,你需要建立一个可以预测多个输出的模型。
你需要一个多标签分类来识别照片中的物体。例如,当你不仅需要识别西红柿,还需要识别同一图片中的其他不同种类的物体:苹果、葫芦、洋葱等。
对所有西红柿爱好者来说,重要的是要注意:你不能只是把二元或多类分类算法,直接应用于多标签分类。但是你可以使用。
_(1).jpg)
你也可以尝试为每个类别使用单独的算法来预测每个类别的标签。
不平衡的
当每个类别中的例子分布不均时,我们就使用不平衡分类。
不平衡分类被用于欺诈检测软件和医疗诊断。在一大堆超市的西红柿中寻找不小心打翻的稀有精致的生物种植的西红柿,是我们厉害的编辑Gints提供的一个不平衡分类的例子(如果你有其他的例子,可以推送给我们)。
.jpg)
我推荐你访问机器学习大师的奇妙博客,在那里你可以阅读不同类型的分类,并学习更多的机器学习材料。
建立分类模型的步骤
一旦你知道你在处理什么样的分类任务,就该建立一个模型了。
- 选择分类器。你需要选择一种你将应用于数据的ML算法。
- 训练它。你必须准备一个带有标记结果的训练数据集(例子越多越好)。
- 预测输出。使用该模型来获得一些结果。
- 评估分类器模型。准备一个你在训练中没有使用过的验证数据集来检查结果是个好主意。
现在让我们来看看最广泛使用的分类算法。
最流行的分类算法
_(1).jpg)
Scikit-Learn是Python的顶级ML库之一。因此,如果你想建立你的模型,可以看看它。它提供了对广泛使用的分类器的访问。
Logistic回归
Logistic回归用于二进制分类。
这种算法采用了一个逻辑函数来模拟结果发生的概率。当你想了解几个独立变量如何影响一个结果变量时,它是最有用的。
例如问题。降水水平和土壤成分是否会导致番茄的繁荣或过早死亡?
逻辑回归有局限性;所有的预测因素都应该是独立的,而且不应该有缺失值。当数值没有线性分离时,这种算法会失败。
Naive Bayes
Naive Bayes算法是基于Bayes定理的。你可以将这种算法应用于二元和多类分类,并根据历史结果对数据进行分类。
任务示例:我需要根据外观将烂番茄和新鲜番茄分开。
Naive Bayes的优点是,这些算法的构建速度很快:它们不需要大量的训练集,与其他方法相比也很快速。然而,由于贝叶斯算法的性能取决于其强假设的准确性,结果有可能变得非常糟糕。
使用贝叶斯定理,就可以知道一个事件的发生是如何影响另一个事件的概率的。
k-最近的邻居
kNN代表 "k-最近的邻居",是最简单的分类算法之一。
该算法将对象分配到其在多维特征空间中的大多数最近的邻居所属的类别。数字k是特征空间中与分类对象相比较的相邻对象的数量。
例子:我想从与之相似的西红柿的种类中预测西红柿的种类。
为了使用k-近邻分类输入,你需要进行一系列的操作:
- 计算与训练样本中每个对象的距离。
- 选择训练样本中的k个物体,与这些物体的距离是最小的。
- 要分类的对象的类别是在k-近邻中出现频率最高的类别。
决策树
决策树可能是可视化决策过程的最直观的方式。为了预测输入的类别标签,我们从树的根部开始。你需要根据每个节点的决策规则,将可能性空间划分为更小的子集。
这里有一个例子。
_(1).jpg)
你不断分割可能性空间,直到你到达树的底部。每个决策节点都有两个或多个分支。上述模型中的叶子包含关于一个人是否适合的决定。
例子:你有一篮子不同的西红柿,想选择一个正确的西红柿来提高你的菜。
决策树的类型
有两种类型的树。它们是基于目标变量的性质:
- 分类变量决策树。
- 连续变量决策树。
因此,决策树对数字和分类数据都有很好的作用。使用决策树的另一个好处是,它们需要很少的数据准备。
然而,决策树可能变得过于复杂,从而导致过度拟合。这些算法的一个重要缺点是,训练数据的微小变化使它们不稳定,并导致全新的树。
随机森林
随机森林分类器在数据集的各种子样本上使用几个不同的决策树。平均结果被作为模型的预测,这从总体上提高了模型的预测准确性,并打击了过度拟合。
因此,随机森林可以用来解决复杂的机器学习问题而不影响结果的准确性。尽管如此,它们需要更多的时间来形成预测,而且实施起来更具挑战性。
支持向量机
支持向量机使用N维空间中的超平面来对数据点进行分类。这里的N是指特征的数量。基本上,它可以是任何数字,但它越大,建立一个模型就越难。
我们可以把超平面想象成一条线(对于二维空间)。一旦你通过3维空间,我们就很难将模型可视化。
落在超平面不同边上的数据点被归入不同的类别。
例子。一个自动系统根据西红柿的形状、重量和颜色来分类。
我们选择的超平面直接影响到结果的准确性。因此,我们要寻找在两个类的数据点之间有最大距离的平面。
当你有大量的特征时,SVMs以最小的计算能力显示出准确的结果。
总结
正如你所看到的,机器学习可以像在商店里挑选蔬菜一样简单。但是,如果你不想把它搞得一团糟的话,还有很多细节需要注意。