大数据专题-笔记

Please contact me about any legal issues.

声明

课程笔记,授课教师:
李影 大数据系统核平台 NoSQLDB 大数据计算引擎spark/tensorflow
刘宏志 分析、算法
张齐勋 3案例设计:数据收取分析,搭建大数据平台,平台调优

引言

柯达→索尼(数码领先)→诺基亚(手机=照相机)(被微软收购合并,大量裁员)→苹果(smart phone)→手机大战-三星领先
传音手机 解决African People拍照的人脸识别,小而美
大数据中很多都是非结构数据,e.g.图像

“如果网络能够解决人与企业之间沟通的问题,那么会带来两场革命,一是计算,二是商务。” ——by ==Louis ?==
预言准确
数据中心系统:性能差的机器、故障是常态。
基于此基础设施,实现高性能支撑,并可进行机器学习、人工智能等

Gartner 市场咨询企业
新兴技术成熟度曲线
e.g. 去年深度学习“寒冬”,每种技术都会经过反省期,后来形成方法论指导(也可能消失被取代),逐渐发展
2018年AI普惠,区块链,生化芯片等处于热潮
知识图谱未来对机器学习可能有很大推动
技术不断创新,树立全局观

从技术创新长波理论看新一代信息技术

IT正在颠覆传统行业
能力 应用 成本 是IT发展的3大目标
追求能力的提高,迫切要求应用的广度、深度,成本的要求

摩尔定律:晶体管数量每18-24月增长一倍
梅特卡夫定律:网络价值随用户数量的平方数而增加(用的人越多价值越高-流量)
贝尔定律:计算机每10年更新一代,面向新应用,价格更低
香农定理:信道最大传输速率与?的关系==?==

早期面向能力和成本
“注意力的经济” 互联网商业价值开始体现
Backrub→Google
后摩尔时代:①质变:改进/替换图灵机、冯诺依曼结构……量子计算机、类脑芯片…… ②量变引起质变:资源聚合,云计算、泛互联网……
梅特卡夫定律和贝尔定律成为主导,取代摩尔定律和香农定理
未来形成 新平台、新模式、新思维
互联网+移动互联网(人)+物联网(物)
开源机器学习平台 tensorflow …
量子计算机,类脑计算机(比特大陆)
人类智能 vs 人工智能 差距仍然很大

符号主义 逻辑推理
连接主义 神经网络、深度学习
行为主义 ==?==
小样本学习,基于贝叶斯程序学习等概率学习方法,应该是下一代人工智能的重要方向

深度学习探索we don’t know what we known
传统算法总结 we know what we know
情感、意识的深度学习模拟 we know what we unknown 脑科学继续探索

大数据是新一代信息技术的业务引擎

《大数据时代》
数据产生方式:运营式系统数据(数据仓库,知识系统)+用户原创数据(Web2.0 带动大数据e.g. Hadoop发展)+感知式系统数据(物理世界-互联网)
数据资源:可再生,待挖掘

特点

  1. 数据量巨大
    且增长迅速
  2. 数据类型繁多
    10%结构化数据,存储在数据库中
    90%非/半结构化数据,与人类信息密切相关 e.g.简历=半结构化数据
    e.g. 结构化数据 远程监督学习 类自然语言中挖掘信息 👈互补
  3. 数据处理速度快,价值密度低
    时间窗口变小,仅在极短时间内具有价值 - 密度低
  4. 数据不确定性
    e.g. 自动驾驶:①先检测车辆、行人,再规划路径,再控制方向②端到端学习将视频、雷达、激光测距都丢给学习算法,直接控制方向 但是干扰因素很多,小的扰动就会造成波动-深度学习的模式规律难以总结

    应用

    Jim Gary 实验归纳→模型推演(公理)→仿真模拟(理论指导下 计算机)→数据密集型科学发现(没有明确目标,从中总结)
  • 描述性分析
  • 预测性分析 pattern👉套用
  • 规范性分析 优化/决策

e.g. 银行客户保留 根据描述性分析的结果,不正常行为的pattern,进行预测性分析,采取关系策略
仅进行数据分析是不能产生价值的,要将分析结果应用于现实~
e.g. 微软城市计算 高维数据,速度块,稀疏性→分析城市道路网中的不合理规划,划分城市功能区域,连锁店布局,出租车扒活/拼车,自行车空气质量细粒度检测……
e.g. 医疗领域的发展前景最优 患者相似性分析→疾病特征
e.g. ==OpenAI==

