画布 1
七月在线机器学习第9期
  基本模型
    回归
      机器学习概述
        解决问题类别
          聚类
            无监督学习
          分类
            监督学习
          回归
            监督学习
          强化学习
      线性回归
        概述
          假定输入x和输出y之间有线性相关关系
          对输入x进行线性加权求和拟合y
            f(x)=θ^Tx
          用来解决回归问题
        损失函数
          定义
          优化
            梯度下降
            最小二乘
        模型状态
          欠拟合
            不能很好的反映输入和输出之间的关系，学的不够
          过拟合
            可以对原始数据拟合得非常好, 但丧失了一般性，在对新给的待预测样本，预测效果差.
            防止过拟合
              正则化
                LASSO
                Ridge
          拟合适当
      Logistic回归
        概述
          解决分类问题
            二分类
            多分类
              one vs one
              one vs rest
          特点
            LR能以概率的形式输出结果，而非只是0,1判定
            LR的可解释性强，可控度高
            训练快， feature engineering之后效果赞
            因为结果是概率，可以做ranking model
        损失函数
          定义
          优化
            梯度下降
    决策树与随机森林
      决策树
        概述
          例子：女生找对象看对方的条件决定是否愿意
          基于树结构构建
          每个内部节点对应于某个属性
          每个分支是属性的取值
          每个叶节点对应预测结果
        过程
          学习过程
            通过对训练样本的分析来确定“划分属性”
              自根至叶的递归过程
              在每个中间结点寻找一个划分属性
            停止条件
              当前节点包含的样本全属于同一类别，无需划分
              当前属性集为空或者是所有样本在所有属性取值相同，无法划分
              当前节点包含的样本集合为空，不能划分
          预测过程
            将测试示例从根节点开始，沿着属性所构成的“判定测试序列”下行，直到叶节点
        划分属性依据
          信息增益
            划分前的信息熵-划分后的信息熵
            基础
              熵
                度量不确定性或者是混乱程度的
            ID3中使用
          信息增益率
            概述
              由于采用信息增益容易出现对可取数目较多的属性有所偏好
              C4.5中使用信息增益率来划分属性
            数学表示
          Gini指数
            CART中使用
            最小化不纯度，而不是最大化信息增益
      回归树
        构建
          将整个特征空间切分成多个没有重叠的区域
            自顶向下贪婪式递归
              从多有样本开始，不断从当前位置，把样本切分到2个分支里
              每一次的划分，只考虑当前最优，不会考虑之前互划分
              选择切分的特征以及切分点使得划分后的树RSS结果最小
          其中同一区域的每个样本给一致的预测结果，取训练数据在当前区域的平均值
        防止过拟合
          剪枝
      RF
        集成方法
          bagging
            采样
              数据集采样
              特征采样
          bootstraping
            有放回地采样
        概述
          使用CART决策树作为基学习器
        步骤
          对训练集第t次随机采样m次，得到包含m个样本的采样集Dm
          用采样集Dm训练训练第m个决策树模型，决策树节点的选择是用样本特征中选择一部分，在随机选择的一部分特征中，选择最优的特征，不断重复此步骤，构造一棵树
          重复1、2步T次，构造T棵树
    SVM
      线性可分分类器
        SVM是分类算法，主要是找一个超平面来将样本尽可能地分开
          多分类
            一对一
            一对多
            层次支持向量机
        线性可分度量分界面的好坏
          公式化
        学习
          间隔
            函数间隔
              概述
                表示分类的正确性以及确信度
              公式
              在函数间隔中，等比例改变w和b，超平面并没有改变，但是函数间隔也会按比例改变
            几何间隔
              概述
                等比例改变w和b，超平面并没有改变，使得间隔是确定的
              公式
                点到超平面的距离*标签
          基本思想
            求解能够正确划分训练数据集并且几何间隔最大的分离超平面
            间隔最大化
              找到几何间隔最大的超平面
              以充分大的确信度对训练数据分类，不仅可以将正负样本分的很开，还可以将最难分的点也有足够大的确信度将它们分开
          目标函数
            优化
              不等式约束条件下优化二次函数
                子主题 1
              拉格朗日函数
                根据拉格朗日对偶性，原始问题的问偶问题可以是极大极小问题
                要满足KKT条件
              SMO算法
                坐标上升法
                  每次选择两个变量来进行优化
                求解alpha
                  支撑向量alpha不为0，非支撑向量为0
      性质
        数学特性
          凸优化问题，保证会有全局最优解
        模型特性
          可以处理高维数据
          软间隔降低过拟合
          求解完成后只有少数数据起作用
          灵活的选择核函数
      线性不可分分类器
        解决思路
          空间变换，对数据集做映射
          核函数
            经过数据集映射后的向量维度可能过高，导致向量内积计算量过大
            常见的核函数
              多项式核函数
              高斯核函数
              sigmoid核函数
          软间隔分类器
            允许有数据点拥有小于1的几何间隔但要受到惩罚
      实战
        文本分类
    最大熵与EM算法
      最大熵
        熵
          概述
            信息量
              信息的度量
                事件发生概率越大，则信息量越小
              I=-logp(x)
                2
                子主题 2
            熵是信息量的期望H(X)=E(I)
              物理含义
                反映事件的不确定性
              公式
                H(X)=-P(X)logP(X)
          联合熵
            H(X,Y)=H(X)+H(Y)-I(X,Y)
              并集
            H(X,Y)=P(X,Y)logP(X,Y)
            性质
              H(x1,x2,....,xn)>=max(H(x1),H(x2),....,H(xn))
              H(x1,x2,....,xn)<=H(x1)+H(x2)....+H(xn)
          条件熵
            H(Y|X)=sum p(xi)H(Y|xi)= sum p(xi)(-sum p(yj|xi)logp(yj|xi))=-sum sum p(xi,yj)log(yj|xi)
          互信息
            交集
            I(X,Y)=-sum sum p(xi,yj)log(p(xi,yj)/(p(xi)p(yj)))
            作用
              刻画非线性的相关性
                线性相关
                  正相关
                  负相关
                非线性
                  y=|x|
              特征选择
              降维
          韦恩图
        相对熵(KL散度)
          概述
            刻画两个分布的差异
              Wasserstein distance
              MMD
              Kernel Hilbert density distance
            两个概率分布的相对熵KL(P||Q)
              KL(P||Q)=sum p(xi)log(p(xi)/q(xi))
          特点
            度量不对称
              KL(P||Q)不等于KL(Q||P)
            KL(P||Q)>=0
              根据定义、Jessons不等式可证明
        交叉熵
          概述
            CNN中常见的目标函数
            CH(P,Q)=-sum p(xi)logq(xi)=-sum p(xi)logp(xi) +sum p(xi)logp(xi) -sum p(xi)logq(xi)=H(P)+KL(P,Q)
        信息增益
          在决策树中常用的信息增益选取特征
      最大熵模型
        原则
          承认已知，对未知事物没有任何偏见
            A,B,C中A发生的概率为1/3
            B,C发生的概率分别为1/3
        概述
          最大熵指的是条件熵最大
          我们所要学习的实际上是p(y|x)=argmax H(Y|X)所对应的最大的p(y|x)
        目标函数
          构造一个特征函数
              给定x，在训练过程中预测结果和给定的标签一致就为1
          约束条件
              特征函数关于P(X,Y)经验分布的期望值
              特征函数关于模型P(X,Y)与经验分布P(X)的期望值
          目标函数
            优化——拉格朗日
                通用公式
            求得
              再求w
      EM算法
        基础
          最大似然
          变量
            可观测
              显变量
            不可观测
              隐变量
        概述
          迭代优化算法，主要用于含有隐变量的概率模型参数的极大似然估计
        算法流程
          输入Y,Z；输出theta
          随机选择参数初始值，开始迭代
          E步
            下边界函数
          M步
            对下边界函数求导
          重复E和M步，直至theta基本不发生变化停止
        推导
          从极大然函数出发
        算法中的应用
          k-means
            目的
              把点分到最近的center所对应的簇里
            原则
              类簇内部的点与所对应的center距离最小
            步骤
          GMM
            概述
              高斯分布的加权求和，描述样本的概率分布
            隐变量
              权重
                E步
            显变量
              各个高斯分布的参数
                M步中不断优化的参数
  特征工程
    特征工程
      前言
        特征工程主要任务
          从数据中抽取出来对结果预测有用、高效的信息
        特征工程的意义
          更好的特征意味着更强的灵活度
          更好的特征意味着只需要简单模型
          更好的特征意味着更好的模型的效果
      数据与特征处理
        数据采集
          考虑数据对最后结果预测的影响力
          考虑数据能否采集到
          考虑线上实时计算的时候获取是否快捷
          例子：商品推荐
            从商店角度考虑
            从商品角度考虑
            从用户角度考虑（埋点：用户点击的时候回返回到一些信息到后台）
        数据处理
          数据清洗
            考虑哪些信息对于模型结果是有效的，去掉脏数据
            补齐缺省值
              中位数补齐
              平均数补齐
              模型预测
              缺省太多不考虑
            组合属性判定
              你要判定一个人是否会买篮球鞋，样本中女性用户85%？
          数据采样
            很多时候正负样本是不均衡的，大多数模型对正负样本比较敏感
              例子
                患病的患者与健康人
                用户买商品和不买商品的行为
              处理方法
                采样
                  上采样
                    正负样本数据量不大
                  下采样
                    正负样本数据量都很大
                  oversampling
                    镜像和旋转
                收集更多数据
                修改损失函数
                  使损失函数不要有太强的倾向性
                SMOTE
                  生成一些数据
        特征处理
          特征类型及对应的处理
            数值型
              幅度调整
                方法
                  归一化：对行做处理
                  标准化：对列做处理
                作用：提高梯度下降法的收敛速度
              log数据域变化
              统计值
              数据离散化
                将连续值进行分段
                  等距切分cut
                    存在数据的分布不均衡
                  按分位数切分，等数量切分q-cut
                例子：公交车让座（老人和小孩）
            类别型
              one-hot编码
                类别型数据不存在数值大小关系，让各类别型数据是平等的
              hash技巧
                针对文本类别型数据，统计文本词表，进而统计文本的倾向性
            时间型
              可以看做是连续型的数据，也可以看做是离散型的数据
                连续值
                  持续时间（单页浏览时长）
                  间隔时间（上次购买/点击离现在的时间）
                离散值
                  一天中有哪几个时间段
                  一年中哪个星期
            文本型
              词带模型
                将文本数据映射成稀疏向量
                针对有语序的语句，可以将两两单词进行相连
                Tf-idf统计特征
                  体现一个词对一个文档的重要程度
            统计型
              分位线
                商品属于售出商品价格的分位线处
              比例类
                电商中，好/中/差评比例
              次序性
                排在第几位
            组合特征
              特征拼接
              用GBDT产出特征组合路径
      特征选择
        原因
          特征冗余
            相关度比较高
          噪声
            部分特征无用或者是有相反作用
          特征太多消耗计算资源，通过特征选择来使模型的泛化能力更强，减少过拟合
        特征选择和降维
          降维：做特征的计算组合构成新的特征
          特征选择：剔除冗余度比较高的或者是噪声数据
        特征选择方式
          filter
            评估单个特征和结果的相关程度，排序留下top相关的特征
              缺点：没有考虑到特征之间的关联作用，可能把有用
