每日记录-2020-01-03

记录下今天学习到的东西,分两部分:
1 了解了一些异常检测的算法

  1. 异常检测算法的分类:

    • 统计假设检验
      这个概念无非就是μ和σ,μ±3σ包含了正太分布的95%的数据,所以在这个范围以外的数据就是异常值,简单粗暴。
      缺点就是首先假设数据服从正太分布,但不一定,其次只适合一维数据。
    • Isolation Forest 孤立森林(周志华)
      ITree的概念其实也不算复杂,主要就是用树对数据进行建模,由于异常值和正常值的差异比较大,所以通常异常值离ROOT比较接近,而且没有字子节点。(诶,新人不太会写blog,这里就不贴详细的概念了)
    • Semi-supervised learning
      听说比较适合国内的环境,还没研究,有空可以看看。
    • 伪xgboost
      把异常检测看成是有监督的数据不平衡下的分类问题,然后就是可以使用有监督的异常检测,如xgboost。
    • LOF
      LOF的主要概念还KNN的思想,只是它引入了绝对和相对局部可达密度这个概念(LRD),来衡量数据的离群程度。最终使用每个数据的绝对利群概率来产生

以上只是对常用的异常检测算法进行了一个简述,具体还需要查阅资料。

2 pyspark的继续学习
今天看case study的时候学到了两个非常重要的函数

rdd.combineByKey(f1,f2,f3)       #输入的必须是pair rdd(k,v)

f1:初始函数,给所有非重复的k初始一个值
eg:lambda x:[x]    这个函数的意思就是把所有非重复的k赋初始值[v](把v变成了列表)

f2:合并函数,对所有拥有相同k的数据进行合并
eg: lambda x,y:x+[y]  有点像reduce的味道,就是把所有相同的k的v合并到一个list中去(但是这里只是产生累加器并未合并)

f3:lambda x,y:x+y 这里才是真正的合并操作 得到最后的结果

具体可以参考:https://blog.csdn.net/u010159842/article/details/71471655



还有一个takeOrdered(20, key=lambda s:-s)
rdd.takeOrdered(20, key=lambda s:-s) 这个函数的意思和take差不多,就是附带排序功能,如果想降序的话要这么写key=lambda s:-s

你可能感兴趣的:(数据挖掘,机器学习)