风险

  • 大数据有预测失误
    e.g. Google 流感预测-依赖搜索 效果不佳
  • 数据可能说谎
    e.g. 飓风前夜 - 食品大量采购 推特数最多 - 飓风中心?wrong!
    ==产生数据的可能是特权阶层==
  • 盲点
    自主智能系统无法找到真正能评估其持续性影响的方法
    与训练集有关
    e.g. Uber L4自动驾驶车辆车祸致人死亡
  • 偏见
    e.g. 面部图像自动犯罪概率推断

    技术挑战

  1. Raw data
  2. 关联 不等于 因果
  3. 弱智能:不同数据集、不同特征集合、不同应用领域迁移的问题
  4. 理解性(可解释性)差:图片加扰动可以大幅影响结果
  5. 可拓展性差:算法、数据、算力 推动AI发展的3大动力 AI算力每3.43个月需求增长一倍(超过摩尔定律)∴深度神经网络精确度接近饱和,每增长一点对算力的要求提高很多,投入产出比很低,应该考虑3个主义中的==行为主义?==

    大数据平台的挑战

    大数据平台

    数据量大,数据模型规模(参数)大
    ==Big Data, Big Model and Big System==

    层次

    操作框架
    数据集成
    数据分析
    计算框架//资源管理器&?
    数据存储//
    文件系统

大数据系统中算法只占核心一小部分,依赖数据收集、可视化、机器资源管理、存储……

Fine Lab
重点讲计算框架和数据存储

李影-大数据平台,NoSQL…

讲座: 联通研究院-大数据平台

刘洪志-机器学习算法 金融应用

张启勋-课程项目报告-决定成绩

  1. 大数据平台搭建,优化 benchmark
  2. 收集数据,简单分析预测分类

大数据平台

最底层-文件系统 HDFS

数据存储-

Lenovo: Spark-大批量大量查询无法满足, Pycum仿照angel

ZooKeeper-资源协调器:协调计算框架+数据存储

过去:

运营系统-产生数据

底层小型机+关系数据库+中间件Apache(J2EE事务型)+在线数据分析挖掘-与现在算法差不多-数据量小

问题: 海量数据,大量并发,实时,拓展

用一个集群的资源-仿佛一台机器-可扩充

分布式: 可扩展性 指标

单节点-scale up-针对机器修改-难度高-AIX操作系统-

scale out 单节点不变, 数量增加-软件目前<8000

云计算-scale out-弹性拓展

文件系统

对操作系统存储空间的抽象,对下屏蔽物理设备,对上提供用户统一的对象化接口

分类

本地,网络,分布式

分布式文件系统

分布在多节点-对上统一管理

常用Client/Server模式

能力

存储管理,容错(分布式中重要),高可扩展,高可靠,高可用(7*24可用-重要-99.99%=每年6hdown)

实例

GFS HDFS(GFS简化实现) TFS(淘宝) Ceph(块+文件 集大成) RCFile(Facebook)

GFS

组件component(网络,硬盘-所有硬件中最易坏)故障是常态

逻辑块-可以无限大-存到硬盘时则有IO等很多的限制

HDFS < GFS

主控服务器NameNode Master

数据服务器 DataNode ChunkServer

文件块 BLock CHunk

数据包 经过IO操作,对性能影响大-累计一定再写 Packet /

