美文网首页
机器学习:数据处理、算法选择、算法验证

机器学习:数据处理、算法选择、算法验证

作者: moon_light_ | 来源:发表于2020-02-06 01:39 被阅读0次
1. 数据处理
  • 转换数据格式
     比如将名称用数字表示、浮点数转为整数
  • 特征值的类型
     离散型还是连续型,这会影响算法的选择
  • 特征值的提取
     去掉没用的数据比如 ID 值
     去掉发生频率太低的特征
     直接提取有用的特征
     需要的话整合特征,比如
       取一段时间内的均值做特征值
       取两列数据的和做特征值
       取两列数据的皮尔逊相关系数 (Pearson Correlation Coefficient) 做特征值
  • 特征值编码
     比如一个特征有5个值,自然顺序编码可以用 1~5 代替,独热编码用 00001、00010 表示
  • 特征值缺失
     照样使用、扔掉、还是填补
     填补方式
       取特殊值如 -1、0、Null 填补
       取均值填补
       极大似然估计、建模预测、高维映射、多重插补等
  • 标签值缺失
     扔掉
  • 重复数据
     扔掉还是照样使用
  • 异常值 (outlier) 处理
     扔掉、鲁棒回归、或者使用对数或者高斯核对其转换
  • 归一化
     为防有些特征值权重太大,进行归一比如通过
       \small newValue = (oldValue - min)/(max - min)
     可以转化为 0 到 1 的值
  • 标准化
    \small newValue = (oldValue - mean)/std    ## 减去平均值,再除以方差
  • 正则化
     作用是降维?减少特征?
  • 降维
     用于减少特征数量或是样本数量,只保留重要的数据,比如算法 PCA 和 SVD
      PCA(主成分分析)
       取 N 个方差最大且相互正交的方向,进行矩阵转换,步骤如下
       1. 先计算数据集的协方差矩阵 covMat
       2. 再通过下面的代码求 covMat 的特征值向量和特征向量矩阵
          \small np.linalg.eig(np.mat(covMat))
       3. 取最大的 N 个特征值
       4. 使用新的特征向量矩阵将原始数据集矩阵转换到只有 N 个特征值的新的数据集
      SVD (奇异值分解)
       取 N 个最大的奇异值,进行矩阵转换,步骤如下
       1. 分解原数据矩阵 \small Data(m,n) = U(m,m) * Σ(m,n) * VT(n,n),代码如下
          \small U,Sigma,VT = np.linalg.svd(data)
       2. 其中 \small Σ(m,n) 只有对角线有值,取最大的 r 个值为新矩阵 SigmaR,则
          \small Data(m,n) ≈ U(m,r) * Σ(r,r) * V.T(r,n)
       3. 然后通过下面代码对原数据进行压缩
          \small dataNew = U[:,:r]*SigmaR*VT[:r,:]
  • 存储空间
     可否使用稀疏矩阵减少空间
  • 非均衡分类
     主要以下两种
      1. 正反例数目相差大,可以用过抽样和欠抽样方法来调节正反例数目
      2. 算法要考虑分类错的代价,如垃圾邮件分到收件箱和正常邮件分到垃圾箱后果不同
     混淆矩阵
      \small a[i][j]:  预测 i 类型结果出现的是 j 类型的次数,完美的分类器非对角元素均为 0
      \small TP:   预测 +1 结果是 +1
      \small TN:   预测 -1 结果是 -1
      \small FP:   预测 +1 结果是 -1
      \small FN:   预测 -1 结果是 +1
     正确率:
      \small TP/(TP+FP)    ## FN 代价比较小则更关注正确率
     召回率
      \small TP/(TP+FN)    ## FN 代价比较大则更关注召回率
     ROC 曲线
      横轴是 \small FP/(FP+TN)、纵轴是 \small TP/(TP+FN)
      曲线下的面积给出的是分类器的平均性能值
  • 数据可视化
     选择哪些特征,用什么图形显示,当特征太多时很难在一个图中显示出来
2. 算法选择
  • 想要预测目标变量的值,可以选择监督学习算法,进一步确定目标变量类型,如果目标变量是离散型可以选择分类器算法,如果目标变量是连续型的数值则需要选择回归算法
  • 不用预测目标变量的值,可以选择无监督学习算法,进一步分析是否需要将数据划分为离散的组,如果这是唯一需求,则使用聚类算法,如果还要估计数据与每个分组的相似程度,则需要使用密度估计算法
  • 多数情况下,上面的方法都能帮助选择恰当的机器学习算法,但这也并非一成不变
  • 我们只能在一定程度上缩小算法的选择范围,一般并不存在最好的算法或者可以给出最好结果的算法,一般说来发现最好算法的关键环节是反复试错的迭代过程
