借助各种库和框架,我们只需一行代码就可以实现机器学习算法。有些更进一步,允许您同时实施和比较多个算法。易用性有一些缺点。我们可能会忽略这些算法背后的关键概念或思想,而这些概念或思想对于充分理解它们至关重要。在这篇文章中,我将提到关于7种机器学习算法的7个关键点。我想指出,这并没有完全解释算法,所以如果你对它们有一个基本的了解会更好。开始吧。1.SupportVectorMachine(SVM)关键点:C参数SVM创建一个决策边界来区分两个或多个类。SoftmarginSVM试图解决具有以下目标的优化问题:增加决策边界与类(或支持向量)的距离最大化训练集中正确分类的点数。这两个目标之间存在明显的权衡。决策边界可能必须非常接近特定类别才能正确标记所有数据点。然而,在这种情况下,新的观察结果可能不太准确,因为决策边界对噪声和自变量的微小变化过于敏感。另一方面,可以为每个类设置尽可能大的决策边界,但代价是一些错误分类的异常。这种折衷是由c参数控制的。C参数为每??个错误分类的数据点增加了惩罚。如果c较小,则对误分类点的惩罚较低,因此以较大的误分类数为代价选择具有较大边距的决策边界。如果c很大,SVM会尝试最小化由于高惩罚而导致的错误分类示例的数量,从而导致决策边界的边际更小。对于所有错误分类的例子,惩罚是不一样的。它与到决策边界的距离成正比。2.决策树要点:信息获取在选择要拆分的特征时,决策树算法试图实现:更可预测更少杂质更低熵熵是不确定性或随机性的度量。变量的随机性越大,熵就越高。具有均匀分布的变量具有最高的熵。例如,掷骰子有6种可能的结果,概率相等,因此它具有均匀分布和高熵。>熵与随机性选择导致更纯粹的节点分裂。所有这些都表明“信息增益”,基本上是分裂前后熵的差异。3.随机森林要点:Bootstrap和函数随机性随机森林是许多决策树的集合。随机森林的成功在很大程度上取决于使用不相关的决策树。如果我们使用相同或非常相似的树,整体结果将与单个决策树的结果无法区分。随机森林通过引导和特征随机性实现不相关的决策树。Bootstrapping是从训练数据中随机选择样本进行替换。它们被称为引导加载程序样本。特征随机性是通过为随机森林中的每个决策树随机选择特征来实现的。随机森林中每棵树使用的特征数量可以通过max_features参数控制。>特征随机性4。gradientboosting决策树的要点:学习率和n_estimatorsGBDT是决策树和boosting方法的结合,也就是说决策树是顺序连接的。学习率和n_estimator是用于梯度提升决策树的两个关键超参数。学习率只是表示模型学习的速度。慢速学习的好处是模型变得更健壮和通用。然而,缓慢的学习是有代价的。训练模型需要更多时间,这给我们带来了另一个重要的超参数。n_estimator参数是模型中使用的树的数量。如果学习率低,我们需要更多的树来训练模型。但是,我们在选择树的数量时需要非常小心。使用过多的树会产生过度拟合的高风险。5.朴素贝叶斯分类器要点:朴素假设有什么好处?朴素贝叶斯(NaiveBayes)是一种用于分类的有监督机器学习算法,因此任务是寻找观察的类型。朴素贝叶斯分类器计算给定一组特征值(即p(yi|x1,x2,...,xn))的类的概率。朴素贝叶斯假设特征相互独立,特征之间没有相关性。然而,现实生活中并非如此。这种特征不相关的天真假设是该算法被称为“天真的”的原因。与复杂算法相比,所有功能都是独立的假设使其非常快。在某些情况下,速度比精度更重要。适用于高维数据,如文本分类、垃圾邮件检测等。6.K-最近邻要点:何时使用和不使用K-最近邻(kNN)是一种监督机器学习算法,可用于解决分类和回归任务。kNN的主要原理是数据点的值由它周围的数据点决定。随着数据点数量的增加,kNN算法变得非常慢,因为模型需要存储所有数据点以计算它们之间的距离。这个原因也使得算法内存效率低下。另一个缺点是kNN对离群点很敏感,因为离群点会影响最近的点(即使它们离得太远)。积极的一面:简单易懂不做任何假设,因此可以在非线性任务中实现。适用于多类别分类适用于分类和回归任务7.K-MeansClusteringKeyPoints:WhentoUseandNottoUseK-MeansClustering旨在将数据分成k个簇,使得数据点在同一簇中相似,而不同簇中的数据点相距较远。K-means算法无法猜测数据中存在多少簇。集群的数量必须预先确定,这可能是一项艰巨的任务。该算法随着样本数量的增加而变慢,因为在每一步,它都会访问所有数据点并计算距离。K-means只能绘制线性边界。如果数据中存在分离组的非线性结构,则k-means将不是一个好的选择。积极的一面:易于解释相对较快可扩展到大型数据集可以智能地选择初始质心的位置,从而加快收敛速度??保证融合我们已经介绍了每种算法的一些关键概念。给出的要点和注释绝不是算法的完整描述。然而,理解在实现这些算法时必须做一些事情当然很重要。