HDFS-单点故障-NameNode-对其备份-Secondary NameNode(DataNode已经相互备份

Append-GFS多客户端并发模型…等

HDFS

分Block-每个BLock至少3份,对硬件检测

适合批量:一次写入,多次读取(一般读>>写),更强调吞吐量(单位时间),低延迟(每个请求处理时间-高性能计算机强调),成本-强调资源利用率,要求数据均衡

基于TCP/IP

DataNode启动时向NameNode报告,定期向NameNode心跳,接收客户端读写

Replication:写冗余-机架感知策略 1 2另一机架 32的机架另一机器 防止整个机架网络down;读-client最近块

心跳包

数据完整性验证

删除-仅目录

TFS

对开源的改造,企业会使用开源作为基础,定制

1.0

NameServer-文件目录信息

DadaServer-块

Client向NameServer查询,与DataNode传输

2.0

+RootServer 分配MetaServer

+MetaServer 对目录再做一层缓存

+ResourceServer 管理应用(权限,统计),管理集群(扩容)…-很多NameServer+DataServer集群

Ceph

三种存储服务-三种接口

  1. 块存储
  2. 文件存储
  3. 对象存储

示例

社交媒体存储

关注列表 join 活动列表 join 活动列表 …

实时统计-每天点赞量-二级缓存

数据存储

(目前前4名都是SQL no.q Oracle, no.5 MongoDB,虽然大数据发展迅猛)

SQL适合数据规模小,对事务要求高

数据结构简单,规模大,适合 Key-Value; column-based, Document, graph 逐渐适合数据结构变复杂,规模变小; 不知道用什么的时候适合MongoDB,更类SQL,与之处于同一y=kx线

关系型

  1. 读写压力大,存储量有限

    可以分库分表

  2. 横向扩展难,表结构

    分库分表

  3. 分库分表

    管理难,需要修改代码

  4. Master-Slave

NoSQL = BASE数据库

分布式数据管理系统

(简化存储,加强管理)

不完全遵循ACID

最大区别不事先定义Schema(表结构),易拓展

事务

A原子性,C一致性,I隔离性,D持久性

e.g.银行转账

隔离:若没有隔离,则时间顺序可能穿插,可能钱款没有到账就开始转出.一个事务完成另一个事务才能执行 简单实现方法-加锁

DBMS中的基本单位

C一致性

  1. 强一致性 ACID

    分布式难以做到,且分布式基于网络协议

  2. 弱一致性

  3. 最终一致性

  4. 不一致性窗口

    分布式

    取决于:1)交互延迟2)系统负载3)复制中replicate

CAP

一致性,可用性,分区容忍性 Partition tolerance

分布式系统-网络+节点不可靠 -需要分区容忍性(可能数据不一致)

e.g.强事务型不允许读到历史值,分布式系统中易由于网络故障读到不一致数据

3选2 APnotC

BASE

最终一致性,一定P

基于CAP演化

牺牲强一致性-基于网络-必修AP

基本可用A:出现故障时可损失部分可用e.g.降级页面,保证可用

柔性状态:

BASE数据库 = NoSQL AP CP均有

分类 (按最小单位)

Key-Value

ordered key-value

colume列族(big table): 层层嵌套 key-value (3key-行列时间戳)

document: 半结构化 +schema+index

graph: +order,key可以为map/document 可多层深度查询-好友 具有节点之间关系,又像SQL靠近

Key-Value: Dynamo (Amazon) Cassandra 键值对

Ordered Key-value 增加key之间连接

Colume Oriented: BigTable 读取快速 HBASE 三维键值对

Document: MongoDB 多个键值对有序组织在一起

Graph: Neo4j 强调节点之间关系

Key-Value数据库

Dynamo

Amazon云服务提供,API

key叫做attributes

可无限拓展-云服务

读写很快

容错

可以与Map-Reduce(Amazon提供)直接

列数据库

Big Table

建立在GFS Clubby table 之上

HBASE 列数据库

适合读操作密集型的应用,

行数据库:按记录存,存储所有列,读取时会读取不必要的列

列数据库:e.g.价格作为一列,存在一个store中

HBASE

数据模型类似big table

族-family-列的聚合

store-family的聚合

互联网应用-一般单次写,多次读-按列读-根据colume name即可→若为行数据库-会读取大量无关信息

Document DB

MongoDB

模式自由,数据结构松散

支持类SQL语言操作

自动分片:支持动态,自动化扩展-当表扩大后-在机器间分片

(适合网站动态数据,不适合事务-原子性-回滚,不适合传统商业数据)

基本单元-Document文档,类似SQL中的行

Collection-SQL中表

MongoDB-Collection-Document-键值对

文档

多个键有序存放

不能有重复的键,键名区分大小写

键值可以是内嵌的文档

_id不是其中一个key,是Document的唯一标识符

读操作

类SQL语句

e.g. db.student.find({name:”Tim”,age:20}).sort({sex:1,grade:-1}) .limit(5)//1正序 -1倒序 取前5个结果

.count()//计数

写操作

.insert({…})

.update({find…},{modify…})

聚合操作

db.student.group({key})?

集群

shard server: primary DB secondary DB

config server: 集群元数据 逻辑与物理数据映射

route server: 客户端访问接口-将client请求发送给集群;含有balancer-负载均衡(迁移)

