精华内容
下载资源
问答
  • 随着移动智能操作系统技术的突破,智能手机的普及,移动互联网时代的到来,web app每天都在产生TB甚至PB级的web日志,如何从这些海量日志信息中提取用户的个人爱好及其他信息,为用户提供个性化推荐服务,为人们的生活带来...
  • 基于Apriori算法电影推荐----数据挖掘智能推荐 本文是基于Apriori算法分析100721条用户的观影记录,并分析用户的观看喜好,以求精准达到推荐。 1、数据导入 import pandas as pd data = pd.read_excel('电影推荐...

    基于Apriori算法电影推荐----数据挖掘、智能推荐

    本文是基于Apriori算法分析100721条用户的观影记录,并分析用户的观看喜好,以求精准达到推荐。 数据下载地址
    1、数据导入

    import pandas as pd 
    data = pd.read_excel('电影推荐系统.xlsx')
    data
    

    在这里插入图片描述
    2、使用pivot_table(数据透视表)函数进行数据透视分析。行索引是用户。列索引是电影名称。

    user_movie = data.pivot_table(index = '用户编号', columns = '名称', values = '评分')
    

    在这里插入图片描述
    3、通过mlxtend库来实现Apriori算法

    mlxtend库安装法:通过PIP安装法来安装mlxtend库,以Windows系统为例,具体方法是:
    通过Win + R组合键调出运行框,
    输入cmd后回车,
    然后在弹出框中输入 pip install mlxtend 后按一下Enter回车键

    Jupyter Notebook编辑器中安装:
    只需要在代码框中输入!pip instll mlxtend然后运行该行代码框即可。

    注意:使用mlxtend库来实现Apriori算法的数据集必须是bool类型的True或者是False,通过以下代码更换数据类型

    bool_data = user_movie.notnull()
    bool_data
    

    在这里插入图片描述
    4、实现Apriori算法,进行数据分析

    from mlxtend.frequent_patterns import apriori
    items = apriori( bool, min_support=0.2, use_colnames=True)
    
    from mlxtend.frequent_patterns import association_rules
    relues = association_rules(items, min_threshold=0.7)
    relues
    

    在这里插入图片描述
    书写规则

    for i,j in relues.iterrows():
        X = j['antecedents']
        Y = j['consequents']
        x = ','.join([item for item in X])
        y = ','.join([item for item in Y])
        print(x + '->' + y)
    

    在这里插入图片描述
    以上就是我们挖掘出的强关联规则,—>前的为前件,—>后的为后件。
    在这里插入图片描述

    展开全文
  • 数据挖掘十大经典算法

    万次阅读 多人点赞 2018-01-01 21:39:19
    数据挖掘基本任务:分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。 DM过程:  a目标定义(任务理解、指标确定)  b数据采集(建模...

    数据挖掘基本任务分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。

    DM过程

           a目标定义(任务理解、指标确定)

           b数据采集(建模抽样、质量把控、实时采集)

           c数据整理(数据探索、数据清洗、数据变换)

           d构建模型(模式发现、构建模型、验证模型)

           e模型评价(设定评价标准、多模型对比、模型优化)

           f模型发布(模型部署、模型重构)

    十大DM算法:

    在香港举办的2006年度IEEE数据挖掘国际会议ICDM上,与会专家遴选出了十个最有影响力的数据挖掘算法:C4.5、k-means、SVM、Apriori、EM、PageRank、AdaBoost、KNN、NaïveBayes和CART。

    1、k-means

    k-means算法是一种常用的非监督学习聚类算法,它的作用是在我们不知道有哪些类别的情况下,将数据以K个类心,聚成K个聚类。通常我们会先确定一个相异度度量方法,常用的相异度有:欧式距离、曼哈顿距离、马氏距离、余弦距离等。根据两个数据间的“距离”来确定两个数据之间的相异度。

    k-means算法

    a 所有数据中取K个数据(可随机,也可选定)作为K个聚类的初始类心。

    b 遍历所有数据,计算他们到K个类心的“距离”,并将其归类到对应“距离”最小的那个类心所在的聚类中。

    c 根据聚类结果,重新计算K个聚类各自的中心,计算方法是取聚类中所有元素各自维度的算术平均数。

    d 若新的类心与之前的类心不同,则重复b、c步骤,直到聚类结果不再变化。

    e 将结果输出。

     

    相异度的计算:相异度就是两个东西差别有多大。标量、二元变量、分类变量、序数变量、向量的相异度有不同的计算方法。

    A 标量

          欧几里得距离:    

           曼哈顿距离:

           闵可夫斯基距离:

           欧氏距离和曼哈顿距离可以看做是闵可夫斯基距离在p=2和p=1下的特例.

    下面要说一下标量的规格化问题。上面这样计算相异度的方式有一点问题,就是取值范围大的属性对距离的影响高于取值范围小的属性。例如上述例子中第三个属性的取值跨度远大于前两个,这样不利于真实反映真实的相异度,为了解决这个问题,一般要对属性值进行规格化。所谓规格化就是将各个属性值按比例映射到相同的取值区间,这样是为了平衡各个属性对距离的影响。通常将各个属性均映射到[0,1]区间,映射公式为:

          

          其中max(ai)和min(ai)表示所有元素项中第i个属性的最大值和最小值。

    B 二元变量

           所谓二元变量是只能取0和1两种值变量,有点类似布尔值,通常用来标识是或不是这种二值属性,相异度可用“取值不同的同位属性数/单个元素的属性位数”,或者非对称二元相异度“取值不同的同位属性数/(单个元素的属性位数-同取0的位数)”来标识相异度。

    C 分类变量

           分类变量是二元变量的推广,类似于程序中的枚举变量,但各个值没有数字或序数意义,如颜色、民族等等,对于分类变量,用“取值不同的同位属性数/单个元素的全部属性数”来标识其相异度。

    D 序数变量

           序数变量是具有序数意义的分类变量,通常可以按照一定顺序意义排列,如冠军、亚军和季军。对于序数变量,一般为每个值分配一个数,叫做这个值的秩,然后以秩代替原值当做标量属性计算相异度。

    E 向量

         对于向量,由于它不仅有大小而且有方向,所以闵可夫斯基距离不是度量其相异度的好办法,一种流行的做法是用两个向量的余弦度量,其度量公式为:

          

          其中||X||表示X的欧几里得范数()。要注意,余弦度量度量的不是两者的相异度,而是相似度!


    2、Apriori

    Apriori是最经典的关联规则算法,它的作用是依据数据,挖掘各个事物之间的可能关联(eg:啤酒尿布问题)。Apriori算法使用频繁项集的先验知识,使用一种称作逐层搜索的迭代方法,k项集用于探索(k+1)项集。首先,通过扫描事务(交易)记录,找出所有的频繁1项集,该集合记做L1,然后利用L1找频繁2项集的集合L2,L2找L3,如此下去,直到不能再找到任何频繁k项集。最后再在所有的频繁集中找出强规则,即产生用户感兴趣的关联规则。

    定理1:如果一个项集是频繁的,那么其所有的子集(subsets)也一定是频繁的。

    定理2:如果一个项集是非频繁的,那么其所有的超集(supersets)也一定是非频繁的。

    定理3:如果规则XYX不满足置信度阈值,则对于X的子集X′,规则X′YX′也不满足置信度阈值。

    Apriori算法:

    Apriori算法采用连接步和剪枝步两种方式来找出所有的频繁项集。 

    这条关联规则的支持度:support = P(A并B)

    这条关联规则的置信度:confidence= support(A并B)/suport(A)

     

    1)  连接步 

    为找出Lk(所有的频繁k项集的集合),通过将Lk-1(所有的频繁k-1项集的集合)与自身连接产生候选k项集的集合。候选集合记作Ck。设l1和l2是Lk-1中的成员。记li[j]表示li中的第j项。假设Apriori算法对事务或项集中的项按字典次序排序,即对于(k-1)项集li,li[1] <li[2]<……….li[k-1]。将Lk-1与自身连接,如果(l1[1]=l2[1])&&(l1[2]=l2[2])&&……..&& (l1[k-2]=l2[k-2])&&(l1[k-1]<l2[k-1]),那认为l1和l2是可连接。连接l1和l2 产生的结果是{l1[1],l1[2],……,l1[k-1],l2[k-1]}。 

    2) 剪枝步 
    CK是LK的超集,也就是说,CK的成员可能是也可能不是频繁的。通过扫描所有的事务(交易),确定CK中每个候选的计数,判断是否小于最小支持度计数,如果不是,则认为该候选是频繁的。为了压缩Ck,可以利用Apriori性质:任一频繁项集的所有非空子集也必须是频繁的,反之,如果某个候选的非空子集不是频繁的,那么该候选肯定不是频繁的,从而可以将其从CK中删除。

    (Tip:为什么要压缩CK呢?因为实际情况下事务记录往往是保存在外存储上,比如数据库或者其他格式的文件上,在每次计算候选计数时都需要将候选与所有事务进行比对,众所周知,访问外存的效率往往都比较低,因此Apriori加入了所谓的剪枝步,事先对候选集进行过滤,以减少访问外存的次数。可能产生大量的候选集,以及可能需要重复扫描数据库,是Apriori算法的两大缺点。)

    eg:


    3、Naïve Bayes(朴素贝叶斯)

    朴素贝叶斯是很经典的统计分类方法,属于监督学习,它的理论依据是贝叶斯原理

    ,也是最为简单的贝叶斯分类器。 

    叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。通俗来说,就好比这么个道理,你在街上看到一个黑人,我问你你猜这哥们哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择条件概率最大的类别,这就是朴素贝叶斯的思想基础。

    NaiveBayes算法

    A 假设有一个可由n个独立属性表示的待分类项其中为n个独立属性.

    B 已知有m个类别

    C 求条件概率

    D 取上面条件概率的最大值,其对应的类别即为待分类项所在的类别

     

    可见,条件概率的计算是算法中的关键与难点,这个时候就需要用到贝叶斯公式了。假设我们有一定量的训练样本,其中是已经分类过的待分类项。下面是条件概率的计算步骤:

    A 统计计算每个类别的频率,即

    B 统计计算每个特征属性在每个类别中的条件概率,即

    C 以及贝叶斯公式可得  (一个属性下某类别的概率 = 某类别的概率*某类别下此属性的概率/此属性在所有类别下的概率总和)

    又因为属性相互独立,可得 

    另外根据全概率公式可知 

    根据以上公式,即可求得待分类项对于每个类别的条件概率。

    实验上,我们通常用一部分数据作为训练样本,用一部分数据作为测试样本,以避免过度拟合。理论上说,朴素贝叶斯的分类效果应该优于决策树分类的,但是实际生活中朴素贝叶斯的效果却不太理想,因为很难保证各特征属性相互独立。 

    朴素贝叶斯的分类流程


    4、KNN(K近邻算法)

    KNN(K Nearest Neighbor)算法与K-Means算法有相似之处,但是KNN算法严格来说是一种归类算法,应属于半监督学习。KNN算法算是最简单的归类算法了,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法。其中的K表示最接近自己的K个数据样本。KNN算法和K-Means算法不同的是,K-Means算法用来聚类,用来判断哪些东西是一个比较相近的类型,而KNN算法是用来做归类的,也就是说,有一个样本空间里的样本分成很几个类型,然后,给定一个待分类的数据,通过计算接近自己最近的K个样本来判断这个待分类数据属于哪个分类。你可以简单的理解为由那离自己最近的K个点来投票决定待分类数据归为哪一类

    与K-means算法相同,这里面同样涉及到了相异度度量的问题,我们需要设定一个度量想法来确定两个项之间的相异度,如,欧氏距离,余弦距离,曼哈顿距离等。

    wikipedia官方解释上有这样一张图片:

    问其中带问号的点属于什么类别,

    ·        当K==3,那么我们统计得到,离带问号的点最接近的3个点中2个红色三角,1个蓝色正方,那么根据KNN算法,该点与红色三角属于同一类别。

    ·        当K==5,那么我们统计得到,离带问号的点最接近的3个点中2个红色三角,3个蓝色正方,那么根据KNN算法,该点与蓝色正方属于同一类别。

    由此可见,K的取值对于待分类项是一个关键问题

    ·        如果选择较小的K值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;

    ·        如果选择较大的K值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单。

    ·        K=N,则完全不足取,因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累,模型过于简单,忽略了训练实例中大量有用信息。

     

    5、SVM(支持向量机算法)

    支持向量机算法应用领域十分广泛,图像分类,数据分类,统计回归等等,是十分经典的监督式学习算法

    最简单的SVM分类就是线性分类,如下图

    这个图大家应该都不陌生,就是用一个线性方程将所有数据分为两类,当然这也是最简单的情况了,况且就算这样简单的情况下,线性方程也仍然不唯一,如下图

    哪种分法最好呢??一般来说,能够与两个类别的界限越明晰,分类越好,怎么理解,如下图

    蓝点和红点分别是两个类别中距离分类线最近的点,它们与分类线的距离越大,那么分类效果就越好,这几个点就是支持向量。这个原则也也成为Maximum Marginal(最大间距),是SVM的一个理论基础之一。 
    当然你一定也想到了,当所有的点并不能用一条线分类的时候怎么办,就如下面的图

    左边的图明显不能用一条直线划分,这个时候,我们有两种选择

    a.    将数据从原来的线性空间投射到高维的空间里,并在高维的空间里进行超平面划分,如果还是不行,就向更高维空间投射(记得看过一本书说总能在某一个高维空间进行划分,不知道是否严谨),关于投射变换,就跟核函数有关系,核函数有很多种

    b.    依旧使用线性划分,但是允许误差,这里面又会引入惩罚函数的概念


     6、Decision Tree(决策树算法)

     决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

    决策树在决策分析与风险评估等领域有十分广泛的应用,属于监督学习,它在一定程度上可以作为趋势探测。朴素贝叶斯分类贝叶斯网络两种分类算法都以贝叶斯定理为基础,可以对分类及决策问题进行概率推断。相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决策树更加适用。
    如下图是预测一个人是否拥有电脑的简单决策树模型:

    这种图相信大家都一眼能够看懂,在建立这个树的时候,我们假设每个数据项都有属性“年龄”,“是否学生”,“信用等级”等特征属性,那么我们在建立树的时候,就需要考虑每到一个结点应该使用什么属性合适。这里就要引入三个概念,一个是“熵”,一个是“期望熵”,另一个是“信息增益”:

    ·        熵:熵是接收的每条消息中包含的信息的平均量,信息论中,熵的计算方法是:,其中P(xi)是指第i个类别在整个训练样本中的比例

    ·        期望熵:我们以属性A对训练样本进行划分,那么期望熵即为,按照属性A,训练样本可以划分为v个类别。

    ·        信息增益:两个概率分布相异度的一种度量,非对称的(来之维基百科),其定义,对于分类来讲,信息增益越大分类效果越好,决策树也就越简洁。就比如两个分类,我们以天气来决策是否出去:1.不下雨就出去,下雨就不出去。2.不下雨可能出去可能不出去,不下雨就不出去。那么分类1就会比分类2的效果好一点,对于天气这个属性来说,分类1的信息增益也会比分类2的信息增益大。

    由上面我们可以知道,在每次选择属性作为决策结点时,我们通常选择当前信息增益最大的属性。这也是数据挖掘领域经典的ID3算法。 
    ID3算法的一个缺陷就是偏向于选择取值多的属性。为了解决这个问题,又引入了C4.5算法,其基于ID3算法做了部分改进,其中最主要的一条就是将信息增益换做了增益率来选择属性作为决策结点。 

    C4.5算法首先定义了“分裂信息”,其定义可以表示成:

          

         设D为用类别对训练元组进行的划分,然后,增益率被定义为:

          

         C4.5选择具有最大增益率的属性作为分裂属性,其具体应用与ID3类似

    另外,决策树模型在应用的时候,也常和启发式方法结合,可以达到优化的效果。

    在决策树构造过程中可能会出现这种情况:所有属性都作为分裂属性用光了,但有的子集还不是纯净集,即集合内的元素不属于同一类别。在这种情况下,由于没有更多信息可以使用了,一般对这些子集进行“多数表决”,即使用此子集中出现次数最多的类别作为此节点类别,然后将此节点作为叶子节点。

    在实际构造决策树时,通常要进行剪枝,这时为了处理由于数据中的噪声和离群点导致的过分拟合问题。剪枝有两种:

    先剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造。

    后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。

     

    7、EM算法(最大期望算法)

    EM算法预备知识:

    1) 极大似然估计

    极大似然估计就是用来估计模型参数的统计学方法。

    eg: 经典问题——学生身高问题

    我们需要调查我们学校的男生和女生的身高分布。 假设你在校园里随便找了100个男生和100个女生。他们共200个人。将他们按照性别划分为两组,然后先统计抽样得到的100个男生的身高。假设他们的身高是服从高斯分布的。但是这个分布的均值u和方差∂2我们不知道,这两个参数就是我们要估计的。记作θ=[u, ∂]T。

    问题:我们知道样本所服从的概率分布的模型和一些样本,而不知道该模型中的参数。

    问题数学化:1)样本集X={x1,x2,…,xN} N=1002)概率密度:p(xi|θ)抽到男生i(的身高)的概率 100个样本之间独立同分布,所以我同时抽到这100个男生的概率就是他们各自概率的乘积。就是从分布是p(x|θ)的总体样本中抽取到这100个样本的概率,也就是样本集X中各个样本的联合概率,用下式表示:


    这个概率反映了,在概率密度函数的参数是θ时,得到X这组样本的概率。需要找到一个参数θ,其对应的似然函数L(θ)最大,也就是说抽到这100个男生(的身高)概率最大。这个叫做θ的最大似然估计量,记为


    求最大似然函数估计值的一般步骤

      首先,写出似然函数:

        

      其次,对似然函数取对数,并整理:

           

      然后,求导数,令导数为0,得到似然方程;

      最后,解似然方程,得到的参数即为所求。

    总结:多数情况下我们是根据已知条件来推算结果,而极大似然估计是已经知道了结果,然后寻求使该结果出现的可能性最大的条件,以此作为估计值。

    2) Jensen不等式

    凸函数:f是定义域为实数的函数,如果对于所有的实数xf(x)的二次导数大于等于0,那么f是凸函数(数学中是凸)。

    Jensen不等式表述如下:如果f是凸函数,X是随机变量,那么E[f(X)]>=f(E[X])。当且仅当X是常量时,上式取等号。

    eg:

    图中,实线f是凸函数,X是随机变量,有0.5的概率是a,有0.5的概率是bX的期望值就是ab的中值了,图中可以看到E[f(X)]>=f(E[X])成立。        

    Jensen不等式应用于凹函数时,不等号方向反向。

     

    传统EM算法详述

    eg:我们抽取的100个男生和100个女生样本的身高,但是我们不知道抽取的那200个人里面的每一个人到底是从男生的那个身高分布里面抽取的,还是女生的那个身高分布抽取的。用数学的语言就是,抽取得到的每个样本都不知道是从哪个分布抽取的。这个时候,对于每一个样本,就有两个东西需要猜测或者估计:1)这个人是男的还是女的?(2)男生和女生对应的身高的高斯分布的参数是多少?

    EM算法要解决的问题是:1)求出每一个样本属于哪个分布2)求出每一个分布对应的参数


    身高问题使用EM算法求解步骤

    1)初始化参数:先初始化男生身高的正态分布的参数:如均值=1.7,方差=0.1

    2)计算每一个人更可能属于男生分布或者女生分布;

    3)通过分为男生的n个人来重新估计男生身高分布的参数(最大似然估计),女生分布也按照相同的方式估计出来,更新分布。

    4)这时候两个分布的概率也变了,然后重复步骤(1)至(3),直到参数不发生变化为止。

    算法推导

    已知:样本集X={x(1),…,x(m)},包含m个独立的样本;

    未知:每个样本i对应的类别z(i)是未知的(相当于聚类);

    输出:我们需要估计概率模型p(x,z)的参数θ

    目标:找到适合的θzL(θ)最大。


    要使L(θ)最大,我们可以不断最大化下界J,来使得L(θ)不断提高,达到最大值。

    问题:

    什么时候下界J(z,Q)L(θ)在此点θ处相等?


    根据Jensen不等式,自变量X是常数,等式成立。即:

    由于,则可以得到:分子的和等于c


    在固定参数θ后,使下界拉升的Q(z)的计算公式,解决了Q(z)如何选择的问题。这一步就是E步,建立L(θ)的下界。接下来的M步,就是在给定Q(z)后,调整θ,去极大化L(θ)的下界J

    算法流程:

    1)初始化分布参数θ重复以下步骤直到收敛:       

    E步骤:根据参数初始值或上一次迭代的模型参数来计算出隐性变量的后验概率,其实就是隐性变量的期望。作为隐藏变量的现估计值:


    M步骤:将似然函数最大化以获得新的参数值:


    总结:期望最大算法(EM算法)是一种从不完全数据或有数据丢失的数据集(存在隐含变量)中求解概率模型参数的最大似然估计方法。传统的EM算法对初始值敏感,聚类结果随不同的初始值而波动较大。总的来说,EM算法收敛的优劣很大程度上取决于其初始参数。

    eg:


            这是一个抛硬币的例子,H表示正面向上,T表示反面向上,参数θ表示正面朝上的概率。硬币有两个,AB,硬币是有偏的。本次实验总共做了5组,每组随机选一个硬币,连续抛10次。如果知道每次抛的是哪个硬币,那么计算参数θ就非常简单了,如上图所示。

             如果不知道每次抛的是哪个硬币呢?那么,我们就需要用EM算法,基本步骤为:1、给θA和θB一个初始值;2、(E-step)估计每组实验是硬币A的概率(本组实验是硬币B的概率=1-本组实验是硬币A的概率)。分别计算每组实验中,选择A硬币且正面朝上次数的期望值,选择B硬币且正面朝上次数的期望值;3、(M-step)利用第三步求得的期望值重新计算θA和θB4、当迭代到一定次数,或者算法收敛到一定精度,结束算法,否则,回到第2步。


            稍微解释一下上图的计算过程。初始值θA=0.6,θB=0.5

            图中的0.45是怎么得来的呢?由两个硬币的初始值0.60.5,容易得出投掷出55反的概率是pA=C(10,5)*(0.6^5)*(0.4^5)pB=C(10,5)*(0.5^5)*(0.5^5), pA/(pA+pB)=0.449,  0.45就是0.449近似而来的,表示第一组实验选择的硬币是A的概率为0.45。图中的2.2H2.2T是怎么得来的呢?  0.449 * 5H = 2.2H 0.449 * 5T = 2.2T,表示第一组实验选择A硬币且正面朝上次数的期望值是2.2。其他的值依次类推。

     

    8AdaBoost算法

    Adaboost(Adaptive Boosting)算法是boost算法中最为经典的算法了,也是分类效果很好的监督式学习算法“boost”顾名思义就是提升的意思,将弱分类器提升为强分类器,它的核心思想先针对同一训练集训练出一定量的弱分类器,然后将这些弱分类器集合成一个强分类器。 
    下图是Adaboost算法的官方说明:

    y1...ynn个弱分类器,通过一定方式合并可以得到强分类器YM,当然每个弱分类器的贡献度不同。一般来说,越到后面的弱分类器贡献度应该越高。 
    为什么呢?举个例子,y2的获得与y1参与有关,我们在训练某个弱分类器的时候,对于它之前的弱分类器训练错误的数据,我们将加大他们的权重,着重训练。而对于训练正确的数据,我们就会减小权重。也就是说,后面训练成的分类器,一定程度上学习了它之前的分类器”,这又是adaboost的另一个理论基础。 

    算法具体过程:

    a初始化所有训练样例的权重为1 / N,其中N是样例数

    b for m=1,……M:

      1).训练弱分类器ym(),使其最小化权重误差函数(在训练数据集上的误差率等于将这几个数据的权值相加)(weightederror function):

           

       2)接下来计算该弱分类器的话语权α(在最终分类器中所占的权重,误差率低的弱分类器在最终分类器中占的权重较大)

            

       3)更新训练样本的权值分布:

        

         其中Zm

          

         是规范化因子,使所有w的和为1。(这里比较懵)

     c最后,按弱分类器权重组合各个弱分类器,通过符号函数sign的作用得到一个强分类器:

         

    算法实例:http://blog.csdn.net/gyqjn/article/details/45501185

     

    9PageRank算法

    PageRank算法被广泛应用于信息检索等领域,这和TF-IDF算法一样,但是他们之间又有本质的区别。 

    PageRank是用来对网页进行排序的,我们在使用搜索引擎的时候,会先输入搜索语句,通常会检索出成千上万个结果,每一个结果都对应一个网页,我们自然是不可能打开每个网页查看。这个时候,这些检索出来的网页排序就显得即为重要,因为按照一般人习惯,最多只会点进排名靠前的几个或者十几个网页。如果你排名靠前的网页内容不相关或质量较差,会极大地影响用户体验。

    PageRank中的“Page”并不是网页的意思,而是这个算法创始人的名字佩奇,也是谷歌创始人之一。这个算法使得当时的谷歌从众多的搜索引擎中脱颖而出,成为它的制胜法宝。直到现在,这个算法通过不断改进,也成为各大搜索引擎核心理论基础。 

    在这个算法出现之前,TF-IDF算法为通用的算法,通过关键字出现频率等对网页进行排序,导致很多网页开发商为了浏览量大量刷新热点词等。导致检索出来的网页质量都较差。

    PangRank算法的核心思想就是一种自动投票机制,与学术引用机制相仿,一篇论文被别的论文引用次数越多,说明这个论文质量越高,越权威。相似的,一个网页被链接得越多,说明这个网页越加被其他网页信任,他的质量就会更高。如果它也是被检索出的网页之一,那么在排序时,这个网页就能获得较高权重,很有可能排在前面。 

    所以每个网页都会有一个PR值,分值从110。而且分值间的差距并不是线性的,56之间的差距可能是45之间差距的56倍。每个网页会对它链接的网页贡献PR值,它链接的网页越多,那么它向每个网页贡献的PR值就会越小,可以有效防止刷链接的现象。这样所有网页就会组成一个网络,每个网页为一个结点,需要定时的更新每个网页的PR值。 

    这是Pagerank的核心思想,但是仍然有很多缺陷,比如新加入的网页很容易受到忽略,排名靠前网页可能内容不够相关等等。所以实际应用的算法应该复杂得多。 

     

    下面链接详细讲解了有关PageRank算法的内容,包括个人很感兴趣的搜索引擎

    http://blog.codinglabs.org/articles/intro-to-pagerank.html

     

    10TF-IDF算法

    TF-IDF算法的思想也很简单,它被广泛应用于关键字搜索,它的作用就是通过统计的方法给每个关键字赋予权值。 
    举一个例子:每个人的身份证号可以唯一标记一个人的身份,但是我们仔细观察可以发现,很多人身份证的前6位是一样的,那么这六位对于识别人就没有那么大的贡献,而后面的12位基本很难出现相同,那么这12位对于标记一个人信息就会有较大的贡献度。那么我们怎么确定一个关键词的贡献度呢? 
    TF-IDF
    的全名是term frequency–inverse documentfrequency,翻译过来也就是词频-逆文档频率,下面我们就词频和逆文档频率分别讲解TF-IDF算法:

    ·        TF(词频):若一个关键词在一个文档中大量出现,那么这个关键词极有可能标识着这个文档的内容,所以一个关键词对标记一个文档的贡献度与其在该文档中出现的频率正相关。

    ·        IDF(逆文档频率):很容易想到,一些能够在文档中大量出现的词不一定具有代表性。如,”“这些词大量使用但是对标记文档并没有太大的贡献。所以如果一个关键词在所有文档中都高频出现,那么我们就需要大大减小它的贡献度。

    一句话说,TF-IDF与一个词在文档中的出现次数成正相关,与该词在整个文档中的出现次数成负相关。 
    TF-IDF
    算法常用于提取关键词,也可以和余弦相似原理结合来判断两个文件的相似度。实际上,TF-IDF算法也常和K-Means算法结合,来给每个类心赋予权值。类似问题,TF-IDF算法均可应用,不仅仅局限于关键词搜索领域。



    参考资源:


    展开全文
  • 全球人工智能:专注为AI开发者提供全球最新AI技术动态和社群交流。用户来源包括:北大、清华、中科院、复旦、麻省理工、卡内基梅隆、斯坦福、...我们都知道对于软件而言,最为经典的定义就是程序=算法+数据结构,算...

    全球人工智能:专注为AI开发者提供全球最新AI技术动态和社群交流。用户来源包括:北大、清华、中科院、复旦、麻省理工、卡内基梅隆、斯坦福、哈佛、牛津、剑桥等世界名校的AI技术硕士、博士和教授;以及谷歌、腾讯、百度、脸谱、微软、华为、阿里、海康威视、滴滴、英伟达等全球名企的AI开发者和AI科学家。

    文章来源:云栖社区 作者:薯条酱

    我们都知道对于软件而言,最为经典的定义就是程序=算法+数据结构,算法对于软件的重要性不言而喻,甚至可以说算法是程序的灵魂所在。甚至有人说如果计算机系只开设三门课的话,那么一定是:离散数学、编译原理还有算法和数据结构。算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。其实对于IT人而言,无时无刻都沉浸在算法之中,小到可能只是对于一个简单的一维数组进行排序,大到使用进行实时个性化推荐或者使用机器学习算法预测未来的发展趋势,这一切都是算法。而算法也在我们的生活中,比如我们小时候最爱举的那个“泡茶”的例子、如何从一堆硬币中通过天平找出假的那枚硬币...

    都说相由心生,思维也是一样,IT人的思维往往比较缜密,因为我们的脑袋中其实运行着各种“算法”,不知道你是否也是这样,等电梯时总觉得它的算法存在问题。好了,言归正传,算法始源于千百年前,中国古代就有各种的算法,比如今天我们依旧在使用的辗转相除法等等,甚至《九章算术》其实可以称之为一本算法书。在茫茫的书籍的海洋中,有关算法的书籍多不胜数,然而经历过大浪淘沙剩下的才是经典之作,本文就为大家介绍基本算法的相关书籍,希望能帮助大家在探索程序的灵魂之路上不断前行。

    《计算机程序设计艺术》—— 高德纳 (Donald E.Knuth)

    高德纳,计算机科学家,算法与程序设计技术的先驱者、斯坦福大学计算机系荣休教授、计算机排版系统TEX和METAFONT字体系统的发明人,因诸多成就以及大量富于创造力和具有深远影响的著作而誉满全球。

    《计算机程序设计艺术》系列著作被公认为是对经典计算机科学的论述,曾在1999年被《美国科学家》期刊评选为20世纪重要的12部学术专著之一。这一宏伟浩大的工程始于1962年,计划出版7卷,目前已经出版了4卷。数十年来,这本书一直是广大学生、研究人员和业内人士学习程序设计理论和实践的无价之宝,书中各处无不体现着作者渊博的学识、严谨的治学态度,以及深刻的洞察力。该套书自出版以来,广受众多科学家的赞许,并对无数读者产生了极其深远的影响。《计算机程序设计艺术》堪称计算机科学领域的瑰宝。从事研究的人惊艳于其精美优雅的分析,而普通程序员则一直在卓有成效地利用书中提供的各种方案解决日常问题。这些书展现了作者的博观、清晰、幽默,所有的人都钦佩不已。高德纳是算法和程序设计领域的先驱者,对计算机科学发展史也有着深入的研究,书中在介绍众多理论的同时,也给出了相关的历史和发展历程,成为本书的一大特色。

    《算法导论》—— Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Clifford Stein

    《算法导论》是一本十分经典的计算机算法书籍,与《计算机程序设计艺术》相媲美。该书由Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein四人合作编著。本书的最大特点就是将严谨性和全面性融入在了一起。本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。本书专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。本书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。《算法导论》内容丰富,对本科生的数据结构课程和研究生的算法课程都是很实用的教材。本书在读者的职业生涯中,也是一本案头的数学参考书或工程实践手册。大学期间,老师给我们的观点是对于这本书可以粗略地全面概览一遍,知道究竟有什么样的算法可以解决什么样的问题,当遇到具体问题需要使用这些算法时再去查找和使用,将《算法导论》当做一本工具书。

    《算法》—— Robert Sedgewick, Kevin Wayne

    《算法(第4版)》是Sedgewick之巨著,与高德纳TAOCP一脉相承,几十年多次修订,经久不衰的畅销书,涵盖所有程序员必须掌握的50种算法。该书全面讲述算法和数据结构的必备知识,具有以下几大特色:算法领域的经典参考书:Sedgewick畅销著作的最新版,反映了经过几十年演化而成的算法核心知识体系。内容全面:全面论述排序、搜索、图处理和字符串处理的算法和数据结构,涵盖每位程序员应知应会的50种算法。全新修订的代码:全新的Java实现代码,采用模块化的编程风格,所有代码均可供读者使用。与实际应用相结合:在重要的科学、工程和商业应用环境下探讨算法,给出了算法的实际代码,而非同类著作常用的伪代码。富于智力趣味性:简明扼要的内容,用丰富的视觉元素展示的示例,精心设计的代码,详尽的历史和科学背景知识,各种难度的练习,这一切都将使读者手不释卷。科学的方法:用合适的数学模型精确地讨论算法性能,这些模型是在真实环境中得到验证的。与网络相结合:配套网站提供了本书内容的摘要及相关的代码、测试数据、编程练习、教学课件等资源。

    《计算机算法的设计与分析》 —— 阿霍,霍普克劳夫特,乌尔曼

    《计算机算法的设计与分析》是一部设计与分析领域的经典著作,着重介绍了计算机算法设计领域的基本原则和根本原理。书中深入分析了一些计算机模型上的算法,介绍了一些和设计有效算法有关的数据结构和编程技术,为读者提供了有关递归方法、分治方法和动态规划方面的详细实例和实际应用,并致力于更有效算法的设计和开发。同时,对NP完全等问题能否有效求解进行了分析,并探索了应用启发式算法解决问题的途径。另外,本书还提供了大量富有指导意义的习题。值得一提的是,本书第一作者阿霍,是哥伦比亚大学计算机科学系主管本科生教学的副主任,IEEE Fellow,美国科学与艺术学院及国家工程学院院士,曾获得IEEE的冯·诺伊曼奖。他还是《编译原理》(Compiler:Principles,Techniques,and Tools)的第一作者,其技术能力和影响力可想而知。

    《算法设计与分析基础》—— Anany Levitin

    《算法设计与分析基础》在讲述算法设计技术时采用了新的分类方法,在讨论分析方法时条分缕析,形成了连贯有序、耳目一新的风格。此书涵盖算法入门课程的全部内容,更注重对概念(而非形式)的理解。书中通过一些流行的谜题来激发学生的兴趣,帮助他们加强和提高解决算法问题的能力。每章小结、习题提示和详细解答,形成了非常鲜明的教学特色。作者基于丰富的教学经验,开发了一套全新的算法分类方法。该分类法站在通用问题求解策略的高度,对现有大多数算法准确分类,从而引领读者沿着一条清晰、一致、连贯的思路来探索算法设计与分析这一迷人领域。《算法设计与分析基础》十分适合用作算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要读者具备数据结构和离散数学的知识即可。

    《算法图解》—— Aditya Bhargava

    《算法图解》是一本像小说一样有趣的算法入门书。算法是解决问题的一步步流程,也是计算机科学领域的核心主题。如今程序员经常使用的算法已经经过了前人的探索、检验及证明。如果你想搞明白这些算法,又不想被困在繁琐的证明中,本书正是你的不二选择。这本图示丰富、引人入胜的实用指南将让你轻松学会如何在自己的程序中高效使用重要的算法。这本书是大家都可以看懂的算法基础书,书中的代码示例基于Python语言,书中涵盖400多个示意图,生动地介绍了算法的执行过程,并且展示了不同算法在性能方面的优缺点,能够帮助编程人员使用常见算法解决每天面临的实际编程问题。书中的前三章将帮助我们打下基础,学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;Kzui近邻算法。

    《算法神探:一部谷歌首席工程师写的CS小说》—— 杰瑞米·库比卡, 啊哈磊, 李嘉浩

    《算法神探:一部谷歌首席工程师写的CS小说》这本书围绕程序设计典型算法,精心编织了一个扣人心弦又趣味横生的侦探缉凶故事。小说主人公运用高超的搜索技巧和精深的算法知识,最终识破阴谋、缉拿元凶。其间,用二分搜索搜查走私船、用搜索树跟踪间谍、用深度优先搜索逃离监狱、用优先队列开锁及用优先搜索追寻线索等跌宕起伏又富含算法精要的情节,让读者在愉悦的沉浸式体验中快速提升境界,加深对程序世界的理解。本书适合开发人员、编程爱好者和相关专业学生阅读,也是少儿计算机科学启蒙的绝佳读物。这本书说是一本算法书,倒不如说是一本科普书籍,可以当做一本专属于IT人的小说来看。

    《改变未来的九大算法》—— 美 约翰.麦考密克

    Google得出的搜索结果是如何产生的?百度为何会陷入“搜索门”,又是什么机制使然?身处在大数据时代的我们,究竟该如何应对变化莫测的世界?……没有满篇的专业术语,第一次让我们通过简单明了的语言、生动的例证了解支撑计算机王国的灵魂支柱——9大算法,包括人工智能、数据压缩,以及Google著名的PageRank等。《改变未来的九大算法》一书精彩地介绍了搜索引擎、PageRank、公开密钥加密、纠错码、模式识别、数据压缩、数据库、数字签名等内容。在解释这些算法的同时,作者也向我们展示了充满科学原创精神的计算机世界:因为每一种算法的提出不但延伸了虚拟世界的领域,同时也是人类智慧的彰显,可以被广泛运用于众多领域。

    在读完本书后,你不会成为一名更加熟练的计算机用户,但你会更珍视自己每天在所有计算设备上不停使用的思想的美。我们每天都会进行多次搜索查询,但是你想过这个令人惊叹的工具是如何奏效的吗?谷歌的精英管理层因为谷歌“以超乎寻常的技巧返回相关度极高的结果”而获奖,他们是怎么做到的?《改变未来的九大算法》将带你一探究竟。

    《算法帝国》 —— Christopher Steiner

    今天,算法涉足的领域已经远远超出了其创造者的预期。特别是进入信息时代以后,算法的应用涵盖金融、医疗、法律、体育、娱乐、外交、文化、国家安全等诸多方面,显现出源于人类而又超乎人类的强大威力。《算法帝国》是《纽约时报》畅销书作者斯坦纳的又一力作,通过一个又一个引人入胜的故事,向读者介绍了算法掌控世界的真实情况,揭示了“机器人革命”是如何悄然在我们身边发生的。如果说《改变未来的九大算法》是为弥散程序员气质的业余技术控洗髓内修的白话算法书,《算法帝国》就是为抱负征服世界雄心的程序员易筋外修的演义励志书,一路读来心中满盈释然和暗合之悦。搞了小半辈子算法,一直到听过凯文—斯拉文(KevinSlavin)的TED演讲“算法如何塑造我们的世界”,才有意识地去感知周遭世界一行一止中算法的开合有度。本书大开大阖,从70年代华尔街的勃兴开始,以本世纪华尔街和硅谷的权力更替收尾,世界易帜,算法仍旧。书名直译为《算法如何控制我们的世界》,对于潜志算法的我们,是控制还是被控制?书尾赫然写道:“你很有可能统治世界,如果没有机器人抢在你前头的话。”

    《算法帝国》适合所有对科技史、信息革命、算法原理、数据分析感兴趣的读者阅读参考。

    《终极算法:机器学习和人工智能如何重塑世界》—— 佩德罗·多明戈斯

    算法已在多大程度上影响我们的生活?购物网站用算法来为你推荐商品,点评网站用算法来帮你选择餐馆,GPS系统用算法来帮你选择好的路线,公司用算法来选择求职者……当机器最终学会如何学习时,将会发生什么? 不同于传统算法,现在悄然主导我们生活的是“能够学习的机器”,它们通过学习我们琐碎的数据,来执行任务;它们甚至在我们还没提出要求,就能完成我们想做的事。 什么是终极算法? 机器学习五大学派,每个学派都有自己的主算法,能帮助人们解决特定的问题。而如果整合所有这些算法的优点,就有可能找到一种“终极算法”,该算法可以获得过去、现在和未来的所有知识,这也必将创造新的人类文明。 你为什么必须了解终极算法? 不论你身处什么行业、做什么工作,了解终极算法都将带给你崭新的科学世界观,预测以后的科技发展,布局未来,占位未来!

    “终极算法可以获得过去、现在和未来的所有知识,它的发明将成为人类最伟大的科学成就之一。”机器学习和人工智能究竟如何重塑我们的这个世界,或许你能够在这本书中找到答案。

     

    个人公众号:ACM算法日常

    专注于基础算法的研究工作,深入解析ACM算法题,五分钟阅读,轻松理解每一行源代码。内容涉及算法、C/C++、机器学习等。

    展开全文
  • 决策树算法的基本原理是递归地将数据拆分成子集,以便每一子集包含目标变量类似的状态,这些目标是可预测属性。 优势:可以快速构建挖掘模型,并且创建的模型易于理解 转载于:...

    决策树算法

    决策树算法的基本原理是递归地将数据拆分成子集,以便每一子集包含目标变量类似的状态,这些目标是可预测属性。

    优势:可以快速构建挖掘模型,并且创建的模型易于理解

    转载于:https://www.cnblogs.com/helloluo/p/7674109.html

    展开全文
  • 点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤离离原上草,一岁一枯荣。“推荐系统将成为未来十年里最重要的变革社会化网站将由推荐系统所驱动--- John ...
  • 1.数据挖掘:data mining,是一个很宽泛的概念。字面的意思是从成吨的数据里面挖掘有用的信息。这个工作BI(商业智能)可以做,数据分析可以做,甚至市场运营也可以做。利用Excel分析数据,发现了一些有用的信息,然...
  • 全球数据智能大赛(2019)由广西壮族自治区人民政府主办,面向全球人工智能优秀团队征集多领域的算法智力成果和解决方案,集结众智,探索数字广西的蓝图,共领数据智能未来发展。...
  • 数据挖掘建模过程 定义挖掘目标:理解任务,确定指标 ...挖掘建模:所属问题分析(分类、聚类、关联规则、时序模式、智能推荐),选用算法 模型评价:应用模型对应的评价方法,根据业务对模型进行解释和应用 数据...
  • 个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。推荐系统有3个重要的模块:用户建模模块,推荐对象模块,推荐算法模块。...
  • 数据肯定是无价的。...该技术利用特定的算法、统计分析、人工智能和数据库系统,从庞大数据集中提取信息,并转换成易于理解的形式。本文介绍了广泛用于大数据行业的10种综合数据挖掘工具。 01、Rapid Miner...
  • 一、关于互联网/电子商务的数据挖掘&智能推荐的概述 采用基于数据挖掘算法来实现推荐引擎是各大电子商务网站、SNS社区最为常用的方法,推荐引擎常用Content-Based 推荐算法及协同过滤算法(Item-Based 、User-...
  • 数据挖掘利用机器学习的技术来分析海量数据,人工智能也用机器学习的方法解决问题。如:个性化推荐,就是通过机器学习的一些算法、技术分析平台上的各种购买,浏览和收藏日志的海量数据,得到一个推荐模型,来预测...
  • 数据挖掘的一个经典案例就是尿布与啤酒的例子。尿布与啤酒看似毫不相关的两种产品,但是当超市将两种产品放到相邻...这时候我们需要借助数据挖掘中的常见算法-协同过滤来实现。这种算法可以帮助我们挖掘人与人以及商...
  • 研究了综合聚类算法、SVD分解算法、基于商品的协同顾虑推荐算法、基于用户的协同顾虑推荐算法和商品相似度算法等,结合推荐策略提出了基于知识图谱数据应用的智能推荐系统。证明了以知识图谱作为基础工具的数据应用...
  • 一、产品简介: 顶尖数据挖掘平台(TipDM)是广州泰迪智能科技有限公司自主研发的一个数据挖掘工具,使用JAVA语言开发,能从各种数据源获取数据,建立各种不同的数据挖掘模型(目前已集成数十种预测算法和分析技术,...
  • 近年来,人工智能非常火热,几乎涉及到了生活中的方方面面:语音识别、人脸检测、自然语言处理、数据挖掘推荐系统、游戏、智能机器人、智能医疗、智慧城市等等。 机器学习算法是人工智能的核心,是使得计算机系统...
  • 点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤离离原上草,一岁一枯荣。“推荐系统将成为未来十年里最重要的变革社会化网...
  • 数据挖掘是当前最活跃的领域之一。本书作者根据自己20年数据挖掘方面的经验,总结了数据挖掘的理论...本书可供数据挖掘、数据仓库、数据库等领域的技术人员参考,也可供想建立智能计算系统的企业信息系统管理人员参考。
  • 数据挖掘---六种最值得推荐的开源工具 作者:Chandan Goopta是加德满都大学(尼泊尔)的数据研究员,专注于构建情感分析的智能算法。 当前社会,说“数据就是金钱”是一点都不为过的。 在我们向一个基于app的世界...
  • 数据挖掘工具

    2018-05-20 14:10:55
    Mahout 提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。通过使用 Apache Hadoop 库,Mahout 可以...
  • 简介: 智能推荐大都基于海量数据的计算和处理,然而我们发现在海量数据上高效的运行协同过滤算法以及其他推荐策略这样高复杂的算法是有很大的挑战的,在面对解决这个问题的过程中,大家提出了很多减少计算量的方法...
  • 目前推荐系统研宄的主要趋势是从单一的、独立的推荐系统算法逐渐向组合多种推荐算法形成混合式的综合推荐算法方向发展,越来越多的结合用户标签数据、社交网络数据、上下文信息、地理位置信息。群体推荐也成为一个...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 286
精华内容 114
关键字:

智能推荐数据挖掘算法