一、什么是大数据
5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)、Veracity(真实性)。
应用:发现隐藏事物、商品相似性推荐、数据可视化、精准营销、指导决策、图像识别、股票预测、音乐推荐、辅助医疗、票房预测、商品营销、兴趣发现、异常检测、智能消费、木马检测、最优化决策、数据分析、重复性检测、电子商务、家庭生活、游戏娱乐、科学研究、政策制定
二、大数据主要任务
1、Fetching 采集/爬虫/抓取
实战案例
任务:1000个查询,整理各大搜索引擎的结果url。循环取得网址,获取内容,存储。
优化及改进1:单线程下载太慢,单线程->多线程
优化及改进2:创建线程开销大,多线程->线程池
优化及改进3:消费者和生产者模型,Producer负责生产数据,Consumer负责使用数据,统一进程,不同线程。
多线程的优点:便于变量和数据共享。利用线程池方便控制。
多进程的优点:稳定和健壮。本例倾向于多进程。
优化和改进4:引入队列。放入与取出url。
队列爆满问题;开源工具Rabbitmq、zeromq、redis
获取内容问题:Httpclient&URLCollection(Java)、urllib2(Python)、socket(C)
抓取受阻问题:代理ip+cookie+友好访问+Selenium
抽取信息问题:正则+Jsoup/Tika+模板
2、Storage 数据存储/分布式系统/数据库
NoSQL means Not Only SQL
MySQL的缺点:
Schema-based 不好水平拆分,不适合互联网环境
Transactions 分布式环境难以实现
Traditional applications 并发能力差(lock)
Disk-based 速度慢
解决方案:
NoSQL: 键值存储系统(redis:hashmap)+无模式文档存储系统(mongodb)
Redis:效率高,读写快,数据结构丰富,支持Java、C++、Python等语言
3、Mining 数据挖掘/机器学习/推荐系统
包含:数据挖掘、机器学习、自然语言处理、推荐系统、社交网络,搜索引擎
社交网络:Weibo、Twitter、Facebook 应用:社团发现、僵尸粉/水军、情感分析/性格判断
例如:判断一个僵尸粉(特征:转发关注广告多、原创粉丝少)
机器学习:预测:分类&回归 特征抽取->标注数据->模型选择->模型训练->得到模型->模型验证
人工智能:基于规则的专家系统(人)+基于数据的机器学习(数据) “有多少人工,就有多少智能”
数据挖掘:目的:发现数据的规律和模式 例如:疾病诊断
自然语言处理:分词
推荐系统:”购买此商品的顾客也购买了“ 依赖于业务和场景,喜好程度
基于用户推荐:相似权重,归一化 基于物品推荐:用户画像,商品描述
并行还是串行设计
接下来问题:稀疏数据、模型拓展、在线学习、可解释性
4、Processing Hadoop/Spark/VW/Mathout
三、需要思考的问题
1、是否真的需要大数据?简单的规则+统计->也许能解决问题
2、是否需要很复杂前沿的算法?更多的数据->也许能见效果
四、如何成为一个数据科学家
1、数学基础
高等数学 线性代数 概率论
2、编程语言基础
首选Python,其他C++、Java、R
3、算法和模型(理论)
机器学习 数据挖掘 推荐系统 自然语言处理
4、开源库(工具)
单机:Scikit Learn
分布式:Spark
5、实践
阿里巴巴大数据竞赛/Kaggle等
本文参考叶邦宇的一个talk总结而来。