头图

本教程的知识点为:机器学习算法定位、 K-近邻算法 1.4 k值的选择 1 K值选择说明 1.6 案例:鸢尾花种类预测--数据集介绍 1 案例:鸢尾花种类预测 1.8 案例:鸢尾花种类预测—流程实现 1 再识K-近邻算法API 1.11 案例2:预测facebook签到位置 1 项目描述 线性回归 2.3 数学:求导 1 常见函数的导数 线性回归 2.5 梯度下降方法介绍 1 详解梯度下降算法 线性回归 2.6 线性回归api再介绍 小结 线性回归 2.9 正则化线性模型 1 Ridge Regression (岭回归,又名 Tikhonov regularization) 逻辑回归 3.3 案例:癌症分类预测-良/恶性乳腺癌肿瘤预测 1 背景介绍 决策树算法 4.2 决策树分类原理 1 熵 决策树算法 4.3 cart剪枝 1 为什么要剪枝 决策树算法 4.4 特征工程-特征提取 1 特征提取 决策树算法 4.5 决策树算法api 4.6 案例:泰坦尼克号乘客生存预测 集成学习基础 5.1 集成学习算法简介 1 什么是集成学习 2 复习:机器学习的两个核心任务 集成学习基础 5.3 otto案例介绍 -- Otto Group Product Classification Challenge 1.背景介绍 2.数据集介绍 3.评分标准 集成学习基础 5.5 GBDT介绍 1 Decision Tree:CART回归树 1.1 回归树生成算法(复习) 聚类算法 6.1 聚类算法简介 1 认识聚类算法 聚类算法 6.5 算法优化 1 Canopy算法配合初始聚类 聚类算法 6.7 案例:探究用户对物品类别的喜好细分 1 需求 第一章知识补充:再议数据分割 1 留出法 2 交叉验证法 KFold和StratifiedKFold 3 自助法 正规方程的另一种推导方式 1.损失表示方式 2.另一种推导方式 梯度下降法算法比较和进一步优化 1 算法比较 2 梯度下降优化算法 第二章知识补充: 多项式回归 1 多项式回归的一般形式 维灾难 1 什么是维灾难 2 维数灾难与过拟合 第三章补充内容:分类中解决类别不平衡问题 1 类别不平衡数据集基本介绍 向量与矩阵的范数 1.向量的范数 2.矩阵的范数 如何理解无偏估计?无偏估计有什么用? 1.如何理解无偏估计

完整笔记资料代码:https://gitee.com/yinuo112/AI/tree/master/机器学习/嘿马机器学...

感兴趣的小伙伴可以自取哦~


全套教程部分目录:


部分文件图片:

线性回归

学习目标

  • 掌握线性回归的实现过程
  • 应用LinearRegression或SGDRegressor实现回归预测
  • 知道回归算法的评估标准及其公式
  • 知道过拟合与欠拟合的原因以及解决方法
  • 知道岭回归的原理及与线性回归的不同之处
  • 应用Ridge实现回归预测
  • 应用joblib实现模型的保存与加载

2.9 正则化线性模型

学习目标

  • 知道正则化中岭回归的线性模型
  • 知道正则化中lasso回归的线性模型
  • 知道正则化中弹性网络的线性模型
  • 了解正则化中early stopping的线性模型

  • Ridge Regression 岭回归
  • Lasso 回归
  • Elastic Net 弹性网络
  • Early stopping

1 Ridge Regression (岭回归,又名 Tikhonov regularization)

岭回归是线性回归的正则化版本,即在原来的线性回归的 cost function 中添加正则项(regularization term):

image-20190404180643584

以达到在拟合数据的同时,使模型权重尽可能小的目的,岭回归代价函数:

image-20190404180757307

  • α=0:岭回归退化为线性回归

2 Lasso Regression(Lasso 回归)

Lasso 回归是线性回归的另一种正则化版本,正则项为权值向量的ℓ1范数。

Lasso回归的代价函数 :

image-20190404181600245

【注意 】

  • Lasso Regression 的代价函数在 θi=0处是不可导的.
  • 解决方法:在θi=0处用一个次梯度向量(subgradient vector)代替梯度,如下式
  • Lasso Regression 的次梯度向量

image-20190404181709725

