zoukankan      html  css  js  c++  java
  • An Algorithm Summary of Programming Collective Intelligence (1)

    就按照最后一章的顺序来说吧。很多名字都不知道中文该怎么说,就直接用英文名称了。

    Naive Bayesian Classifier 朴素贝叶斯分类器
    nb算法是通过学习样本中已经分类的条目,计算生成条目中的特性相对于类别的概率矩阵,然后根据待分类条目中特性在这个矩阵中的值来反向计算条目的类别概率。

    P(Category|Item)=P(Item|Category)*P(Category)/P(Item)

    在静态样本中,P(Item)是固定的,所以可以去掉简化计算。但是如果样本集是动态的,就需要考虑进来。

    P(Item|Category)=P(Feature1|Category)*P(Feature2|Category)*...

    优点:
    速度快
    增量训练时可以不使用旧样本
    容易理解
    分类效果往往比想象的好
    缺点:
    对于内容庞杂的大分类来说效果不太好,特别是出现比较中性的特性组合时更是如此。

    Decision Tree Classifier 决策树
    dt算法进行分类计算是很简单直观的,它的技巧在于决策树的构造过程。样本是已知的条件结果数据矩阵,需要决定的是用来分类的条件顺序。为了得到这个顺序,就要针对每个条件计算单纯应用这个条件分类后结果的混合度,也就是看用哪个条件来分可以分得更清楚一些。确定了最好的分类条件,就把数据分开成若干子集,对每个子集再计算最佳分类条件,以此类推,直到子集只包含一个结果或者达到某些终止条件。

    dt算法有两个有意思的地方。一是如何计算应用某个条件得到的分类结果的混合度。书里面给了一个简单的计数算法和一个熵算法(好亲切啊)。

    p(i)=frequency(outcome)=count(outcome)/count(total rows)
    Entropy=sum of p(i)*log(p(i) for all outcomes

    进一步计算information gain:
    weight1 = size of subset1 / size of original set
    weight2 = size of subset2 / size of original set
    gain = entropy(original) – weight1*entropy(set1) – weight2*entropy(set2)

    另外一个有意思的地方是对不同类型的条件数据如何选择分类点。对于是否问题这个比较容易解决,但是对于数值或者字符串或者更复杂的类型就要特殊情况特殊处理了。

    优点:
    结果简洁直观
    可以处理不同的条件数据类型
    缺点:
    不能通过增量训练来改进,生成决策树必须使用整个已知样本集。
    大数据集可能存在的众多条件会产生巨大繁杂的决策树,分类计算会变得缓慢。

  • 相关阅读:
    mysql的安装、启动和基础配置 —— windows版本
    Navicat安装及简单使用
    期货黄金与现货黄金比较
    android 网络编程--socket tcp/ip udp http之间的关系
    socket、tcp、udp、http 的认识及区别
    Android数据传递的五种方法汇总
    android 应用程序Activity之间数据传递与共享的几种途径
    Android数据存储的五种方法汇总
    Android终端与服务器数据传输解决方案
    转载 解决Android与服务器交互大容量数据问题
  • 原文地址:https://www.cnblogs.com/ysjxw/p/1148887.html
Copyright © 2011-2022 走看看