的关联特征误踢掉。
          wrapper
            特征子集搜索，用模型评估效果，筛选特征子集
          embedding
            选用模型分析特征的重要性，最常见的是L1正则
    多算法组合与模型最优
      模型选择
        模型选择的准备工作
          抽象工业实际场景为回归、分类、聚类问题
            商品推荐排序转化为分类问题
          模型需要足量的样本来训练；注意样本的数据形态
        模型参数和超参数的选择
          模型/参数选择
            留出法
              将数据分为训练数据和测试数据
                测试集评估模型的效果
            K折交叉验证
              将训练数据平均分为K份
                评估模型效果的手段
          模型调参（超参数选择）
            网格搜索交叉验证
              候选参数选择：一般是等比数列
      模型效果优化
        模型状态分析
          类别
            过拟合
              训练集学习得超级强，测试集则不然。主要原因是学习到噪声，数据被噪声拉偏了
            欠拟合
              训练集学到的模型不能很好地表达输入与输出之间的映射关系
            正常拟合
              泛化能力比较好
          验证工具
            学习曲线
          不同模型状态的处理
            过拟合处理
              增加数据集
                数据集增大，收集到的数据会更接近数据的真实分布，会削弱噪声的影响
              加大正则化系数
              特征选择
              差异化模型融合
            欠拟合处理
              找更多的特征
              减小正则化系数
        线性模型的权重分析
          适用model
            Linear Regression
            Logistic Regression
            LinearSVM
            ...
          处理
            对权值绝对值高的特征做更细化的特征
            对权值绝对值低的特征做特征组合
        Bad-case分析
          分类问题
            考虑哪些样本分错了
            考虑哪部分特征使得它做了这个判定
            考虑bad-case有木有共性
            考虑是否还有没挖掘的特性
            ...
          回归问题
            考虑哪些样本预测结果差距比较大，为什么
            ...
        模型融合
          是什么
            综合考虑不同模型的情况，并将它们的结果融合到一起
          为什么
            统计
              假设空间的平均更接近真实假设
            计算
              迭代求解很可能找到的是局部最优解，多个局部最优解的平均耿介君全局最优解
            表现
              真实假设可能不在已知的假设空间内，平均一下的话更接近假设空间外的真实假设
          分类
            Bagging
              采用的是一个算法，对数据进行有放回的方式进行抽样，用抽样的样本建立子模型,对子模型进行训练，这个过程重复多次，最后进行融合
                分类
                  用模型的结果做vote
                回归
                  对模型的结果取平均
              并行，降低过拟合
            stacking
              用多种分类器结果作为特征训练
            Boosting
              分类：Adaboost
                分配给分错的样本更高的权重
                最简单的分类器叠加
                重复迭代和训练
              回归：Gradient Boosting Tree
                每一棵树学的是之前所有树结论和的残差，这个残差就是一个加预测值后能得真实值的累加量
              对比
  工业实践
    Sklearn与机器学习实战
      sklearn
        sklearn官方参考/教程
        几大板块
          分类
          回归
          聚类
          降维
          模型选择
          预处理
      完整的项目实战
        项目背景
          利用加州普查数据（每个街区组的人口、收入中位数、房价中位数），建立一个加州房价模型
        分析项目，划定问题
          分类？回归？聚类？
          选择性能指标
          核实假设
        模型的数据相关
          常用的数据仓库
            流行的开源数据仓库
              UCI
              kaggle dataset
              AWS数据集
            准入口
              http://dataportals.org/
              http://opendatamonitor.eu/
              http://quandl.com/
            其他
              维基百科数据集列表
              问答
          数据分析
            查看数据结构
              数据样例
                head()
              类别包含的样本数
                value_counts()
              数据的统计量
                describe()
            了解数据的分布
              柱状图
                hist()
                注意点
                  数据若经过缩放调整，你要了解数据是如何计算出来的
                  数据是否设置上下限
                  属性有不同的量度
            数据探索(针对训练集)
              查找关联
                查看各个属性和label之间的相关度
              属性组合实验
          数据集分类
            分为训练数据、测试数据集
            测试集保持不变
              设置随机种子，保证生成的测试集是相同的
              保存第一次运行得到的测试集
              假设每个样本都有唯一且不变的ID，根据ID判定是否一个个放入测试集
          数据处理
            数据清洗
              处理缺失数据
              处理文本和类别属性
            特征缩放
              归一化
              标准化
            流水线操作
        模型训练与选择
          在训练集训练和评估
          使用交叉验证做更佳评估
          模型微调
            超参数调整
              网格搜索
              随机搜索
            模型集成
          测试集评估系统
    高级工具库xgboost/LightGBM与建模实战
      xgboost
        参考资料
          官方文档
            https://xgboost.readthedocs.io/en/latest/
          项目地址
            https://github.com/dmlc/xgboost
        特点
          计算速度快
            Parallelization,训练时可以用所有的CPU内核来对单个树的构造过程并行
            Distributed Computing，分布式计算
            Out-of-Core Computing，对于非常大的数据集还可以进行核外计算
            Cache Optimization of data structures and algorithms，更好地利用硬件
          模型表现好
            在数据科学比赛中表现效果不错
        参数
          通用参数
            基模型
              gbtree
              gblinear
          集成参数
          任务参数
        使用方法
          简单用法
            导入xgboost等包
            加载数据集，分出特征和标签
            数据集分为训练集和测试集
              train_test_split
            初始化分类器，并fit训练数据
              early_stoping_rounds
                在训练集上不断训练，在验证集上查看效果，当在验证集上效果不再提升，则提前终止，防止过拟合
            输出特征重要度
              plot_importance(model)
            测试，得到每个样本属于第一类的概率
            调参
              GridSearchCV
              StratifiedKfold
                分层采样
          高级用法
            将训练集和测试集转化为DMatrix
              稀疏化的数据存储形式
            xgb.train
              可以自定义损失函数和评估标准
        实战
          便利店销售预测
      lightgbm
        中文文档
          http://lightgbm.apachecn.org/cn/latest/
        高级用法
          数据加载
            数据读入：pd.DataSet()
            数据读入的同时添加样本权重
          模型训练
            lgb.train()
          模型载入与预测
            特征重要度
            载入模型，允许改变参数继续训练
          自定义损失函数
        实战
          寒老师速查表
    推荐系统原理与应用
      推荐系统与评估
        推荐系统概述
          举例
            淘宝“猜你喜欢”商品推荐
            视频推荐
            新闻推荐
          数学定义
            假设C是全体用户集合；S为全部商品/推荐内容集合
            假设U是评判把Si推荐Ci的好坏评判函数
            推荐
              对于c，找到s，使得u最大
            部分场景下是Top N推荐
          通俗含义
            根据用户的历史行为、社交关系、兴趣点、所处上下文环境去判断用户当前感兴趣的item
          推荐的意义
            用户
              互联网大爆炸，信息过载，帮助决策
              发现好玩的东西
            商家
              提供个性化服务，提高信任度和粘性
              增加点击率增加营收
          结构
            数据处理与模型学习
            模型
            推荐判定
              上下文
            推荐结果
        评估系统
          准确度
            打分系统
              RMSE
              MAE
            Top N推荐
              准确率，查准率
              召回率，查全率
          覆盖率
            对平台而言，平台希望消除马太效应
            信息熵
              希望越大越好
          多样性
            对用户而言，用户希望推荐结果列表中物品更丰富
            差异度
          其他评估
            新颖度
            惊喜度
            信任度
            实时性
            ....
        经典案例
          NetFlix
      推荐算法串讲
        基于内容推荐
          使用场景
            通常使用在文本相关产品上进行推荐
            基于用户喜欢的物品的内容/属性进行推荐
            需要分析内容，无需考虑用户与用户之间的关联
            物品通过内容（关键词）关联
              电影题材
            基于比对物品内容进行推荐
              对每个要推荐的内容建立一份资料
                词ki在文件dj中的权重wij
                  TF-IDF
              对用户建立一份资料
                定义一个权重向量，wci表示第ki个词对用户c的重要度
              计算匹配度
                cosin
          举例
            基于书名进行书推荐
        协同过滤推荐
          概述
            是一种基于“近邻”的推荐算法，根据用户在物品上的行为找到物品或者用户的“近邻”
          分类
            基于用户
              概述
                基于用户有共同行为的物品，计算用户相似度
                找到“近邻”，对近邻在新物品的评价
              原理
                一个用户序列ui , i=1…n ,一个物品序列pj , j=1…m
                n×m得分矩阵v，每个元素vij表示用户i对物品j的打分
                计算用户相似度
                预测得分
            基于物品
              概述
                找到物品的“近邻”，进行推荐
                对于有相同用户交互的物品，计算物品相似度
              原理
                一个用户序列ui , i=1…n ,一个物品序列pj , j=1…m
                n×m得分矩阵v，每个元素vij表示用户i对物品j的打分
                计算物品i和物品j之间的相似度/距离
                选取Top K推荐或者加权预测得分
            对比
          相似度/距离定义
            距离
              欧式距离
              曼哈顿距离
            相似度
              Jaccard相似度
              余弦相似度
              Pearson相似度
          评价
            优点
              基于用户行为，因此对推荐内容无需先验知识
              只需要用户和商品关联矩阵即可，结构简单
              在用户行为丰富的情况下，效果好
            缺点
              假定用户的兴趣完全取决于之前的行为，而和当前上下文环境无关
              需要大量的显性/隐性用户行为
              需要通过完全相同的商品关联
              在数据稀疏的情况下受影响
        隐语义模型
          场景
            有用户评分矩阵，其中部分位置是空着的，希望尽量正确地填满未打分的项
            思路
              应该有一些隐藏的因素，影响用户的打分
              找到隐藏因子，可以对user和item进行关联
                隐藏因子的个数小于user和item数
                因为如果每个user都关联一个独立的隐藏因子，那就没法做预测了。
          求解特征矩阵
            矩阵分解
            定义损失函数
              加正则项
              加偏置
            梯度下降迭代更新
        用户行为序列与word2vec
          把用户的行为序列当做分词过后的phrase
          送给word2vec学习
          根据商品映射得到的特征向量去找相似的商品
      细节
        展出方式
          按照不同维度（比如题材）等展出
          排序的结果使用上下文信息重拍
          对结果都提供解释理由
        用户数据获取
          隐性反馈
            最近观看，打分情况，浏览，停留时长
          显性数据
            用户所填偏好
            用户行为数据
              和物品的交互数据
              社交关系数据
        尽量保证准确度，丰富度，新鲜度
    聚类算法
      K-means
        算法概述
          无监督学习
          通过迭代过程把数据集划分为不同的类别，使得评价聚类性能的准则函数达到最优，从而使生成的每个类的类内紧凑，类间独立。
        要点
          数据样本间的相似性度量
            距离度量
            相似度度量
          评价聚类性能的准则函数
            误差平方和
          相似度计算
            将所有对象随机分配到k个簇中
            计算每个簇的平均值，并用该平均值代表相应的簇
            根据每个对象与各个簇中心的距离，分配给最近的簇
            然后转2，重新计算每个簇的平均值，直到满足某个准则函数阈值才停止
          核心问题
            度量样本之间的相关性计算公式
            更新簇内质心的方法，此处用平均值，即means
        算法流程
          输入
            簇的类别数目k和n个样本
          输出
            使平方误差准则最小的k个簇。
          方法
            基于簇中样本的平均值
            任意选择k个样本作为初始的簇中心
            repeat
            根据簇中样本的平均值, 将每个样本(重新) 赋给最类似的簇
            更新簇的平均值, 即计算每个簇中样本的平均值
            until不再发生变化
        评价
          优点
            解决聚类问题的一种经典算法，简单、快速
            对处理大数据集，该算法是相对可伸缩和高效率的。因为它的复杂度是0 (nkt )
            当结果簇是密集的，而簇与簇之间区别明显时, 它的效果较好
          缺点
            基于簇中样本的均值，对于处理文本符号属性数据不适用
            首先需要给出k，对初值敏感，不同的初始值，导致不同的结果
            对于噪声和孤立点数据较敏感
        改进
          k-modes算法
            概述
              实现对离散数据的快速聚类
              针对分类属性的度量和更新质心的问题进行改进
            改进点
              度量样本之间的相关性
                比较两样本之间，属性相同为0，不同为1，并进行相加，结果越大，样本不相关程度越强
              更新质心方法
                使用一个簇的每个属性出现频率最大的那个属性值作为代表簇的属性值
          k-prototype算法
            概述
              可以对离散与数值属性两种混合的数据进行聚类，在k-prototype中定义了一个对数值与离散属性都计算的相异性度量标准，结合k-means与k-modes算法
            改进点
              度量具有混合属性的方法
                数值属性采用K-means方法得到P1
                分类属性采用K-modes方法得到P2
                D=P1+a*P2，a是权重，如果觉得分类属性重要，则增加a，否则减少a，a=0时即只有数值属性
              更新一个簇的中心结合K-Means与K-modes的更新方法
          k-中心点算法
            k -means算法对于孤立点是敏感的，不采用簇中的平均值作为参照点，可以选用簇中位置最中心的对象，即中心点（可以理解为中位数）作为参照点
      层次聚类
        算法概述
          层次聚类方法将数据对象组成一棵聚类树
        分解方法
          凝聚层次聚类
            自底向上
              输入
                n个对象，终止条件簇的数目k
              输出
                k个簇，达到终止条件规定簇数目
              步骤
                将每个对象当成一个初始簇
                REPEAT
                根据两个簇中最近的数据点找到最近的两个簇
                合并两个簇，生成新的簇的集合
                UNTIL达到定义的簇的数目
          分裂层次聚类
            自顶向下
              输入
                n个对象，终止条件簇的数目k
              输出
                k个簇，达到终止条件规定簇数目
              步骤
                所有的对象用于形成一个初始簇
                REPEAT
                根据簇中最近的相邻对象的最大距离等分类原则
                分裂簇
                UNTIL达到定义的簇的数目
        簇间距离
          最小距离
            当算法采用最小距离衡量簇间距离，称为最近邻聚类算法
              对离群点或者是噪声数据过分敏感
          最大距离
            当算法采用最大距离衡量簇间距离，称为最远邻聚类算法
              对离群点或者是噪声数据过分敏感
          均值距离
          平均距离
        受限点
          合并或者分裂点选择关键但却困难
          一组对象一旦合并或分裂执行，就不能修正
          不具有很好的可伸缩性，因为合并或分裂的决定需要检查和估算大量的对象或簇。
      GMM
        算法概述
          高斯混合模型（Gaussian Mixed Model, GMM）指的是多个高斯分布函数的线性组合
          理论上GMM可以拟合出任意类型的分布，通常用于解决同一集合下的数据包含多个不同的分布的情况（或者是同一类分布但参数不一样，或者是不同类型的分布，比如正态分布和伯努利分布）
          目标
            求出每一个样本属于哪个分布
            求出每一个分布对应的参数
        原始形式
          每个 GMM 由 K 个 Gaussian 分布组成，每个 Gaussian 称为一个“Component”，这些 Component 线性加成在一起就组成了 GMM 的概率密度函数
            均值
            协方差矩阵
            混合系数，看成使第k类被选中的概率
          算出来的是样本的概率分布，属于软聚类
        参数估计
          EM
            初始化参数：均值、协方差均值、混合系数
            E步骤
              估计数据由每个“Component”生成的概率
            M步骤
              通过极大似然估计求得参数
            重复E步和M步，直到似然函数的值收敛
  深入机器学习
    贝叶斯网络
      概述
        将图论和概率论结合起来，用有向无环图的方法来代表概率分布，是生成模型
        例子
          图
          含义
            节点代表的是随机变量
            边代表的是节点之间因果发生关系，即条件依赖
            每一个节点都对应相应条件概率分布表
          结论
            图的性质决定了N个条件变量联合概率分布可以用条件概率来表示
          练习
        优点
          计算复杂度降低
          因果关系比较清晰
      Examples
        朴素贝叶斯
          图
              Y是隐藏变量
              X是可观测变量
              根据贝叶斯网络可以习得联合概率
          应用
            给定可观测变量，如何推断隐藏变量
            实例：垃圾邮件识别
                分子
                  联合概率，根据贝叶斯网络可由条件概率所表示
                    p(class)是先验概率，可通过数据集来统计
                    p(data|class)是根据贝叶斯网络结构可得
                分母
                  p(data)是归一化的常数，不影响做决策
        隐马尔可夫模型HMM
          概述
            时序模型
          图
              Hi是隐藏变量，是label
              Oi是可观测变量
          应用
            词性标注
            语音识别
            中文分词
      补充知识点
        独立
          A和B事件独立
            P(A,B)=P(A)P(B)
            P(A|B)=P(A)
              如果A和B事件是独立的话，则B的出现并不影响A的发生概率
            P(B|A)=P(B)
        条件独立
          A和B事件独立
            P(A,B|C)=P(A|C)P(B|C)
            P(A|B,C)=P(A|C)
            P(B|A,C)=P(B|C)
        有向分割
          作用
            给定一个图，快速判断条件依赖关系
          分类
            tail-to-tail
              可观测变量C
                  在给定C的前提下，A和B是条件独立的
                  p(a,b|c)=p(a,b,c)/p(c)=p(c)p(a|c)p(b|c)/p(c)=p(a|c)p(b|c)
              不可观测变量C
                  A和B不是独立的
                  p(a,b,c)=p(c)p(a|c)p(b|c)，对等式两边分别对c进行求和,不能得p(a,b)=p(a)p(b)
              朴素贝叶斯网络中常用这种结构
            head-to-tail
              可观测变量C
                  A和B不是独立的
              不可观测变量C
                  在给定C的前提下，A和B是条件独立的
              HMM中常用这个结构
            head-to-head
              可观测变量C
                  在给定C的前提下，A和B不是条件独立的
                  p(a,b|c)=p(a,b,c)/p(c)=p(a)p(b)p(c|a,b)/p(c),不等于p(a|c)p(b|c)
              不可观测变量C
                  A和B是独立的
                  p(a,b,c)=p(a)p(b)p(c|a,b),左右两边同时对C求和，可得p(a,b)=p(a)p(b)
              解释
                a和b是因，c是果，如果c发生了，由于c是由a和b所导致的，所以a和b更有可能同时发生
    隐马可夫链HMM
      马尔科夫链
        概述
          是指数学中具有马尔可夫性质的离散事件随机过程
          在马可夫过程(具有无后效性)中，在给定当前知识或信息的情况下，只有当前的状态用来预测将来，过去(即当前以前的历史状态)对于预测将来(即当前以后的未来状态)是无关的
        数学表示
          每个状态的转移只依赖于之前的n个状态，这个过程被称为1个n阶的模型，其中n是影响转移状态的数目。最简单的马尔科夫过程就是一阶过程，每一个状态的转移只依赖于其之前的那一个状态
        例子
          假设天气服从马尔科夫链
            状态：晴天 阴天
            初始向量：定义系统在时间为0的时候的状态的概率
          状态转移矩阵
          从今天(晴或阴)开始，在遥远未来的某天，晴阴的概率分布
          稳态分布
      隐马可夫链
        概述
          隐马尔可夫模型(Hidden Markov Model) 是一种统计模型，
