【机器学习】集成学习方法,从入门到使用

讲得详细。其中的代码通俗易懂,只有几行就说清了组合分类器。

python-机器学习工具,不用亲自实现细节。

train_test_split函数用于将矩阵随机划分为训练子集和测试子集,并返回划分好的训练集测试集样本和训练集测试集标签。非常好用。其中,random_state是随机数的种子,种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。

讲到统计特征和数据处理实例,很具体。特征选择和降维是干货。

数值型数据:

  1. 幅度调整/归一化:python-sklearn包中会有一些函数比如preprocessing.MinMaxScaler()将幅度调整到 [0,1] 区间。
  2. 统计值:包括max, min, mean, std等。python中用pandas库序列化数据后,可以得到数据的统计值。 
  3. 离散化:把连续值转成非线性数据。例如电商会有各种连续的价格表,从0.03到100元,假如以一元钱的间距分割成99个区间,用99维的向量代表每一个价格所处的区间,1.2元和1.6元的向量都是 [0,1,0,…,0]。pd.cut() 可以直接把数据分成若干段。
  4. 柱状分布:离散化后统计每个区间的个数做柱状图。

类别、时间、文本、统计、组合特征见这里:https://blog.csdn.net/joycewyj/article/details/51647036

如果对以上两个连接讲得不清楚,看一个具体相亲例子:https://blog.csdn.net/han_xiaoyang/article/details/50481967

接着上面的特征处理,最难处理的是类别变量的编码,看这篇文章。

作者回答了“连续值的离散化为什么会提升模型的非线性能力?”

简单的说,使用连续变量的LR模型,模型表示为公式(1),而使用了one-hot或哑变量编码后的模型表示为公式(2)

     

式中表示连续型特征,分别是离散化后在使用one-hot或哑变量编码后的若干个特征表示。这时我们发现使用连续值的LR模型用一个权值去管理该特征,而one-hot后有三个权值管理了这个特征,这样使得参数管理的更加精细,所以这样拓展了LR模型的非线性能力。

  这样做除了增强了模型的非线性能力外,还有什么好处呢?这样做了我们至少不用再去对变量进行归一化,也可以加速参数的更新速度;再者使得一个很大权值管理一个特征,拆分成了许多小的权值管理这个特征多个表示,这样做降低了特征值扰动对模型为稳定性影响,也降低了异常数据对模型的影响,进而使得模型具有更好的鲁棒性

列举出常见的文本特征,比如单词数、句子长度、特殊字符数、大写单词数、Word Embedding、Sentiment Analysis、Term Frequency-Inverse Document Frequency (TF-IDF)

关于python自然语言处理中 Word Embedding与Word2Vec:https://www.cnblogs.com/DjangoBlog/p/8001047.html

 

填充NaN的方法要取决于特定情况! 
填充缺失值常用的方法有以下三种:

将NaN替换为一个常数,如-1,-999等等。 
这种方法可以认为是将缺失值看成了一个单独的类别。这种方法的缺点是线性网络的性能会受到影响。
将NaN替换为均值或者中位数、众数等。 
这种方法通常对简单线性模型和神经网络有益。但是对基于树的模型而言,首先选择缺失值的对象可能会更困难。
通过已有的值构建出缺失值的值,例如可以专门通过一个模型来预测缺失值。
一些模型自带缺失值处理功能,不用专门再处理缺失值,如XGBoost和CatBoost。

CatBoost:比XGBoost更优秀的GBDT算法:http://ai.51cto.com/art/201808/582487.htm

针对 GBDT 算法,在学术界和工业界有许多开源的算法包。著名的包括 University of Washington 的陈天奇开发的 XGBoost ,微软的 LightGBM ,还有 Yandex 公司开发的 CatBoost 。

XGBoost 被广泛的应用于工业界,LightGBM 有效的提升了 GBDT的计算效率, 而 Yandex 的 CatBoost 号称是比 XGBoost 和 LightGBM 在算法准确率等方面表现更为优秀的算法。

第一种是过采样、重采样,比如按图片类别进行均衡采样。优点是简单,缺点是容易过拟合。

第二种是k-fold交叉验证,把原始数据随机分成K个部分,在这K个部分中选择一个作为测试数据,剩余的K-1个作为训练数据。交叉验证的过程实际上是将实验重复做K次,每次实验都从K个部分中选择一个不同的部分作为测试数据,剩余的数据作为训练数据进行实验,最后把得到的K个实验结果平均。(链接

第二种是算法层面改进,比如增加小样本错分的惩罚代价,并将此代价直接体现在目标函数里。代价敏感的方法可概括为两种, 一则基于代价敏感矩阵,一则基于代价敏感向量。注意:在评价模型好坏的时候也需要考虑样本权重问题。GBoost已经是一个很好的起点。

三招提升数据不平衡模型的性能(附python代码)http://www.raincent.com/content-10-11699-1.html

[深度学习] 不平衡样本的处理https://blog.csdn.net/siyue0211/article/details/80318999

机器学习练习(八)—— 异常检测与推荐https://blog.csdn.net/And_w/article/details/56481864

sklearn中 F1-micro 与 F1-macro区别和计算原理https://www.cnblogs.com/techengin/p/8962024.html

f1_score中关于参数average的用法描述:

'micro':Calculate metrics globally by counting the total true positives, false negatives and false positives.

'micro':通过先计算总体的TP,FN和FP的数量,再计算F1(会给样本不平衡的类别不同的比重)

'macro':Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account.

'macro':分布计算每个类别的F1,然后做平均(各类别F1的权重相同)

 

 

发布了392 篇原创文章 · 获赞 492 · 访问量 241万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览