分片 Sharding

物理磁盘不够/放到内存中提高性能/写数据性能要求

数据并行:分割数据

scale out 增加机器 -适应上层高吞吐量

scale up 提高单机性能

How to ?

指定key对collection分片,放到多个chunk(默认64MB)上

chunk分布保存在多个Shard上-根据Shard资源放置多个chunk

chunk大小可能改变-当超过chunk size后自动分片(只会分裂,不会合并)

chunk在shard之间迁移-shard之间不均衡时

(chunk size↑ sharding↓ shard数目↓ 不均匀 网络传输次数↓)

图数据库

属性图形property graph: 节点+关系+节点 三元组,均带有属性

GCN 图神经网络

Neo4j

基于Java

数据结构不是必须的

适合几度好友的查找

计算框架

分布式机器学习平台

机器学习的程序与普通程序的区别:

  1. 容错 容许中间结果的错误

    e.g. 深度学习中间层

  2. 动态依赖的结构

    模型参数间依赖关系变化

  3. 非统一的收敛

    不同次数迭代才能收敛

    收敛是评判的指标

分布式异构环境-特点-现状:

  1. 计算节点能力差异

  2. 网络带宽有限

    消息同步-若占用大量带宽-可能训练很慢

  3. 集群中经常出现故障-硬盘最容易故障

并行-加速计算

均涉及参数同步问题

  1. 数据并行
  2. 模型并行
  3. 混合并行

同步协议

  1. BSP bulk synchronous parallel

    整体同步,worker之间需要等待-barrier-进行communicate-结束后再次compute

    收敛性好,处理速度慢

  2. ASP asynchronous synchronous parallel

    完全无同步线,节点独立更新模型参数

    执行速度快,收敛性差 (没有计算资源浪费)

  3. SSP stale syn… 有限异步同步协议

    设定staleness - 最长等待的迭代轮数

    保证理论收敛性的同时加快执行速度

同样时间内准确度,stale 32 最优

####框架演变

MapReduce同步,数据并行

参数服务器 同步+异步 数据并行+模型并行

MapReduce

Master将user program fork到worker(mapper/reducer),map作业数量与split个数对应

map结果默认对key hash-patition-reducer,由moaster执行,并通知reducer

对文件系统读写:至少3次,影响性能:1中间结果写2中间结果读3最终结果写

Map - shuffle - Reduce

shuffle:对map结果分区排序分割(根据patition的key),若没有shuffle,reducer得到的数据分片数很大

user program被fork到workers上

map - 分割数据,实际就是数据并行,\

中间结果读写磁盘(文件系统)

(环形数据结构)

Spark

基于内存的计算 Hadoop(mapreduce)基于磁盘

Spark提供了多种数据集操作模型,60%内存缓存结果-RDD; Hadoop则只有map,reduce,不能缓存结果

适合实时大数据量,不适合增量计算/…

RDD

DAG-计算前构造的数据模型-内存中

数据抽象为RDD

只读的分区记录集合,不可修改 -数据分区

属性:

  1. 一组分区(partition) 按key分
  2. 一个计算每个分区的函数
  3. 依赖dependencies 描述RDD之间的lineage

Rdd1从HDFS中读出(多个)数据文件得出,Spark默认一个block一个分区patition; 对rdd1做filter,生成新的数据集合rdd2;则rdd1与rdd2之间的依赖关系为filter(rdd只读,做修改只能生产新的rdd)

RDD操作(前面提到比MapReduce支持操作多):

  1. transformation

    数据集内容修改

  2. action

    计算,将内容规约为一个值返回给驱动程序

    e.g. collect()

    惰性调用 只有执行到action操作才真正计算,其他只是记录RDD生成的轨道-DAG图

DAG

依赖关系(根据依赖划分stage):

  1. 窄依赖关系

    父子关系1:n/1

    从父出来只有一条线

    一个stage

  2. 宽依赖

    从父出来的为多条线

    换分stage的依据,需要patition-shuffling

Job 多层分解

job=n stage

each stage 对应一个 taskset(一组无shuffle依赖的task组成)

Scheduler

Storage

管理缓存的RDD

三层结构

  1. 与外对接task
  2. task管理
  3. task物理执行

Standalone

Yarn

与standalone类似,与spark配合,也可与MapReduce兼容,可以跑MapReduce/Spark,商业环境中常用

