【笔记】《Python大战机器学习》

简书:
简单的记录,有写于《统计学习方法》中明确的基本知识没记

  • 第1章 线性模型
  • 第2章 决策树
  • 第3章 贝叶斯分类器
  • 第4章 k近邻法
  • 第5章 数据降维
  • 第6章 聚类和EM算法
  • 第7章 支持向量机
  • 第8章 人工神经网络
  • 第9章 半监督学习
  • 第10章 集成学习
  • 第11章 数据预处理
  • 第12章 模型评估、选择与验证

第1章 线性模型

  1. 线性模型的形式: f(x⃗ )=w⃗ x⃗ +b f ( x → ) = w → ⋅ x → + b
  2. w⃗  w → 表达了每个特征的权重,即特征重要性
  3. 推广到n维空间即为广义线性模型,包括岭回归、lasso回归、Elastic Net、逻辑回归、线性判别分析
  4. 普通线性回归,平方损失函数,梯度下降法求解
  5. 梯度下降法时要归一化,(1)提升模型收敛速度,归一化前狭长椭圆形,归一化后圆形,迭代更快。(2)提升模型精度,取值范围大的严重影响小的效果。
  6. 广义线性模型 h(y)=w⃗ Tx⃗ +b h ( y ) = w → T x → + b ,如对数线性回归 lny=w⃗ Tx⃗ +b ln ⁡ y = w → T x → + b
  7. 逻辑回归(logistic regression, LR),用于分类,用极大似然估计法估计,用梯度下降法或拟牛顿法求解
  8. 线性判别分析(Linear Discriminant Analysis, LDA)。目标:投影到一条直线上,是的同类相近,异类远离。推广后为将M维投影到M-1维,可用于监督降维
  9. 对模型参数添加先验假设,控制模型空间,减小复杂度
    (1)Ridge Regression: αw⃗ 22 α ‖ w → ‖ 2 2
    (2)Lasso Regression: αw⃗ 1 α ‖ w → ‖ 1
    (3)Elastic Net: αρw⃗ 1+α(1ρ)2w⃗ 22 α ρ ‖ w → ‖ 1 + α ( 1 − ρ ) 2 ‖ w → ‖ 2 2
    10.调参:先 α α 置0调学习率,再调 α α

Python实战:
线性回归:LinearRegression

class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)

岭回归:Ridge Regression

class sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True, normalize=False, copy_X=True, max_iter=None, tol=0.001, solver=’auto’, random_state=None)

Lasso回归:Lasso Regression

class sklearn.linear_model.Lasso(alpha=1.0, fit_intercept=True, normalize=False, precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state=None, selection=’cyclic’)

ElasticNet回归:Elastic Net

class sklearn.linear_model.ElasticNet(alpha=1.0, l1_ratio=0.5, fit_intercept=True, normalize=False, precompute=False, max_iter=1000, copy_X=True, tol=0.0001, warm_start=False, positive=False, random_state=None, selection=’cyclic’)

逻辑回归:Logistic Regression

class sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’liblinear’, max_iter=100, multi_class=’ovr’, verbose=0, warm_start=False, n_jobs=1)
#solver : {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’},小数据集适合liblinear,大数据集适合sag,newton-cg\lbfgs\sag只对l2

线性判别分析:Linear Discriminant Analysis

class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver=’svd’, shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)
#solver=svd适合大规模特征

第2章 决策树

  1. 等同于一系列if-then语句,可用于分类回归,学习采用损失函数最小化
  2. 是一种贪心算法
  3. 三个步骤:特征选择;决策树生成;决策树剪枝
  4. 构建决策树通常将正则化的极大似然函数作为损失函数
  5. 衡量节点数据集合的纯度:熵、基尼系数、方差(回归)
  6. C4.5对ID3的改进:
    (1)信息增益比来选择属性,克服信息增益偏向取值多的属性的不足
    (2)剪枝
    (3)能够实现对连续属性离散化处理
    (4)对缺失数据处理:把缺失样本划入所有子结点
  7. C4.5需要对数据集多次顺序扫描和排序,低效;只能处理驻留于内存的数据集,不能处理大数据
  8. C4.5和ID3都只有树生成算法,容易过拟合
  9. 剪枝:解决过拟合现象,由于模型过于复杂;目的在于提高泛化能力,在训练数据预测误差和模型复杂度的平衡。
  10. Cα(T)=C(T)+α|Tf| C α ( T ) = C ( T ) + α | T f | ,预测误差项+正则化项
  11. CART剪枝:形成剪枝树序列,挑选最优剪枝树

Python实战
回归决策树DecisionTreeRegressor

class sklearn.tree.DecisionTreeRegressor(criterion=’mse’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, presort=False)

分类决策树DecisionTreeClassifier

class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)