用来描述一个含有隐含未知参数的马尔可夫过程。
        示意图
        三大问题
          验证
            给定可见状态和模型，如何计算在给定模型的基础之上可见状态的概率
              遍历
              前向算法
              后向算法
          识别
            给定可见状态和模型，如何选择相应的路径
              维特比算法
          训练
            如何建立模型，使得在给定模型的基础之上，可见状态发生的概率最大
              鲍姆-韦尔奇算法
        应用/实践
          词性标注
    主题模型LDA
      概述
        是一种无监督的贝叶斯模型
        是一种主题模型，可以将文档集中每篇文档的主题概率分布的形式给出
          不需要手工标注训练集，仅仅需要文档集以及指定的主题的数量k
          每一个主题均可以找出一些词语来描述它
        是一种典型的词袋模型，一篇文档中单词与单词之间没有顺序以及先后关系
          一篇文档可以包含多个主题
          每一个词都由其中的一个主题生成
        对一堆text进行自动分类
      理解LDA
        直观版
          企业招聘工程师，根据简历判断个人能力
            一份简历由很多特征组成，根据简历来进行筛选
            通过经验统计来调整自己的猜想
            p(优秀程序员|特征，简历)=此特征在优秀程序员间出现的次数/优秀程序员所拥有的所有特征*此简历中属于优秀程序员的特征的个数
          文档由单词所组成，根据文档推断主题
        标准版
          概述
            简历中每个特征是因为本人有一定概率是好/坏程序员，并从好坏这个分类中以一定概率选择某些特征组成的
            一篇文章中每个词都是以一定概率选择某个主题，并从这个主题中以一定概率选择某个词语而组成的
          公式
            P(单词|文档)=P(单词|主题)P(主题|文档)
              对每个文档d，对应到不同Topic的概率是θd
              对每个主题t，生成不同单词的概率是θt
          生成过程
            对每一篇文档，从主题分布中抽取一个主题
            从被抽取的主题所对应的单词分布中抽取一个单词
            重复上述过程直至遍历文档中的每一个单词
          学习过程
            初始化θd、θt
            针对一个文档ds的第i个单词wi，令单词对应的topic为tj，则公式可以表示为pj(wi|ds)=p(wi|tj)p(tj|ds)
            枚举所有主题，得到所有pj(wi|ds)，取令pj(wi|ds)最大的tj
            若wi选择的主题结果与原先不同，则θd、θt也会相应改变
            遍历所有文档
        公式版
          参考链接
            http://blog.csdn.net/v_july_v/article/details/41209515
          步骤
            一个函数
              gamma函数
            四个分布
              二项分布
              多项分布
              beta分布
              狄利克雷分布
            一个概念和一个理念
              共轭先验
              贝叶斯框架
            两个模型
              pLSA
                频率派思想
              LDA
                pLSA的贝叶斯版本
            一个采样
              Gibbs采样
      实战
        一眼看穿希拉里的邮件
          读取邮件
          文本预处理
            原邮件数据中有缺省值，扔掉
            新行变空格，“-”单词分开
            日期 时间 邮件地址 网址都是没意义的信息，用空格代替
            只留下空格和单词
          LDA模型构建
            准备
              工具
                Gensim
              停用词表
            建立语料库
            建立模型
  迈入深度学习
    深度学习初步
      深度学习应用
        图像
          图像识别
          图像检索
          无人驾驶
          风格模仿
        nlp
          模仿文笔
          文本识别
        综合
          看图说话
          知识问答
      深度学习基础
        线性分类器
          例如logistic回归、linear svm线性分类器
          两个核心
            假设函数
              得到得分
            损失函数
              衡量吻合程度
              例子
                线性svm——Hinge loss
                  可以达到0
                softmax分类器——交叉熵损失
                  不断地接近于0，永远到不了0
        通用学习框架
          语音识别
            将给定的时域信号，映射成文本
          手写识别
            将给定的手写图像，映射成数字
          围棋落子
          对话系统
      神经网络
        组成
          输入层
          隐藏层
            少量隐层
              浅层神将网络
            隐层较多
              DNN
          输出层
        非线性切分
          神经元可以完成逻辑与/或，可以实现线性分类器的and和or的组合
          完美对平面样本点分布进行分类
            无隐层
              超平面
            单隐层
              开凸区域或闭凸区域
            双隐层
              实现任意形状的抠图
        表达力与过拟合
          提升隐层层数或者隐层神经元个数，神经网络“容量”会变
