机器学习遇到问题一览

1. 机器学习遇到问题概述

了解场景和目标

了解评估准则

认识数据

数据预处理(清洗,调权)

特征工程

模型调参

模型状态分析

模型融合

2. 机器学习算法简述

按照不同的分类标准,可以把机器学习的算法做不同的分类。

2.1 从机器学习问题角度分类

我们先从机器学习问题本身分类的角度来看,我们可以分成下列类型的算法:

机器学习中有一大部分的问题属于『监督学习』的范畴,简单口语化地说明,这类问题中,给定的训练样本中,每个样本的输入xx都对应一个确定的结果yy,我们需要训练出一个模型(数学上看是一个x→yx→y的映射关系ff),在未知的样本x′x′给定后,我们能对结果y′y′做出预测。
 

3.1 数据预处理

  • 数据清洗 
  1. 不可信的样本丢掉
  2. 缺省值极多的字段考虑不用 
  • 数据采样
  1.  下/上采样
  2.  保证样本均衡
  • 工具

      hive sql/spark sql

 

3.2 特征工程

  1. 数值型
  2. 类别型
  3. 时间类
  4. 文本型
  5. 统计型
  6. 组合特征

1.从文本中抽取特征

2. 标准化、取均值、方差

Sklearn数据预处理

参考两个文档:1.sklearn数据预处理文档 2.API Reference

3.2.1 标准化

去除均值和方差缩放:通过(X-X_mean)/std计算每个属性(每列),进而使所有数据聚集在0附近,方差为1.

(1)、sklearn.preprocessing.scale() 
直接将给定数据进行标准化

X_scaled.mean(axis=0)
array([ 0.,  0.,  0.])

X_scaled.std(axis=0)
array([ 1.,  1.,  1.])

 

(2)、sklearn.preprocessing.StandardScaler() 

可保存训练集中的均值、方差参数,然后直接用于转换测试集数据。

3.2.2 缩放到指定范围 Scaling & Binarization

将属性缩放到一个指定的最大和最小值(通常是1-0)之间,这样处理可对方差非常小的属性增强其稳定性,也可维持稀疏矩阵中为0的条目。 但这里我们会有一个binarization,是保留我们最想要的最大值以及最小值,如下所示,太大的我们不要,太小的我们不取,也就是将连续值切除。

preprocessing.MinMaxScaler(feature_range=(0, 1), copy=True) 
计算公式: 
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) 
X_scaled = X_std * (max - min) + min 
其中 
feature_range : tuple (min, max), default=(0, 1)

minmaxscaler = preprocessing.MinMaxScaler().fit(X)
minmaxscaler.transform(X)
array([[ 0.5       ,  0.        ,  1.        ],
       [ 1.        ,  0.5       ,  0.33333333],
       [ 0.        ,  1.        ,  0.        ]])
minmaxscaler.scale_
array([ 0.5       ,  0.5       ,  0.33333333])
minmaxscaler.min_ 
 array([ 0.        ,  0.5       ,  0.33333333])

3.2.3 对值进行一个Encoding

3.2.4 正则化

对每个样本计算其p-范数,再对每个元素除以该范数,这使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。如果后续要使用二次型等方法计算两个样本之间的相似性会有用。 
preprocessing.Normalizer(norm=’l2’, copy=True)

normalizer = preprocessing.Normalizer().fit(X)
normalizer.transform(X)
array([[ 0.40824829, -0.40824829,  0.81649658],
       [ 1.        ,  0.        ,  0.        ],
       [ 0.        ,  0.70710678, -0.70710678]])

3.3 特征选择

特征选择文档

  • 过滤型
from sklearn.feature_selection import SelectKBest
  • 包裹型
from sklearn.feature_selection import RFE

对特征重要度进行排序,后剔出特征

  • 嵌入型
  1.  feature_selection.SelectFromModel
  2. Linear model,L1正则化

L1正则化后,对结果影响不大的特征权重会变成0,会基于模型来做Selection

3.4 模型选择 

3.5 模型参数选择 

  • 交叉验证(cross validation)

参考链接:Link1

3.6 模型状态评估 

3.6.1 模型状态 

  • 过拟合(overfitting/high variance)
  • 欠拟合(underfitting/high bias) 

      

3.6.2 学习曲线 

                         

 

具体参考我的github链接:

                    

3.7 模型融合

  1. 群众的力量是伟大的,集体智慧是惊人的
  • Bagging 
  • 随机森林/Random forest 

     2. 站在巨人的肩膀上,能看得更远

  • 模型stacking 

     3.一万小时定律 

  • Adaboost
  • 逐步增强树/Gradient Boosting Tree

3.7.1 模型融合:Bagging 

  1. 模型很多时候效果不好的原因是什么?Overfitting
  2. 如何缓解?
  • 少给点题,别让它死记硬背这么多东西
  • 多找几个同学来做题,综合一下他们的答案

1. 用一个算法
Ø 不用全部的数据集,每次取一个子集训练一个模型
Ø 分类:用这些模型的结果做vote 
Ø 回归:对这些模型的结果取平均

2.用不同的算法 
Ø 用这些模型的结果做vote 或 求平均

                        

3.7.2 模型融合:Stacking

1. 用多种predictor结果作为特征训练 

         

                                         

3.7.3 模型融合:Boosting

Adaboost
问: 考得不好的原因是什么?
1. 还不够努力,练习题要多次学习
    重复迭代和训练
2. 时间分配要合理,要多练习之前做错的题
    每次分配给分错的样本更高的权重
3. 我不聪明,但是脚踏实地,用最简单的知识不断积累,成为专家
    最简单的分类器的叠加

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值