第3章 贝叶斯分类器

  1. 通过先验概率,利用贝叶斯公式计算后验概率,选择最大后验概率
  2. 特点:属性可以连续或离散、效率稳定、对缺失和噪声不敏感、属性不相关效果好,相关不低于决策树
  3. 全概率公式 P(A)=nj=1P(A|Bj)P(Bj) P ( A ) = ∑ j = 1 n P ( A | B j ) P ( B j )
  4. 贝叶斯定理 P(Bi|A)=P(A|Bi)P(Bi)nj=1P(A|Bj)P(Bj) P ( B i | A ) = P ( A | B i ) P ( B i ) ∑ j = 1 n P ( A | B j ) P ( B j )
  5. 朴素贝叶斯的假设:特征条件独立
  6. 朴素贝叶斯通常采用极大似然估计
  7. 贝叶斯估计处理极大似然估计中可能出现的概率值为0的情况

Python实战
高斯贝叶斯分类器GaussianNB

class sklearn.naive_bayes.GaussianNB(priors=None)
#可以追加训练

多项式贝叶斯分类器BernoulliNB

class sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
#可以追加训练

伯努利贝叶斯分类器BernoulliNB

class sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
#可以追加训练

第4章 k近邻法

  1. 可用于分类和回归
  2. 训练时利用训练数据集对特征向量空间进行划分,作为模型
  3. KNN三要素k值选择、距离度量、决策规则
  4. 若k太小,近似误差小,估计误差大,对异常点敏感,复杂易过拟合
  5. 若k太大,估计误差小,近似误差大,模型太简单效果差
  6. 通常使用交叉验证选择最优k值
  7. 样本量纲不一致的,应当归一化处理
  8. kd树是二叉树,对k维空间的一个划分,平均计算复杂度为 O(logN) O ( log ⁡ N ) ,适合 Nk N ≫ k 情况

Python实战
KNN分类KNeighborsClassifier

class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None, n_jobs=1, **kwargs)

KNN回归KNeighborsRegressor

class sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None, n_jobs=1, **kwargs)

第5章 数据降维

  1. 降维,指采用某种映射方法,将原高维空间中的数据点映射到低位空间中
  2. 减少冗余信息和噪声,或寻找数据内部本质结构
  3. 在高维情形下出现的数据样本稀疏、距离计算困难等问题,称为维度灾难
  4. 主成分分析PCA,非监督降维
    中心化->协方差矩阵->特征值分解->取d个最大特征值对应的特征向量
  5. 奇异值分解SVD,等价于主成分分析,核心都是求解 XXT X X T 的特征值以及对应的特征向量
  6. 核化线性降维KPCA,对PCA的推广,实现非线性映射降维
  7. 流行学习降维,借鉴拓扑流形概念的降维方法,要求数据样本比较密集
  8. 多维缩放降维MDS,要求原始空间中样本之间的距离在低维空间中得到保持
  9. 等度量映射降维Isomap,简历近邻图(近邻个数、近邻距离),计算点之间最短距离,用MDS算法计算低维空间中的坐标。近邻范围控制不佳会导致短路和断路问题。对新样本要重新计算。
  10. 局部线性嵌入LLE,目标是保持临域内样本之间的线性关系

Python实战
(略)

第6章 聚类和EM算法

  1. 训练样本的标记信息未知时,称为无监督学习,主要工具时聚类
  2. 聚类的作用:寻找数据的分布规律;作为分类的预处理过程
  3. 聚类的有效性指标:同类相近,异类远离。外部指标(有参考模型),内部指标
  4. 外部指标:JC、FMI、RI、ARI,越大越好
  5. 内部指标:DBI越小越好、DB越大越好
  6. 距离度量,明可夫斯基距离、VDM距离
  7. 原型聚类,假设聚类结构能通过一组原型刻画。k-means、高斯混合聚类
  8. k-means:选择初始中心->分簇->调整中心->迭代->over
  9. 密度聚类DBSCAN,假设聚类结构能够通过样本分布的紧密程度确定,通过邻域参数 (ϵ,MinPts) ( ϵ , M i n P t s ) 即(邻域距离、样本数量);概念:邻域、核心对象、密度直达、密度可达、密度相连;算法:从核心对象出发,寻找密度可达样本。
  10. 层次聚类:AGNES算法,首先将每个样本看作一个类,然后不断找距离最近的两个簇进行合并。
  11. EM算法,一种迭代算法,用于含有隐变量的概率模型参数估计。每次分为两步——E步求期望,M步求极大
  12. 通常概率模型的参数估计,可以使用极大似然估计或贝叶斯估计,当模型含有隐变量时无效

第7章 支持向量机

  1. 支持向量机SVM的基本模型是定义在特征空间上间隔最大的线性分类器
  2. 空间: 欧 氏 空 间 ⊆ 希 尔 伯 特 空 间 ⊆ 内 积 空 间 ⊆ 赋 范 空 间
  3. SVM的优点:被线性方法,样本量少也可抓住其非线性关系,避免神经网络结构选择和局部极小点问题,提高泛化性能,解决高维问题
  4. SVM的缺点:对缺失值敏感,对非线性问题没有通用的解决方案,计算复杂度搞(O(n^2)),两个参数 核、C 影响很大需要试错