3. 算法验证
  • 划分数据集
     训练集和测试集:一个用于训练,一个用于测试,训练集要更大,两个数据集要有随机性
     做交叉验证,比如:
      1. 数据分为 K 个子集,一个作测试集,其余作训练集,重复 K 次做交叉验证
      2. 数据分为 K 个子集,每个又分 S0,S1 子集,用 S0 训练,用 S1 测试,再反过来用
      3. 每个样本单独做测试集,其余 n-1 个样本作训练集,重复 n 次

  • SRM 和 ERM
     泛化能力用于衡量算法在样本空间上的表现
     如果过于专注于样本,会出现过拟合的现象
     如果过于罔顾样本,又会出现欠拟合的现象
     所以需要张弛有度,SRM 和 ERM 就是研究这个的
     损失函数
      记为 \small L(Y, F(X)) 针对单个具体的样本,表示预测值与真实值之间的差距
       0-1 损失函数
         \small L(Y, F(X)) = 1 \quad if \quad Y != F(X) \quad else \quad 0
       平方损失函数
         \small L(Y, F(X)) = (Y - F(X))^{2}
       绝对损失函数
         \small L(Y, F(X)) = |Y - F(X)|
       逻辑损失函数
         \small L(Y, F(X)) = Ylog(1+e^{-F(X)}) + (1-Y)log(1+e^{F(X)})
       对数损失函数
         \small L(Y, P(Y|X)) = - logP(Y|X) = - \frac{1}{N}\sum_{i=1}^{M}\sum_{j=1}^{N}y_{ij}log(p_{ij})
           \small N 为样本数,\small M 为类别数
           \small y_{ij} 表示类别 j 是否是输入实例 \small x_{i} 的真实类别
           \small p_{ij} 为预测输入实例 \small x_{i} 属于类别 j 的概率
       
       不同的损失函数用于不同的算法
       比如平方损失函数和绝对损失函数通常用于回归,其他几种用于分类
    ERM
      Empirical Risk Minmization,经验风险最小化
        \small R = \frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i})))
      ERM 就是最小化 R,但 R 太小容易出现过拟合的情况
    SRM
      Structural Risk Minmization,结构风险最小化
        \small R =\frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i}))) + \lambda J(f)
           \small \lambda 是一个系数,\small J(f) 表示模型 \small f 的复杂度
      相当于
        \small SRM = ERM + λJ(f)
      如果 ERM 越小就意味着函数复杂度也就是 \small λJ(f) 越大
      这样求出来的使得 R 最小的模型就是一个比较平衡的模型

  • 最小化目标函数
    ERM 公式和 SRM 公式也可以被称为目标函数,可改写为
      \small Obj = L + O
      其中
       L 代表损失函数用于衡量模型对数据的拟合程度
       O 可称为正则化项,用于惩罚复杂的模型,防止过拟合,常用 L2 正则和 L1 正则

        L1-NormL2-Norm,中文称 L1 正则化和 L2 正则化,或 L1 范数和 L2 范数

        L1 正则化是指向量中各个元素的绝对值之和,通常表示为
          \small \left \| W \right \|_{1}=\sum_{i=1}^{N}|w_{i}|
        L2 正则化是指向量中各个元素的平方和然后再求平方根,通常表示为
          \small \left \| W \right \|_{2}=\sqrt{\sum_{i=1}^{N}w_{i}^{2}}

        L1 正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
        L2 正则化可以防止模型过拟合 (一定程度上,L1 也可以防止过拟合)

        比如 Lasso 回归就使用的 L1,而 Ridge 回归(岭回归)就使用的 L2

     训练数据就是最小化目标函数 Obj
      多数时候是求梯度,通过一定步长沿着梯度前进,最终实现最小化 Obj

  • 偏差
     预测值和实际值的差距

  • 方差
     预测值的变化范围

  • 皮尔逊相关系数
     可用于计算预测结果和真实结果之间的相关性



相关文章

  • 机器学习:数据处理、算法选择、算法验证

    1. 数据处理 转换数据格式 比如将名称用数字表示、浮点数转为整数 特征值的类型 离散型还是连续型,这会影响算法的...

  • 算法工程师面试

    1、编程语言 2、基本算法 3、传统的机器学习算法 4、常见机器学习问题 过拟合问题、交叉验证问题、模型融合、...

  • 为你的回归问题选择最佳的机器学习算法

    摘要:机器学习领域算法那么多?到底如何用?本文作者通过比较不同机器学习算法性能的优劣来为回归问题寻找最佳的算法选择...

  • 3.sklearn_classification

    1 Sklearn分类学习算法一览 1.1 机器学习算法选择 1.2 scikit-learn初探 scikit-...

  • 机器学习算法概述(持续更新)

    机器学习算法广泛,各种衍生算法太多太多,各显其招。这里根据自己工作学习的经验只能大概总结如下(按一般数据处理流程区...

  • 谁能看懂这个

    机器学习算法盘点:人工神经网络、深度学习 机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法...

  • 特征选择与特征学习算法研究--笔记1

    特征选择与特征学习算法研究 2.1特征选择 特征选择过程特征选择是对数据进行预处理的机器学习算法,通过从数据中筛选...

  • 机器学习算法的随机数据生成

    在学习机器学习算法的过程中,我们经常需要数据来验证算法,调试参数。但是找到一组十分合适某种特定算法类型的数据样本却...

  • 终极算法 by domingos(一)

    第一章 机器学习革命 算法:输入数据和算法,输出结果。 机器学习:输入数据和结果,输出算法。 在机器学习中,知识往...

  • 机器学习和算法

    机器学习算法 github主页:机器学习和算法 最近以来一直在学习机器学习和算法,然后自己就在不断总结和写笔记,记...

网友评论

      本文标题:机器学习:数据处理、算法选择、算法验证

      本文链接:https://www.haomeiwen.com/subject/pafyxhtx.html