算法栏

  |  

摘要: 算法工程的技术点

【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:潮汐朝夕
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


| 从cash谈一类分治算法的应用 | 陈丹琦 | 2008 | cdq分治 | - |
| 《size balanced tree》 | 陈启峰 | 2007 | 大小平衡树 | 手撕平衡树-大小平衡树sbt |

sklearn_ml_map


data pipeline


数据清洗

  • 描述性统计
  • 数据分析
  • 数据可视化
  • 缺失值处理
    • 直接删除
      • 删特征: 缺失值如果占了95%以上,可以直接去掉这个维度的特征
      • 删数据: 适合缺失值数量较小,并且是随机出现的
    • 常数填充: 用一个全局常量(例如Unknown)填充
      • 可能会被识别为一个新类别,很少用。
    • 均值/中位数/众数
      • 当缺失数据不是随机数据时会产生偏差
      • 对于正常分布的数据可以使用均值代替
      • 如果数据是倾斜的,使用中位数可能更好
    • 插补
      • 随机插补: 从总体中随机抽取某个样本代替缺失样本
      • 多重插补: 通过变量之间的关系对缺失数据进行预测,利用蒙特卡洛方法生成多个完整的数据集,在对这些数据集进行分析,最后对分析结果进行汇总处理
      • 热平台插补: 在非缺失数据集中找到一个与缺失值所在样本相似的样本(匹配样本),利用其中的观测值对缺失值进行插补。
      • 拉格朗日插值/牛顿插值
      • 建模法: 回归、贝叶斯形式化方法、基于推理的工具、决策树归纳
    • Python包:
  • 异常值处理
    • 发现异常值
      • 画图找离群点: 并不常用,因为数据量大时不好画且慢
      • 描述性统计结合领域常识: 吃经验
      • $3\sigma$原则: 异常值为一组测定值中与平均值的偏差超过3倍标准差的值
      • 箱型图分析: 判断异常值的方法以四分位数和四分位距为基础
      • 基于模型: 建立一个数据模型,异常是那些同模型不能完美拟合的对象
        • 有坚实的统计学理论基础,当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效
        • 对于多元数据,可用的选择少一些,并且对于高维数据,这些检测可用性很差。
      • 基于距离: 在对象之间定义邻近性度量,异常对象是那些远离其他对象的对象
        • 大数据集不适用($O(N^{2})$)、参数选择敏感、不能处理具有不同密度区域的数据集
      • 基于密度: 当一个点的局部密度显著低于它的大部分近邻时才将其分类为离群点。
        • 适合非均匀分布的数据。
        • 大数据集不适用($O(N^{2})$)、参数选择困难
      • 基于聚类: 一个对象是基于聚类的离群点,如果该对象不强属于任何簇。
        • 基于线性和接近线性复杂度(KMeans)的聚类技术来发现离群点可能是很有效的
        • 簇的定义通常是离群点的补,因此可能同时发现簇和离群点
        • 产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据中离群点的存在性
        • 聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。
    • 处理异常值
      • 直接删除数据: 明显看出是异常且数量较少
      • 不处理: 如果算法对异常值不敏感可以不处理,例如基于距离的算法 kNN, Kmeans 等。
      • 平均值替代: 简明有力
      • 视为缺失值: 用处理缺失值的办法处理
  • 重复值处理
    • pd.drop_duplicates()
    • list1 = sorted(set(list0), key=list0.index)
  • 噪声数据处理
    • 噪声 vs. 异常值
      • 观测量(Measurement) = 真实数据(True Data) + 噪声 (Noise):
      • 离群点属于观测量,既有可能是真实数据产生的,也有可能是噪声带来的。
      • 噪音包括错误值或偏离期望的孤立点值
      • 大部分数据挖掘方法都将离群点视为噪声或异常而丢弃
    • 在一些应用(例如欺诈检测)会针对离群点做离群点分析异常挖掘
    • 有些点在局部是属于离群点,但从全局看是正常的。
    • 处理办法:
      • 分箱法: 考察数据的近邻来光滑有序数据值。并分布到一些桶或箱中
        • 用箱均值光滑:箱中每一个值被箱中的平均值替换。
        • 用箱中位数平滑:箱中的每一个值被箱中的中位数替换。
        • 用箱边界平滑:箱中的最大和最小值同样被视为边界。箱中的每一个值被最近的边界值替换。
      • 回归法: 用一个函数拟合数据来光滑数据。

数据预处理

  • 无量纲化
  • 文字型特征处理
  • 连续性特征处理

特征工程

  • 特征提取
  • 特征转换
  • 特征选择
    • 过滤法
    • 嵌入法
    • 包装法
  • 特征组合
  • 降维

采样


机器学习算法


监督算法

  • 广义线性模型
  • LDA
  • kNN
  • 高斯过程
  • 决策树(ID3, C4.5, C5.0, CART)
  • 朴素贝叶斯
  • SVM
  • 集成学习
  • 感知机

无监督算法

  • KMeans
  • Affinity propagation
  • Mean-shift
  • Spectral clustering
  • Ward hierachical
  • Agglomerative clustering
  • DBSCAN
  • Gaussian mixtures
  • Birch

半监督算法

  • Label Propagation

概率图模型

规则学习

强化学习


推荐算法

  • Arules关联规则
  • Fp-Growth
  • User-based or Item-based

其它

  • Probability calibration
  • Isotonic regression


Share