# 0x00 前言
2017 年 07 月,为了解统计学和机器学习的基本常识,开了这篇文章。
当然,仅仅是为了了解,所以也就写的随性(不严谨)一些,排版什么的也都详细推敲。想到哪里就记录到哪里。
# 0x01 数据科学的含义与内容
# 0.1 WHAT?
To gain insights into data through computation, statistics , and visualization.
Josh Blumenstock 认为 数据科学家就是比计算机科学家多点统计技术,比统计学家多点计算机技术。
Shlomo Aragmon 认为 数据科学家 = 统计学家 + 程序员 + 教练 + 讲故事者 + 艺术家
# 一些准则
- 多数据源
- 懂得数据如何被采集
- 对数据进行权重
- 使用统计模型
- 理解相关性
- 像 Bayesian 一样思考,像 frequentist 一样检验
- 良好的沟通能力(代表什么,如何可视化,检验,理解结论)
# 一些挑战
- 数据量大
- 高维诅咒
- 数据缺失
- 需要避免过度拟合 (test data vs. training data)
# Data Science 涉及到哪些领域呢?
- Data Management
- Data Mining
- Machine Learning
- Business Intelligence
- Statistics
- Decision Making Theory
- Story Telling
- Perception
- Human Cognition
# 0.2 WHY?
海量数据的时代
# 0.3 HOW?
- ASK an interesting question. 目标是什么?如果拿到数据可以预测或者估计什么?
- GET the data. 数据如何抽样?那些数据是相关的?
- EXPLORE the data. 可视化数据,有异常吗?有模式吗?
- MODEL the data. 构建模型,拟合模型,检验模型。
- COMMUNICATE and VISUALIZE the results 我们学到了什么?结果有意义吗?
# 0.4 本文目录
-
统计学与数据分析
- 信息可视化
- 集中趋势的量度
- 分散性与变异的量度
- 概率计算
- 离散概率分布
- 排列与组合
- 几何分布、二项分布、泊松分布
- 正态分布
- 统计抽样
- 总体和样本的估计
- 置信区间
- 假设检验的运用
- x2 分布
- 相关与回归
-
数据挖掘基本扫盲
- 推荐系统入门
- 隐式评价和基于物品的过滤算法
- 分类与分类进阶
- 朴素贝叶斯
- 朴素贝叶斯算法和非结构化文本
- 聚类
-
机器学习
- 分类与回归
- 交差校验
- 降维
- 支持向量机
- 决策树 & 随机森林
- Bagging & Boosting
- 聚类与文本
- 贝叶斯思维 & Naive Bayes
- 文本分析:LDA&Topic Modeling
- 聚类
-
深度学习
-
自然语言 NLP
# 0x02 统计学与数据分析
# 2.1 信息可视化
建议直接阅读 AntV 的可视化基础 https://antv.alipay.com/vis/doc/chart/index.html
# 2.2 集中趋势的量度
目的:找出能够反映集中趋势的一个数值
PS: 可以用分布图看它的均值和平均数是否落在集中趋势,数据向右偏斜,均值位于中位数右侧
- 均值 (均值对于抽样数据更加稳定,但是如果村里一个杨千万九个穷光蛋,则个个都是杨百万)
- 中位数
- 众数
# 2.3 分散性与变异的量度
目的:仅有均值,中位数,众数是不够的,还需要距和差
- 全距:MAX(上界) - MIN(下界)
- 按照四分位书的切分方式: 下界 - 下四分位数目 (Q1) - 中位数 - 上四分位数 - 上界
- 四分位距:上四分位数 - 下四分位数 (当然,可以使用箱线图进行绘制,从而判断出数据集中的地方)
- 百分位距:在统计的时候,往往需要避免极值对数据的影响
- 方差:量度数据分散性
- 标准差:典型值与均值的距离,体现了数值的变异程度。即加入有一批数据的标准差为 3cm, 代表着平均而言,这些数值与均值的距离为 3cm
# 0x03 数据挖掘
本节是『面向程序员的挖掘指南』的笔记。
数据挖掘是深一步的分析统计。
本书所讲内容就是一个核心:
给用户推荐物品
内容就是:
- 第一章和第二章均为依据用户对物品的评价(显示评价以及隐式评价)来做出相关推荐。
- 第三章为物品本身的特点进行分类
- 第四章直到最后一章则是分类的详细讨论以及聚类分析。
# 基于用户的协同过滤算法
用户与用户之间相似
# 基本的距离算法
擦擦擦,LaTeX 公式 居然不能用…
- 曼哈顿距离 如果在 n 维坐标上,即绝对值。
- 欧几里得距离 就是其实就是 n 维勾股定理。
曼哈顿距离和欧几里得距离在判断 同样是 n 维的数据是完全 OK 的。即总量为 m 部电影的情况下,k 个人同样评价了 n 部电影,比较容易算出距离。
但,n 纬和比他更小的纬度算出的距离,似乎并不应该相等。 如何处理这些缺失的数据呢?如果是我的话,会设定一个默认值吧。(半值,均值)
TODO: 以后补上公式
r 值越大,单个维度的差值大小会对整体距离有更大的影响。
用户也分为好几种,比如说:
用户 1: 好的打分 5, 差的打分 3
用户 2: 好的打分 5, 差的打分 1
用户 3: 要么 5, 要么 1
如果数据存在“分数膨胀”问题,就使用皮尔逊相关系数。
如果数据比较“密集”,变量之间基本都存在公有值,且这些距离数据是非常重要的,那就使用欧几里得或曼哈顿距离。
如果数据是稀疏的,则使用余弦相似度。
# 隐式评价和基于物品的过滤算法
显式评价:豆瓣的五星,用户的评论
显式评价可能存在下面几个问题:
- 懒得评价
- 会出于面子,合群,偏见撒谎。
- 懒得追加评价一般数量少,假如买的东西一个月后坏掉了,则不用。
- 账号共享带来的问题。
- 买东西就是有问题才调出来判断,其他的情况下懒得评价。
隐式评价:通过观察可得。通常需要工程师针对客户端和浏览器端进行埋点。比如,买过,还买过,点击情趣用品多次。
- 网页方面:页面点击、停留时间、重复访问次数、引用率、观看视频的次数; 音乐播放器:播放的曲目、跳过的曲目、播放次数;
然而,越精准的判断越消耗性能。
- 扩展性:当用户数量大幅度上升的时候,计算量就上来了。千万用户其中一个用户和其他用户进行有一次运算的话,计算量就相当大了。
- 稀疏性:物品数量远大于用户数量,而千万级用户仅仅对百万本书中几十本评价,
书中说,可以考虑基于物品的协同过滤,其实可以考虑,先给用户和书划分类型,从而使得计算量下来。 计算标签和标签之间的相似度,这样可以使得成本大幅度下降。
# 基于物品的协同过滤算法
- 修正的余弦相似度 是一种基于模型的协同过滤算法。我们前面提过,这种算法的优势之一是扩展性好,对于大数据量而言,运算速度快、占用内存少。 用户的评价标准是不同的,比如喜欢一个歌手时有些人会打 4 分,有些打 5 分;不喜欢时有人会打 3 分,有些则会只给 1 分。修正的余弦相似度计算时会将用户对物品的评分减去用户所有评分的均值,从而解决这个问题。
- Slope One 算法
# 训练集和测试集
十折交叉验证
将数据集随机分割成十个等份,每次用 9 份数据做训练集,1 份数据做测试集,如此迭代 10 次。
n 折交叉验证
# 评估分类器
-
混淆矩阵 (其实就是交叉表的统计学说法)
-
Kappa 指标
-
优化邻近算法
# 分类方法
# 0x03 机器学习
# 0x04 深度学习
# 0x05 自然语言 NLP
# 0xEE 链接
ChangeLog:
- 2017-07-17 重修文字
- 2017-10-12 增加数据挖掘模块