大，空间表达力会变强
          过多的隐层和神经元节点，会带来过拟合问题
          不要试图通过降低神经网络参数量来减缓过拟合，用正则化
或者dropout
        激活函数
          进行非线性变换
          如果神经网络中不加入激活函数，若干个线性的组合还是线性组合
        训练
          BP
            正向传播
              求损失
            反向传播
              回传误差，根据误差信号来修正每层的权重
          SGD
            调整权重让误差不断降低
        学习应用
          google的playground
    卷积神经网络与计算机视觉
      神经网络与卷积神经网络
        概述
          DNN
            参数过多，计算量太大
            容易过拟合
          CNN
            保持了层级网络结构
            不同层次有不同的形式与功能
      CNN
        层级结构
          数据输入层
            数据处理方式
              resize
                输入图片大小不一致，可以resize到一致的size
              去均值
                把输入数据各个维度都中心化到0
                  Alexnet
                    对256*256*3的相应位置去均值
                  VGG
                    对R G B三个维度去均值
              归一化
                幅度归一化到相同的范围
              PCA
                降维
              白化
                对数据每个特征轴上的幅度归一化
          卷积计算层
            概念
              深度depth
                神经元的个数
              步长stride
                滑动窗口的活动的窗格数
              填充值zero-padding
                补0
            特点
              局部关联
                每个神经元看做一个filter
                窗口滑动， filter对局部数据计算
              参数共享
                固定每个神经元连接权重，可以看做模板，每个神经元只关注一个特性
                需要估算的权重个数减少
                一组固定的权重和不同窗口内数据做内积: 卷积
          激励层
            作用
              将卷积层的结果做非线性变换
            例子
              sigmoid
                存在梯度消失/弥散的问题
              tanh
              relu
              leaky relu
                max(0.1x,x)
              elu
            提示
              cnn慎用sigmoi
              首先试RELU，因为快，但要小心点
              若rulu效果不好，用leaky relu或者是maxout
              某些情况下tanh倒是有不错的结果，但是很少
          池化层
            作用
              压缩数据和参数的量，减小过拟合
              留下最显著的特征
            位置
              夹在连续的卷积层中间
            分类
              max pooling
              average pooling
          全连接层
            作用
              进一步融合特征
            特点
              两层之间所有神经元都有权重连接
            位置
              通常全连接层在卷积神经网络尾部
        训练算法
          定义loss function
          用SGD找到最小化损失函数的W和b
            BP算法利用链式求导法则，逐级相乘直到求解出dW和db
            利用SGD/随机梯度下降，迭代和更新W和b
        防止过拟合
          dropout
        调优训练
          fine-tuning
        评价
          优点
            共享卷积核，优化计算量
            无需手动选取特征，训练好权重，即得特征
            深层次的网络抽取图像信息丰富，表达效果好
          缺点
            需要调参，需要大样本量， GPU等硬件依赖
            物理含义不明确
      典型结构
        Lenet
          手写数字识别
        Alexnet
          2012 ILSVRC比赛远超第2名的CNN
        ZF Net
          2013 ILSVRC比赛冠军
        GoogleLeNet
          2014 ILSVRC比赛冠军
        VGG
          2014 ILSVRC比赛中的模型，图像识别略差于GoogLeNet，但是在很多图像转化学习问题(比如objectdetection)上效果很好
        Resnet
          2015ILSVRC比赛冠军，结构修正(残差学习)以适应深层次CNN训练。
        DenseNet
          CVPR2017 best paper，把ResNet的add变成concat
    循环神经网络与应用
      RNN
        场景与多种应用
          生成序列
            模仿论文
            模仿linux内核代码"写程序"
            模仿作家写作风格
          机器翻译
          看图说话
            CNN做信息抽取，约束RNN的生成
        概述
          传统的神经网络，输入和输出是相互独立的
          引入"记忆"的概念，输出不仅仅依赖于输入，还依赖"记忆"
        层级结构
          图
          解释
            Xt是时间t处的输入
            St是时间t处的“记忆”，St=f(UXt+WSt−1)， f是激活函数，U和V是参数矩阵
            Ot是时间t出的输出，可以是预测下个词的话，可能是softmax输出的属于每个候选词的概率， Ot = softmax(VSt)，V代表也是权重矩阵
          特点
            参数复用，极大减小了需要训练和预估的参数量
            Ot只与St有关
              图中的Ot在有些任务下是不存在的，比如文本情感分析，
