阅读手扎-智能web算法

作者 Caligo 日期 2018-08-29
阅读手扎-智能web算法

阅读手札-智能web算法

0 一些名词

分类 聚类

本体 本体引擎 本体管理 朴素贝叶斯

1 什么是智能web

1.1 应用的意义

系统在做出反馈时回考虑到整个系统中所有的用户在不同时间的输入和行为,并对其他各宗可能有用的信息加以利用

​ 周前有在<36氪>看到的一篇文章,作者强调了算法对于公司的重要性。腾讯的传统社交系应用时间在被头条系侵蚀,以及微视一直是个扶不起的阿斗的主要原因便是腾讯在数据的聚合和推荐算法上弱于头条。虽然有些夸大其中的作用,但头条系对推荐算法的应用确实比较强,投入也很多。作者指出了未来的发展趋势应当是信息找人,不论是现在电商的推荐还是社会资讯,系统应该都有一套体制针对不同的用户真正做到千人千面的地步。

​ 个人体验中手淘首页是比较明显的,针对每个用户在手淘首页的banner广告有不同的推荐,常常是用户经常逛的店铺等。笔者拿家里长辈的手机刷淘宝推荐的时候也看到了这个明显差异。

​ 但同时,也有不少用户对这些技术产生了恐惧,“生活好像被这些大厂给监控了”,厂家对于技术的应用,可能也需要把控到一个度。

​ 需要做进一步的思考,是否要给用户这个on/off的开关,或者说,用户是否知道他们要什么,对技术的恐惧和信息找人、千人千面的技术运用推广,哪一个更切中用户的内心呢?

1.2 应用实例

搜索引擎、电商、Netfix(视频类)、predict Wall Street(股票指数)、

1.3 构建智能web应用的基本要素

  • 内容聚合

  • 参考结构

  • 具有学习能力,且能处理不确定性的算法

    所以什么样的应用受益于智能,首先要看的就是他的内容是否可聚合,有关联性。从社交网络、门户网站、wiki、文件分享网站到网络游戏,这本书所介绍的技术都能应用到其中并大放异彩。

1.4 构建方式

  • 审查应用的功能
    • 用户使用的目的
    • 如何吸引用户
    • 如何增加商业价值
  • 数据
    • 来自内部的数据够不够用?
    • 需要更多数据吗?怎么拿来这些数据

1.5 八个误区

不要完全相信你的智能系统

2 搜索

​ 接下来的内容,作者介绍了一些历史和现行的算法,作为产品方向的笔者未对其进行详细的实习等,阅读目的是为了了解算法实现思路,实际上能有时间和能力对算法进行一一了解会是一件更好的体会思路,便于和技术交流的方式。

2.1 Lucene

成熟的项目,目前仍在使用并扩展

2.2 PageRank

链接分析,通过一个网页自身被链接的数目加其权重,使其排序在前

书中还展示了参数的影响

2.3 智能概率技术

NaiveBayes朴素贝叶斯分类器

2.4 DocRank

处理非网页的文件,未应用披露,抛砖引玉式的启发。

3 推荐系统

​ 系统如何影响你的选择,如何给你选择,从传统不断输出信息来期望影响你的偏好到基于你的偏好诱导你去选择。在推荐系统中,了解到协同过滤和基于内容的推荐引擎。推荐内容需要满足两点,一是命中用户的偏好,而是避开用户不喜欢的内容

3.1 定义

通过距离来类定义相似度

  • 距离>=0
  • 距离为0=相似度为1;距离为1,相似度为0
  • 对称性

协同过滤

  1. 计算用户或条目间的相似度
  2. 根据其他用户评分的加权平均值来计算某个用户对一个他未评分条目的预测评分

基于内容的推荐

  1. 依赖用户间、条目间或者用户与条目间内容的相似性
  2. 即使没有评分数据也可以度量两个文档之间的距离

3.2 相似度的计算

  1. 朴素相似度 - 欧几里得距离

  1. 双曲正切函数

  2. 雅可比相似度

3.3 基于相似用户的推荐

3.4 示例

