数据挖掘常用算法

2017-12-01  本文已影响0人  油炸电风扇_db34

数据挖掘常用算法

    逐步补充中...

特征工程

        特征工程在实践中是很重要的一个环节,其中主要是特征提取(从原始数据中生成特征,原始数据以及特征的好坏直接决定了我们的算法效果上限)和特征选择(选择重要的特征,比如分类的话选择和标签相关性高的特征,这样可以降低算法的运行时间和降低过拟合风险等...,但还是看算法)

        https://www.zhihu.com/question/28641663里面对特征工程做了些简单介绍

数据预处理

        主要关注这几个方面:

        1.    Data Cleaning: 数据清洗(处理噪音、缺失数据等)

        2.    Normalizaion:数据标准化

        3.    Data Reduction: Dimension Reduction(降维)、Numerosity Reduction(数据量约减)

        4.    Data Transformation And Discretion:进行数据平滑、标准化、离散化、概念层次概化(concept hierarchies generation)等

        降维中使用到的比较有趣的方法:PCA(principal component analysis),我写的另一篇文章有个简单的数学原理介绍

频繁模式挖掘

    1.    Apiori

    2.    FP-Tree

分类

    1.    决策树、随机森林(决策树+bagging+feature random selection)、gradient boost tree(GBT):随机森林效果不错然后使用简单,使用得较为广泛

    2.    朴素贝叶斯:基于贝叶斯定律和特征属性之间都彼此独立的假设,如果属性之间彼此不独立,比如AB、。还简单提到了一个bayesian belief network,计算先验概率后验概率。

    3.    SVM:目标

    4.    神经网络

    5.    ensemble method:应用bagging(leave-p-out、k-fold等)和boosting(抽样时给予分类错误的样本更大的抽样权重,方法有AdaBoosting等)方法,训练多个分类器,结合多个分类器来给出更好的预测结果

    6.    knn等lazy learners

聚类

    1.     kmeans、kmedoid

    2.    hierarchical clustering(层次聚类):agglomerative(自底向上)、divisive(自顶向下)

    3.    DBSCAN、OPTICS

    4.    gaussian mixture models(高斯混合模型):假设数据点属于多个cluster,使用EM算法逐步增大模型的最大似然函数值

    5.     BiClustering

    6.    spectual clustering(谱聚类)、PIC(power iteration clustering,幂迭代聚类):可以用于子图切分,spark mlib提供了PIC的实现

    7.    Clustering with constraint

异常检测(outlier detection)

    1.    基于统计的方法(又分为有参或无参方法)

    2.    基于相似度的方法(grid-based、distance-based、density-based比如LDA)

    3.    基于聚类(方法复杂度可能比较高)

    4.    基于分类(可以使用随机森林等,但要对分类高度不均匀(highly imbalanced)的数据进行处理,使用over-sampling或under-sampling或两者结合使用(https://www.analyticsvidhya.com/blog/2017/03/imbalanced-classification-problem/)

推荐

    1.    content-based:确定产品或用户的特征,计算相似程度进行推荐

    2.    collaborative filtering(协同过滤):不是通过特征而是通过用户的行为来找到相似的用户,从而根据相似用户的行为给用户进行推荐

    3.    local sensitive hashing(LSH,局部敏感哈希):快速找到用户相似度的方法

图算法

    1.     PageRank:大名鼎鼎的pagerank

    2.    SimRank(根据用户对每一个item进行rank):类似于pageRank,公式有点不一样

其他一些有趣的主题(懒得分类了)

    1.    Bloom filter:常用于数据存储等领域,可快速了解数据是否存在,只有FN错误没有FP,FN可以随着hash函数的增加和桶大小的增加而降低

    2.    batch-kmeans、streaming-kmeans


上一篇下一篇

猜你喜欢

热点阅读