其实只需要最后的output结果就行
        多种RNN
          双向RNN
            概述
              有些情况下，当前的输出不只依赖于之前的序列元素，还可能依赖之后的序列元素
            例子
              比如从一段话踢掉部分词，补全这段话
            图示
          深层双向RNN
            概述
              和双向RNN的区别是每一步/每个时间点我们设定多层结构
            图示
        训练算法
          BPTT算法
            沿着时间轴反向传播
      LSTM
        概述
          RNN可以对之前的信息进行保存，存在长期依赖的问题
          LSTM是RNN的一张，大体结构基本一样
          它的“记忆细胞”改造过，该记的信息会一直传递，不该记的会被“门”截断，对信息进行筛选
        图示
        关键点
          LSTM如何控制“细胞状态”
            “门”让信息选择性通过，来控制信息到细胞状态
            包含一个sigmoid神经网络层 和 一个pointwise乘法操作
            Sigmoid 层输出0到1之间的概率值，描述每个部分有多少量可以通过。
0代表“不许任何量通过”， 1就指“允许任意量通过
          控制“细胞状态"的操作
            决定从"细胞状态"中丢弃什么
              图示
              解释
                基于上一时刻隐层的输出和当前时刻的输入，判断留下多少信息
            决定放什么新信息到“细胞状态”中
              图示
              解释
                it代表的是新学的知识有多少要留下来
                Ct代表的是当前时刻学到的全部知识
            更新“细胞状态
              图示
              解释
                ft代表的是之前记忆的保留率
                it代表的是新学知识的保留率
                Ct-1和Ct分别代表的是之前记忆、新学的知识
            得到输出
              图示
              解释
                sigmoid来确定细胞状态的那部分将输出
                接着用tanh处理细胞状态(得到一个在-1到1之间的值)，再将它和