MyDiggSpace.com

  1. 通过用户间相似度及用户的内容相似度来寻找相似用户
  2. 通过用户-条目-内容、用户、条目相似度来做出推荐

组合多个推荐系统

Netflix

大型推荐系统 - 依赖 基于条目的协同过滤推荐器

  1. 数据标准化

  2. 邻居的选择

  3. 决定邻居的权重

3.5 大规模实现与评估

RMSE 均方根误差

机器精度

4 聚类:事物的分组

4.1 聚类的需求和意义

对有多个属性的记录条目,一般的sql操作较难达成目的

给出了sql和java数组尝试操作的事例

下面这段话指出了聚类属于无监督学习,我觉得很重要

4.2 基于分组结构

  • 层次

    • 凝聚型层次

    • 分裂型层次

  • 划分

    • k-means 迭代优化
    • MST最小生成树-划分版
    • 最近邻居算法-划分版

    两种基本思路:概念建模和迭代优化

4.3 基于数据类型和结构

4.4 根据数据规模的聚类算法

  • 针对大数据集的聚类算法

  • 处理大型数据库的聚类算法应具有以下特性

4.5 基于链接的算法

适合用树状图数据结构来表达聚类结果

  • 单链接算法

    • 尽可能多的找出图中的连通分量,两点间的最小距离小于或等于相似性阈值
    • 时间和空间复杂度都是$$O(N^2)$$
  • 平均链接算法

    • 控制显示度圆圈的大小
    • 检查分属两个目标聚类的两个数据点之间的平均距离是否小于相似度阈值
  • 最小生成树算法

    • 生成树的概念复习一下

  • 缺陷 - 连锁反应

    • 两个聚类中如果有两个点之间的距离非常近,那么无论其他的点之间的差别有多大,两个聚类都会被合并

4.6 k-means算法

  • 核心

    聚类的中心点,将组成聚类的元素想象成一块有质量的物体,聚类的中心点就应等同于这块物体的质量中心

  • 优势

4.7 ROCK链接型聚类

  • 优势

    适合于类别型数据,能很好地处理大型数据集

  • 自底向上层次凝聚

  • 步骤

4.8 DBSCAN基于密度的算法

发现数据集中的聚类和噪声

说明

步骤:

4.9 超大规模数据集

面临的问题

  • 计算复杂性

  • 数据的高纬度

    有许多属性,一般来说属性维度>16就会带来麻烦(维度灾难)

5 分类:把事物放在它该在的位置

  • 本体:概念、实例、属性

  • 分类:统计算法、结构算法

  • 回归:使用特定的模型拟合数据,预测连续变量的值

  • 贝叶斯理论:结构化、概率分布、决策树

  • 贝叶斯网络:贝叶斯理论+概率网络结构,描述分类问题中多个变量间的依赖关系

  • 分类器的生命周期:训练、测试、在生产环境中使用

5.1 朴素贝叶斯分类器

wiki地址

知乎-教你明白什么是朴素贝叶斯分类器

5.2 基于规则的分类器

DROOLS规则引擎

讲解

5.3 神经网络欺诈检测

混淆矩阵与置信区间

6 分类器组合

一个信贷价值系统的判断测试,11个属性,使用基于贝叶斯算法的分类器,神经网络分类器,一个新引入的决策树分类器

6.1 在同一个数据集中比较多个分类器

  • McNemar检验 - 2个分类器

  • 差额比例检验 - 2个分类器

  • Cochran Q检验与F检验 - 三个及以上

6.2 bagging:Bootstrap聚合

详细…这里看得很马虎

6.3 Boosting基础

7 智能技术汇集

主要是做一个智能新闻门户,汇集了多项智能技术

步骤主要有:

  1. 从互联网中获取并清洗内容爬虫 搜索
  2. 新闻搜索rank
  3. 分配新闻类别 分类
  4. 创建新闻组 聚类

8 总结

  1. k-means很常用,准备学习一下SPSS
  2. 智能技术汇集其实写的很好,通过一个实例对书里介绍的所有技术进行了使用,有时间多复盘,和现在做的电商类产品也有点关系(虽然要离职了)