赞
踩
算法分类汇总:
算法集成有三种方式(bagging ,Boosting,Stacking), 常见集成算法:
Adaboost (adaptive boosting: boosting + 单层决策树): 训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,这些权重都初始化成相等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在统一数据集上再训练分类器。在第二次训练中,会调高那些前一个分类器分类错误的样本的权重。如此反复,训练出许多分类器来进行加权投票,每个分类器的权重是基于该分类器的错误率计算出来的。
GBDT (Gradient Boosting Decision Tree: boosting + 决策树):GBDT与Adaboost类似,反复训练出多个决策树,每次更新训练集的权重是按照损失函数负梯度的方向。过程比较复杂,这里不赘述。参数说明:n_estimators是弱分类器个数;max_depth或max_leaf_nodes可以用来控制每棵树的规模;learning_rate是hyper-parameter,取值范围为(0, 1.0], 用来控制过拟合与欠拟合。
决策树还有个兄弟回归树,GBDT也有个兄弟GBRT用来做回归:
自己设计: 根据bagging或者boosting思想,自己选择弱分类器来集成: 比如knn集成算法
召回率和精确率:
召回率(Recall): 表示的是样本中的正例有多少被预测正确了(找得全)所有正例中被正确预测出来的比例。 # 本来是正确值同时预测值为正确值的比例
用途:用于评估检测器对所有待检测目标的检测覆盖率
精确率(Precision): 表示的是预测为正的样本中有多少是真正的正样本(找得对)。预测结果中真正的正例的比例。
用途:用于评估检测器在检测成功基础上的正确率
可参考博客: 八种常见回归算法解析及代码
聚类算法是无监督学习的一种算法,也就是说,并没有一批已经打好标签的数据供机器训练模型。因此该算法用于在数据中寻找数据间隐藏的联系和区别。通过聚类后形成几个集合,集合内部的元素间具有较高的相似度,相似度的衡量可以通过欧几里得距离、概率距离、加权重距离计算。
常见的聚类算法有:
1.划分聚类: K-means 算法、k-medoids算法、K-pototypes算法、CLARANS算法
2.层次聚类:BIRCH算法、CURE算法、
3.密度聚类:DBSCAN算法、OPTICS算法、DENCLUE算法
4.网格聚类:STING算法、CLIQUE算法、WAVE-CLUSTER算法
5.混合聚类:高斯混合模型 (符合正太分布的聚类) 、CLIQUE算法(综合密度和网格的算法)
几个聚类算法的简单对比:
分类算法要求先向模型输入数据的训练样本,从训练样本中提取描述该类数据的一个函数或模型。通过该模型对其他数据进行预测和归类,分类算法是一种对离散型随机变量建模或预测的监督学习算法,同时产生离散的结果。比如在医疗诊断中判断是否患有癌症,在放贷过程中进行客户评级等。
常见的分类算法:
1.决策树:ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ、SPRINT算法;
2.神经网络:BP网络、径向基RBF网络、Hopfield网络、随机神经网络(Boltzmann机)、竞争神经网络(Hamming网络,自组织映射网络);
3.贝叶斯:朴素贝叶斯(Naive Bayes)算法、TAN算法;
4.基于关联规则的分类:CBA算法、ADT算法、CMAR算法、ARCS算法;
5.混合分类方法:Bagging算法、Boosting算法
6.支持向量机:SVM
7. K近邻:(K-Nearest Neighbor, KNN)knn
回归算法与分类算法一样都是有监督的学习算法,因此也需要先向模型输入数据的训练样本。但是与分类算法的区别是,回归算法是一种对数值型连续随机变量进行预测和建模的监督学习算法,产生的结果也一般是数值型的。
例如向已经训练好的回归模型中输入一个人的数据,判断此人20年后的经济能力,则模型的回归结果是连续的,往往得到一条回归曲线。当自变量改变时,因变量呈现连续型变化。
常见的回归算法:
1.线性回归/逻辑回归(LogisticRegression)/多项式回归:LR算法、LWLR算法(局部加权)、LRCV算法(交叉验证)、MLP算法(神经网络); (信用卡反欺诈项目 lgr)
2.逐步回归;
3.岭回归;
4.LASSO回归;
5.ElasticNet回归;
多项式回归:数据升维, 数据不够时防止欠拟合, 通常是使用现有参数相乘, 或者自身平方达到增加数据量的目的。
集成算法有三种(bagging ,Boosting,Stacking)
LightGBM: 该算法也是基于GBDT算法的改进,,但相较于GBDT、XGBoost算法, LightGBM算法有效地解决了处理海量数据的问题。 (天猫复购项目)
GBDT算法的基本思想是把上一轮的训练残差作为下一轮学习器训练的输入,即每一次的输入数据都依赖于上一次训练的输出结果。因此,这种训练迭代过程就需要多次对整个数据集进行遍历,当数据集样本较多或者维数过高时会增加算法运算的时间成本,并且消耗更高的内存资源。
而XGBoost算法作为GBDT的一种改进,在训练时是基于一种预排序的思想来寻找特征中的最佳分割点,这种训练方式同样也会导致内存空间消耗极大,例如算法不仅需要保存数据的特征值,还需要保存特征排序的结果;在遍历每一个分割点的时候,都需要进行分裂增益的计算,消耗的代价大,特别是当数据量级较大时,这种方式会消耗过多时间。
为了对这些问题进行优化,2017年微软公司提出了LightGBM算法(Light Gradient Boosting Machine),该算法也是基于GBDT算法的改进,,但相较于GBDT、XGBoost算法,LightGBM算法有效地解决了处理海量数据的问题,在实际应用中取得出色的效果。LightGBM算法主要包括以下几个特点:直方图算法(寻找最佳分裂点、直方图差加速)、Leaf-wise树生长策略、GOSS、EFB、支持类别型特征、高效并行以及Cache命中率优化等。
- param_grid = {'C': [0.01,0.1, 1, 10, 100, 1000,],'penalty': [ 'l1', 'l2']}
- # 确定模型LogisticRegression,和参数组合param_grid ,cv指定10折
- grid_search = GridSearchCV(LogisticRegression(),param_grid,cv=10)
- grid_search.fit(X_train, y_train) # 使用训练集学习算法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。