sigmoid门的输出相乘，输出我们确定输出的那部分。
        变体
          增加“peephole connection”
            让 门层 也会接受细胞状态的输入。
          通过使用 coupled 忘记和输入门
            之前是分开确定需要忘记和添加的信息，这里是一同做出决定
          GRU
        实践
          唐诗生成器
    深度学习框架与应用
      caffe
        概述
          来源于Berkeley的开源框架
          高效、一般的训练无需手写大量代码
          对于卷积神经网络的训练和fine-tuning非常方便
        使用方法
          resize图片，转化为LMDB格式
          定义网络结构，编辑prototxt
          定义solover，编辑另一个prototxt
          一行命令即可完成训练
        fine-tuning
          modelzoo
            有很多训练好的模型
          操作
            层次不变，只需要改输入输出，修改网络结构的prototxt
            层次改变，添加、删减层次，修改网络结构的prototxt
          trick
            优先学习权放在新加层
              每一层都有控制学习率的参数: blobs_lr
              一般会把前面层学习率调低，最后新加层调高
              你甚至可以freeze前面的层次不动
              一般fine-tuning的前期loss下降非常快，中间有个瓶颈期，要有耐心
            在solver处调整学习率
              调低solver处的学习率（1/10， 1/100）
              记住存储一下中间结果，以免出现意外
      tensorflow
        概述
          计算模型
            首先构造好整个计算链路
            可以对链路进行优化
            分布式调度
          概念
            使用张量(tensor)表示数据.
            使用图(graph)来表示计算任务.
            在被称之为会话(Session)的上下文 (context)中执行图.
            通过变量 (Variable)维护状态.
            使用feed和fetch可以为任意的操作(arbitrary operation)，赋值或者从其中获取数据
        使用步骤
          构造图
          执行图
          可视化——tensorboard
        实战
      pytorch
        概述
          高速计算，facebook等开发
          自动求导
        实战