生成不可估量的数据已成为开发更高级和复杂的机器学习技术的需要。 促进机器学习就是一种可以用来解决复杂的数据驱动的现实世界问题的技术。
想了解为什么使用增强吗?
提升在机器学习中意味着什么
提升算法如何工作?
有哪些不同类型的助推器?
- 自适应提升
- 梯度提升
- XGBoost
了解如何使用增强型机器学习算法来提高模型的准确性?
为什么我们正确地使用增强型机器学习技术?
让我们了解是什么导致了增强机器学习的需求。 为了解决复杂而复杂的问题,我们现在需要更先进的技术。
三种类型的增强功能:自适应增强,梯度增强和XGBoost
自适应提升是通过将几个弱学习者组合成一个强学习来实现的。 自适应增强首先从为所有数据点分配相等权重边开始,然后为唯一的输入功能绘制决策树桩,因此下一步是从第一个决策树桩获得的结果,并对其进行分析
如果有任何观察结果分类错误,则可以正确分配较高的权重。 之后,通过考虑较高压力的表示更为重要,得出新的决策树桩。
因此,无论哪个数据点被错误分类,它们都会被赋予更高的权重,在下一步中,您将绘制另一个决策树桩,该决策树通过更加重视具有较高权重年龄的数据点来尝试对数据点进行分类。
自适应增强将一直循环,直到所有观察结果都归入正确的类为止。 此处的最终目标是确保将所有数据点分类为正确的课程
梯度提升也基于顺序学习和符号学习模型。 基础学习器是按顺序生成的,以使当前的学习器始终比前一个学习器更有效。 现在,随着每次迭代,整体模型都将依次改善。
这种提升的区别在于,错误分类结果的权重不会增加。 相反,在增加梯度的过程中,您尝试通过添加结合了弱学习者的新自适应模型来优化前一学习者的损失函数。
这恰好降低了损耗功能。 这里的主要思想是克服先前学习者的预测中的错误
梯度提升具有三个主要组成部分 。 损失函数是需要优化的函数(减少错误)。您必须继续添加一个模型,该模型将对前一个学习者的损失函数进行正则化。 就像自适应增强一样,梯度增强也可以用于分类和回归。
XGBoost倾向于填充缺失值。 以下代码中提到了此方法
import xgboost as xgb
model=xgb.XGBClassifier(random_state= 1 ,learning_rate= 0.01 )
model.fit(x_train, y_train)
model.score(x_test,y_test)
0.82702702702702702
参数:
- 线
- eta
- min_child_weight
- max_depth
- max_depth
- max_leaf_nodes
- 伽玛
- 子样本
- colsample_bytree
XGBoost是渐变增强的高级版本
这意味着极高的梯度增强。 提升属于分布式机器学习社区的范畴。 XGBoost是梯度增强方法的更高级版本。 该算法的主要目的是提高速度并提高比赛效率
为什么是这种模式?
以下代码用于XGBoost。
# importing required libraries
import pandas as pd
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
# read the train and test dataset
train_data = pd.read_csv( 'train-data.csv' )
test_data = pd.read_csv( 'test-data.csv' )
# shape of the dataset
print( 'Shape of training data :' ,train_data.shape)
print( 'Shape of testing data :' ,test_data.shape)
# Now, we need to predict the missing target variable in the test data
# target variable - Survived
# seperate the independent and target variable on training data
train_x = train_data.drop(columns=[ 'Survived' ],axis= 1 )
train_y = train_data[ 'Survived' ]
# seperate the independent and target variable on testing data
test_x = test_data.drop(columns=[ 'Survived' ],axis= 1 )
test_y = test_data[ 'Survived' ]
创建XGBoost模型的对象
您还可以在此处添加其他参数并测试代码
一些设置是: max_depth
和n_estimators
model = XGBClassifier()
# fit the model with the training data
model.fit(train_x,train_y)
# predict the target on the train dataset
predict_train = model.predict(train_x)
print( '\nTarget on train data' ,predict_train)
# Accuray Score on train dataset
accuracy_train = accuracy_score(train_y,predict_train)
print( '\naccuracy_score on train dataset : ' , accuracy_train)
# predict the target on the test dataset
predict_test = model.predict(test_x)
print( '\nTarget on test data' ,predict_test)
# Accuracy Score on test dataset
accuracy_test = accuracy_score(test_y,predict_test)
print( '\naccuracy_score on test dataset : ' , accuracy_test)
之所以引入XGBoost,是因为梯度提升算法正在以较长的速率计算输出,因为对数据集进行了顺序分析并且需要更长的时间
XGBoost专注于您的速度和模型效率。 为此,XGBoost具有几个功能。 它通过创建决策树来支持并行化。 计算方法中没有顺序建模可用于评估任何大型和复杂模块
在我的课程中,一个又一个问题是:“我在哪里可以获得数据?” 这个问题有一些答案,但是最好的解决方案取决于您要学习的内容。 数据有各种形状和大小。
请记住,一些最好的学习来自于处理数据。 考虑到要尝试使用数据回答的问题是一个好的开始。
机器学习是由多种工具,语言和技术构成的。 可以公平地说,没有一种解决方案适合大多数项目
反向传播算法-鲁棒机制
对于要学习的神经网络,您必须调整权重以消除大多数错误。 这可以通过执行错误的反向传播来完成。 对于使用Sigmoid函数作为其激活函数的简单神经元,您可以按照下面的步骤演示故障。
我们可以考虑将权重称为W并将输入项称为X的一般情况。使用此等式,可以对权重调整进行一般化,并且您会看到,这仅需要来自其他神经元水平的信息。 这就是为什么这是一种健壮的学习机制,并且被称为反向传播算法的原因。
通常,在实践中,某些类别的示例在培训数据中的代表性不足。 就是这种情况; 例如,当您的分类员必须区分真实的电子商务交易和欺诈性的电子商务交易时:实际销售的模式要频繁得多。 如果您使用带有软边距的SVM,则可以为错误分类的示例定义成本。 由于训练数据中总是存在噪音,因此,有很多真实交易的实例由于贡献成本而最终会落在决策边界的错误一侧。
其他不拆分训练数据的方法
提振除了将训练数据分为多个数据模型,我们还可以使用其他方法,例如鼓励为训练集优化最佳加权方案。
给定二进制分类模型(例如SVM,决策树,朴素贝叶斯分类器或其他),我们可以增强训练数据以改善结果。 假设您具有与刚刚介绍的1,000个数据点类似的培训,我们通常会在所有数据点都是必要或同等重要的前提下进行操作。
提升采用相同的想法,并从所有数据点均相等的假设开始。 但是我们凭直觉知道并非所有训练点都是相同的。 如果我们能够根据最相关的最优化加权每个输入,该怎么办? 这就是促进的目标。 许多算法都可以推广,但是最受欢迎的是XGBoost。