Shuffle

跟MapReduce差不多

其他 Mlib GraphX

流式计算

2个经典: Spark Streaming & Storm

Spark Streaming

按照时间(设定值)切块-RDD

多个RDD组成Spark Job(内部切分stage-task…跟前面大数据计算一样)

通过DStream的接口进行操作?

Storm

延时低,吞吐量小 - 相比Spark

Topology

相当于MapReduce中的Job

Spout & Bolt 执行不同功能的节点

Spout

产生数据流,定义如何读取数据

实现 nextTuple()函数,可以规定每隔100ms读取一次

Bolt

执行和处理

可以调用外部Python函数,e.g.Split Bolt可以规定按照work向外发送;Workcount Bolt可以规定如何进行计数

ack函数-可靠性API 已经写好,可以直接使用/继承

弹送结果-可以规定有更新即弹送

Tuple

一次消息传递的基本单元

由field(键值对)组成

n个组成Stream

Stream Grouping

消息传递/分组方式

6种

示例 WordCount

Spout(读取句子) Bolt1(split单词) Bolt2(count)

组件并行数-几个同时做(spout/bolt)

tuple是键值对-bolt中可设置程序进行读取及操作

运行结构

Nimbus

负责资源分配&运行调度-放到那个节点

Supervisor

接收Nimbus的任务,在每个节点有一个,管理其上所有worker

是一个进程,管理并行数-进程(worker)-线程(executor)

并行数-有几个bolt/Spout线程,不一定在哪个/Supervisor上,但每个Worker只会执行一个topology,通常一个executor执行一/n个task(spout/bolt)

(为什么可以n个:(可拓展性))

Worker

进程,运行具体处理逻辑

每个Worker只会执行一个topology

worker数在集群启动时设定,也可在程序中修改(扩展)

示例

Green并行数2-线程(executor),但setNumTasks(4),所以一个线程具有两个task

两者对比

Spark Streaming 处理对象是RDD(一段时间数据),延迟度秒级,但吞吐量高,不支持动态调整

Strom 数据流,对每一条数据实时处理 实时性高,吞吐低,支持动态调整并行度,适合对实时要求高的,纯计算型,不能(类SQL)交互性查询

分布式计算框架

Pregel

图计算框架

e.g. 传播最大值,被传播完后变为inactive

深度学习

黑盒

典型:

  • CNN-空间相关性

  • RNN/LSTM-时间相关性,自然语言常用,需要时间上的关系

编程语言:

  • 命令式 明确指定流程
  • 声明式

框架:TensorFlow Caffe Torch Theano MXNet

TensorFlow

Tensor 张量 N(>=3)维数组

Flow 流

图 边表示张量(数据) 节点表示操作 数据流过操作 数据流

没有数据流过的是控制依赖

线性回归:

张量

  • 阶 rank
  • 形状 shape [ , , ]

0维张量=纯量

线性回归

Y=Wx+b

若用TensorFlow,需要两个计算节点(乘,加)

  1. 定义图,规定图中有哪些操作,如何计算
  2. 定义Session,run session
  3. 定义损失函数,使之逼近结果?

learning rate: 步长,太小-训练慢;太大-可能无法达到最小值无法收敛

换模型,主要是定义图的部分需要变-定义每层的计算节点

1 epoch-对所以数据训练一次

读文件系统中的图片,calssify一次就是一次epoch,文件名列表每次epoch产生一个

TensorFlow 可以单机:client Master worker同一机/分布式-多个worker分开

session.run Master接收图,裁剪子图-不同worker(worker&ps参数parameter server..)

参数同步:BSP ASP SSP

TensorFlow支持: 数据并行(between grapg replication)/模型并行

数据并行

同步数据并行

保证了一致性,但会被一个拖累

异步数据并行

三个model分别

模型并行

计算量大的单独分配GPU

另一种并行对模型切分要求对模型了解高,一般采用第一种

TensorFlow的计算速度很快,single/2 layer NN效果较好,异步效果比同步好

资源管理 Yarn

Yarn: resource negotiator

Hadoop 1.0 单个jobtracker 独占,可伸缩性差

Paxos

对提案达成一致,包括proposer&acceptor fail的情况

总结

整个大数据平台的框架

存储:HDFS文件存储,NoSQL(4 types)(CAP BASE),

计算平台:Spark(SDD…) Storm(Spout bolt Stream-grouping)