第8章 人工神经网络

  1. 感知机的损失函数:误分类点到超平面S的总距离
  2. 感知机的学习算法:梯度下降法,迭代
  3. 对偶形式使得可以提前计算Gram矩阵
  4. 标准BP算法:误差逆传播算法,每次对单个样本的误差最小化原则推导,迭代次数更多,存在样本间的抵消
  5. 累计误差逆传播算法:每次对整个T进行一轮迭代,对整体的误差最小化
  6. BP神经网络易过拟合,可以通过早停正则化解决

第9章 半监督学习

  1. 生成式版监督学习
  2. 图半监督学习

第10章 集成学习

  1. Boosting:个体学习器之间存在强依赖关系,必须串行
  2. Bagging:个体学习器之间不存在强依赖关系,可以并行
  3. Boosting步骤:
    (1)学习第一个基学习器
    (2)调整训练样本权重,设置此学习器的权重
    (3)迭代学习下一个学习器,直到结束条件
    (4)加权组合基学习器
  4. AdaBoost多分类,SAMME算法
  5. Bagging基于自主采样法,进行N次有放回重复独立采样形成采样集,则越有63.2%的样本出现在采样集中。采用M轮自主采样法,得到M个采样集,分别训练基学习器并组合
  6. 从偏差-方差角度,Bagging主要关注降低方差。对于不剪枝决策树、神经网络等易收到样本扰动的学习器上效果明显
  7. 随机森林,以决策树为基学习器的Bagging算法,并引入了随机属性选择
    *传统决策树每次选择一个最优属性
    *RF首先选择一个包含k个属性的子集,然后选最优属性,通常建议 k=log2n k = log 2 ⁡ n
  8. 误差-分歧分解,个体学习器准确性越高、多样性越大,即成效果越好
  9. 多样性增强:数据样本扰动(对不稳定学习器有效如决策树、神经网络;对稳定学习器无效,如线性学习器,支持向量机,朴素贝叶斯,KNN等);属性扰动(适合于含大量冗余属性,不适用于属性少的)

第11章 数据预处理

  1. 唯一值:删除
  2. 缺失值:直接使用,如决策树
  3.    : 删除特征,对于大量缺失的
  4.    : 缺失值补全
  5. 缺失值补全:均值插补、同类均值插补、建模预测、高维映射(one-hot)、多重插补(估计+噪声)、压缩感知和矩阵补全
  6. 特征编码:二元化、独热编码(可处理非数值属性,扩充特征,属性稀疏)
  7. 数据标准化:使样本数据缩放到某个指定范围。原因:数量级大的属性占主导,收敛速度慢,所有依赖于样本距离的算法对数据的数量级都比较敏感。方法:min-max,z-score,
  8. 数据正则化:正则化过程针对单个样本,对核方法计算样本相似性有效
  9. 特征选择和降维技术是处理高维数据的两大主要方法,包括过滤式、包裹式、嵌入式
  10. 过滤式选择:Relief,判断两个样本在属性j上的差异值,若最终某个属性差异值很弱,可过滤;推广多分类为Relief-F
  11. 包裹式选择:直接把要是使用的学习器的性能作为特征子集的评价准则,需要多次训练。如LVW,通过随机产生特征子集来调整
  12. 嵌入式选择和L1正则化:L1范数会降低过拟合风险,得到的权重中大量为0,可以作为特征选择
  13. 稀疏表示和字典学习

第12章 模型评估、选择与验证

  1. 损失函数:0-1损失、平方损失、绝对损失、对数损失
  2. 经验风险最小化,结构风险最小化
  3. 训练误差、测试误差、泛化误差
  4. 过拟合、欠拟合
  5. 模型评估——交叉验证
  6. 性能度量:准确率、错误率、查准率(精确率)、查全率(召回率)
  7. 对于推荐系统,侧重查准率;对于医学诊断系统,侧重查全率
  8. P-R曲线:纵轴:P,横轴:R。越靠右上越好
  9. ROC曲线:纵轴:TPR,横轴:FPR;(真正例率,TP/(TP+FN);假正例率,FP/(TN+FP)。越靠左上越好
  10. ROC曲线下的面积为AUC
  11. PR曲线和ROC曲线都是刻画阈值对分类性能的影响
  12. 泛化误差可以分解为:偏差、方差、噪声
  13. 偏差:度量学习算法的期望预测与真实结果的偏离程度,即算法本身的拟合能力
  14. 方差:度量训练集的变动导致学习性能的变化,刻画了数据扰动造成的影响
  15. 噪声:度量当前任务上任何学习算法所能达到的期望泛化误差下届,刻画问题本身的难度
  16. 偏差-方差分解表明:泛化性能是由学习算法的能力、数据的充分性和学习任务本身的难度共同决定的

你可能感兴趣的:(机器学习,读书笔记)