Lasso Regression 有一个很重要的性质是:倾向于完全消除不重要的权重。

例如:当α 取值相对较大时,高阶多项式退化为二次甚至是线性:高阶多项式特征的权重被置为0。

也就是说,Lasso Regression 能够自动进行特征选择,并输出一个稀疏模型(只有少数特征的权重是非零的)。

3 Elastic Net (弹性网络)

弹性网络在岭回归和Lasso回归中进行了折中,通过 混合比(mix ratio) r 进行控制:

  • r=0:弹性网络变为岭回归
  • r=1:弹性网络便为Lasso回归

弹性网络的代价函数 :

image-20190406110447953

一般来说,我们应避免使用朴素线性回归,而应对模型进行一定的正则化处理,那如何选择正则化方法呢?

小结:

  • 常用:岭回归
  • 假设只有少部分特征是有用的:

    • 弹性网络
    • Lasso
    • 一般来说,弹性网络的使用更为广泛。因为在特征维度高于训练样本数,或者特征是强相关的情况下,Lasso回归的表现不太稳定。
  • api:

    from sklearn.linear_model import Ridge, ElasticNet, Lasso

    
    
    
    
    
    
    
    
    ## 4 Early Stopping [了解]
    
    
    
    
    Early Stopping 也是正则化迭代学习的方法之一。
    
    其做法为:在验证错误率达到最小值的时候停止训练。
    
    
    
    
    ## 5 小结
    
    
    
  • Ridge Regression 岭回归

    • 就是把系数添加平方项
    • 然后限制系数值的大小
    • α值越小,系数值越大,α越大,系数值越小
  • Lasso 回归

    • 对系数值进行绝对值处理
    • 由于绝对值在顶点处不可导,所以进行计算的过程中产生很多0,最后得到结果为:稀疏矩阵
  • Elastic Net 弹性网络

    • 是前两个内容的综合
    • 设置了一个r,如果r=0--岭回归;r=1--Lasso回归
  • Early stopping

    • 通过限制错误率的阈值,进行停止

    2.10 线性回归的改进-岭回归

    学习目标

  • 知道岭回归api的具体使用


    1 API

  • sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver="auto", normalize=False)

    • 具有l2正则化的线性回归
    • alpha:正则化力度,也叫 λ

      • λ取值:0~1 1~10
    • solver:会根据数据自动选择优化方法

      • sag:如果数据集、特征都比较大,选择该随机梯度下降优化
    • normalize:数据是否进行标准化

      • normalize=False:可以在fit之前调用preprocessing.StandardScaler标准化数据
    • Ridge.coef_:回归权重
    • Ridge.intercept_:回归偏置

    Ridge方法相当于SGDRegressor(penalty='l2', loss="squared_loss"),只不过SGDRegressor实现了一个普通的随机梯度下降学习,推荐使用Ridge(实现了SAG)

  • sklearn.linear_model.RidgeCV(_BaseRidgeCV, RegressorMixin)

    • 具有l2正则化的线性回归,可以进行交叉验证
    • coef_:回归系数
    class _BaseRidgeCV(LinearModel):
      def __init__(self, alphas=(0.1, 1.0, 10.0),
                   fit_intercept=True, normalize=False,scoring=None,
                   cv=None, gcv_mode=None,
                   store_cv_values=False):

    2 观察正则化程度的变化,对结果的影响?

    正则化力度

  • 正则化力度越大,权重系数会越小
  • 正则化力度越小,权重系数会越大

    3 波士顿房价预测

    def linear_model3():
      """
      线性回归:岭回归
      :return:
      """
      # 1.获取数据
      data = load_boston()
    
      # 2.数据集划分
      x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, random_state=22)
    
      # 3.特征工程-标准化
      transfer = StandardScaler()
      x_train = transfer.fit_transform(x_train)
      x_test = transfer.fit_transform(x_test)
    
      # 4.机器学习-线性回归(岭回归)
      estimator = Ridge(alpha=1)
      # estimator = RidgeCV(alphas=(0.1, 1, 10))
      estimator.fit(x_train, y_train)
    
      # 5.模型评估
      # 5.1 获取系数等值
      y_predict = estimator.predict(x_test)
      print("预测值为:\n", y_predict)
      print("模型中的系数为:\n", estimator.coef_)
      print("模型中的偏置为:\n", estimator.intercept_)
    
      # 5.2 评价
      # 均方误差
      error = mean_squared_error(y_test, y_predict)
      print("误差为:\n", error)

    4 小结

  • sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver="auto", normalize=False)【知道】

    • 具有l2正则化的线性回归
    • alpha -- 正则化

      • 正则化力度越大,权重系数会越小
      • 正则化力度越小,权重系数会越大
    • normalize

      • 默认封装了,对数据进行标准化处理

    2.11 模型的保存和加载

    学习目标

  • 知道sklearn中模型的保存和加载


    1 sklearn模型的保存和加载API

  • from sklearn.externals import joblib

    • 保存:joblib.dump(estimator, 'test.pkl')
    • 加载:estimator = joblib.load('test.pkl')

    2 线性回归的模型保存加载案例

    def load_dump_demo():
      """
      模型保存和加载
      :return:
      """
      # 1.获取数据
      data = load_boston()
    
      # 2.数据集划分
      x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, random_state=22)
    
      # 3.特征工程-标准化
      transfer = StandardScaler()
      x_train = transfer.fit_transform(x_train)
      x_test = transfer.fit_transform(x_test)
    
      # 4.机器学习-线性回归(岭回归)
      # # 4.1 模型训练
      # estimator = Ridge(alpha=1)
      # estimator.fit(x_train, y_train)
      #
      # # 4.2 模型保存
      # joblib.dump(estimator, "./data/test.pkl")
    
      # 4.3 模型加载
      estimator = joblib.load("./data/test.pkl")
    
      # 5.模型评估
      # 5.1 获取系数等值
      y_predict = estimator.predict(x_test)
      print("预测值为:\n", y_predict)
      print("模型中的系数为:\n", estimator.coef_)
      print("模型中的偏置为:\n", estimator.intercept_)
    
      # 5.2 评价
      # 均方误差
      error = mean_squared_error(y_test, y_predict)




  
  