TensorFlow(定义图,Master图切割,worker,数据/模型并行)


刘宏志老师部分

王志军 电信运行商大数据平台现状分析及发展趋势

wangzhijun1@chinaunicom.cn

电信运营商的数据

(使用人数>中国总人口)

服务:网络(固定电话~,移动~,宽带接入~) Internet(互联网的基本设施又运营商主导构建 教育网连接到国外网络时也是通过运行商)

宽带IP网络(包括固定接入的网络,和移动?一般的网络)

标准化交换组织 ITU(3GPP 实际上4G 5G 都由 3GPP制定) ETSI(欧洲使用的标准) GSMA

电信运营商与网络

1G最早 使用 modem固定电话网 PC

2G WAP+拨号-手机 ADSL-PC

2.5G/2.75G GPRS/Edge(更快)-手机 FTTH(光纤)

3G 2005年开始, 标准: TD-SCDMA WCDMA CDMA2K(移动联通电信) 实际上说的速率(42Mbps;5G 10Gbps是基站速率,需要共享)

4G/4Gs 主流协议(TD-BPS FDD-LTE) (基础设施->)云 + 管 + 端

网络与系统架构

Restful API 接口 能力开放平台-提供 给上层云端(第三方)应用

下面是支撑系统+网络+IDC+数据 支撑系统(好几个子系统,几十个小系统)中计费账务系统是难点(出账期间无法进行其他业务,国外计费);

底层:终端+终端应用

现在其实5G标准只是制定了部分

运营商中的数据:信令面(好多点采集),用户面(采集S-GW/P-GW和GMSC两点),管理面

(寻呼数据:接电话时已经知道在哪个区域中(不是没变化一个基站都需要知道,会对终端耗电,可能包含几十个基站),该区域中寻找手机所在IP)

3G 电话 GMSC server端口,连接到其他运营商网络

流量采集 光纤中复制一份 / DPI(深度报文检测 wireshark,能将HTTP TCP IP层的数据都打开看,知晓流量)

运营商采集数据-用户画像(实际都是包头数据,不会侵犯隐私)终端IP,访问IP,基站(位置),使用的流量…

运营商数据

基于通话记录(时间,频次)可分析身份,上网,位置,社交,支出,通信,终端,时序

BAT等互联网公司的数据相互割裂,运营商是数据管道(无法获取内部数据);运营商通过唯一ID整合各类数据

中国联通-98+PB数据存储规模(仅包含最重要的数据,有存储周期

解决流量透明消费问题

流量消费不如语音消费透明,没有明确感觉

上网记录是典型的大数据,流量巨大 采用何种方式存储和检索是一个问题

Hadoop刚开始运营商不敢用,需要解决很多具体的问题,需要输入一个key查到上网记录,可以将时间包含到key中,录入HBASE详单库,向用户提供自动查询Portal

而且HBASE中的数据可以做用户分析(实际上查询的请求并不多)

大数据应用

上下文context信息库

经营分析系统

旅游大数据

信息核验-支付二维码-位置判断异常

数据治理平台

5G

一个用户有1G带宽,VR需要4K 8K支持(才能舒适地使用)

超大带宽,超低延时,超密连接(物联网用户-每个传感器都有连接)

基于云的网络,X86架构上的云设备

IoT和大数据是

大数据软件技术栈

云资源调度管理-Kubernetes

短时任务管理-YARN

现在SQL On Hadoop 是一种新兴

大数据安全

运营中数据泄露

数据出境-需要申报

用户隐私问题

数据脱敏后将数据给别人,需要数据溯源

区块链-用户确权,交易中防篡改,区块链技术需要找场景

总结

云-资源弹性分配,数据太多

后来 需要大数据挖掘产生价值,云ABC耦合性越来越高

数据安全,隐私保护

机器学习

刘宏志 liuhz@ss.pku.edu.cn

为什么需要机器学习?哪些场景?

人工处理成本高/处理困难(数据量很大)

e.g. 手写数字识别-邮编

e.g. 垃圾邮件识别-根据词-邮件服务器完成;互联网欺诈;信用风险预测—人难以处理

机器学习 根据历史经验-形成模型(通常一个模型只能用于处理一个问题),评价标准通常也是只针对一个问题

学习形式分类

有监督学习:通过历史输入&输出,生成映射函数 e.g. 分类,回归

无监督学习:直接对输入(没有输出,即正确答案未知)进行建模 e.g. 聚类

半监督学习: 少量标注样本+大量未标注样本

增强学习: 学习从环境状态行为的映射 带时间序列,(前三种都是静态) e.g. 自动驾驶中图像识别


天气/湿度/刮风-是否打球的例子

分类 - 贝叶斯算法

观察样本,求后验概率

因素均独立&等价

决策树算法

推理被观察者的决策过程,利用训练数据构造决策树

各因素不是独立等价的,不同人的优先级考虑不同

逻辑回归 LR

直接利用训练数据估计P


半监督学习

如何把未标记数据变为有标记数据?

模型假设

  1. 平滑假设

    稠密区,距离近的,类标签相似

  2. 聚类假设

    同一簇,标签相同

  3. 流形假设

自训练

最关键的是从预测结果中选取置信度最高的K个样本-认为其标签准确,但实际上是包含错误,将其认为父样本-误差迭代放大->自训练次数不能太多 (优点:简单易行)

协同训练 Co-Training

特征分为两个集,独立同分布

单独训练一个分类器,将置信度高的样本加入另一分类器的训练集

认为两个分类器的错误不同,避免错误的迭代


期望最大化算法 EM

最早的半监督学习


(第二次课)

大数据革命

1.0 社会大数据

2.0 消费大数据

3.0 金融大数据 直接使用虚拟的数据-金融获利

金融大数据

数据来源

  1. 证券期货业

    实时行情+历史+外部统计数据+新闻资讯

  2. 银行业

    交易数据+采集视频+网站行为数据+媒体社交网络中信息

  3. 保险业

    保单理赔电话等传统数据+定价(保险业最重要的)

量化投资

数学模型代替人为的判断

利用计算机技术历史大数据

传统投资

巴菲特-价值投资 ->均为 定性投资 (对个人素质,经验要求高)

多因子选股模型


课堂派 - 作业

本课主题: 大数据

获取数据:开源数据集/自己获取真实数据-爬虫

爬虫作业 40’

至少爬一个网站的数据

电影平台

最后一次课 5.7/5.14小组项目验收

成都 2核4G CentOS 应用在华为云上展示

老师代码里使用的是自己搭建的数据库

  1. 爬一次等一秒
  2. IP池,随时更换

模拟真实用户访问,变换HTTP请求头

华为云

构建&发布 标签 可以将流程写成流水线,自动化

可以用华为云主机实验这样的平台,也可以使用开源工具自己搭建这样的平台,

基于Scrapy框架的爬虫实践

单页面

将HTML格式的数据抓取下来,根据标签定位,for循环

遍历每页,分析每页的URL,找规律

Scrapy:专门用来爬取结构性数据的Python应用框架,定制开发几个模块即可

使用Twisted,看不懂图,可以先写一个最简单的HelloWorld,就能看懂了

只需要写requests请求,解析response(可以解析出实体item/URL,进一步爬取),管道pipelines存储(可以不存,文件/数据库 items.py设置数据存储模板)

scrapy1.6.0 MySQL5.6/MongoDB

1
2
3
scrapy startproject xproject #创建项目,自动生成框架
scrapy genspider xxx xyuming #创建爬虫
scrapy crawl xxx #执行爬虫程序

步骤:

  1. 新建项目
  2. 设置items(需要存储的字段,设定即可)
  3. 设置pipelines.py存储方式(文件/数据库),在settings中修改存储方式
  4. 新建爬虫,设置爬取规则

爬单页面,只需要一个URL请求即可

分析页面,scrapy shell调试,看能否抓取成功

def parse #解析规则

多页面-修改请求URL

e.g. movie.douban. tag

只需要修改Request URL中start(在爬取程序中设为变量)

绕过 反爬

伪造header 修改referer跳转的来源,user-agent浏览器信息

循环获取URL

每页生成一个下一页的链接,作为下一个URL

解析parse函数中,判断是否有下一页,获取下一页构造Request

反爬

防止被禁IP,可以用华为服务器,可以找老师换

代理IP

IP池,每次从中随机取一个访问

UA池

user-agent 中浏览器信息

延迟

每执行一次休息1s

拓展,如何下载网页图片

大数据系统

张齐勋-第二讲

搭建Hadoop生态环境 Spark生态系统

推荐系统-算法库中找合适的直接使用

推荐系统算法

0%