## 3 小结
  
  


* sklearn.externals import joblib【知道】

   * 保存:joblib.dump(estimator, 'test.pkl')
   * 加载:estimator = joblib.load('test.pkl')
   * 注意:

      * 1.保存文件,后缀名是**.pkl
      * 2.加载模型是需要通过一个变量进行承接




  
  
# 逻辑回归
  
  



  
  
## 学习目标
  
  


* 知道逻辑回归的损失函数、优化方法
* 知道逻辑回归的应用场景
* 应用LogisticRegression实现逻辑回归预测
* 知道精确率、召回率等指标的区别
* 知道如何解决样本不均衡情况下的评估
* 会绘制ROC曲线图形




  
  
# 逻辑回归
  
  



  
  
## 学习目标
  
  


* 知道逻辑回归的损失函数、优化方法
* 知道逻辑回归的应用场景
* 应用LogisticRegression实现逻辑回归预测
* 知道精确率、召回率等指标的区别
* 知道如何解决样本不均衡情况下的评估
* 会绘制ROC曲线图形


  
  
# 3.1 逻辑回归介绍
  
  



  
  
## 学习目标
  
  


* 了解逻辑回归的应用场景
* 知道逻辑回归的原理
* 掌握逻辑回归的损失函数和优化方案

---

逻辑回归(Logistic Regression)是机器学习中的**一种分类模型**,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和高效,在实际中应用非常广泛。


  
  
## 1 逻辑回归的应用场景
  
  


* 广告点击率
* 是否为垃圾邮件
* 是否患病
* 金融诈骗
* 虚假账号

看到上面的例子,我们可以发现其中的特点,那就是都属于两个类别之间的判断。逻辑回归就是解决二分类问题的利器


  
  
## 2 逻辑回归的原理
  
  


要想掌握逻辑回归,必须掌握两点:

* 逻辑回归中,其输入值是什么

* 如何判断逻辑回归的输出



  
  
### 2.1 输入
  
  


![é€"辑回归输入](/img/bVddZ3y)

逻辑回归的输入就是一个线性回归的结果。


  
  
### 2.2 激活函数
  
  


程序员一诺python
16 声望16 粉丝

python技术发烧友 资料收集狂