机器学习笔记 (2)-逻辑回归模型

参考资料

  • 《机器学习》-周志华
  • 《统计学习方法》-李航
  • 《斯坦福大学2014机器学习教程个人笔记》-黄海广
  • 《寒小阳机器学习讲义》-寒小阳

摘要

机器学习包含监督学习、非监督学习、以及强化学习三大部分。监督学习又分为分类和回归两大类。Logistic回归模型就属于监督学习里的分类模型

正文

1. 问题的引入

在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈等等。
我们从二元的分类问题开始讨论

2.逻辑回归的定义

2.1 定义:
hθ(x)=g(θ0+θ1.x1+θ2.x2+...+θn.xn)=11+expz
其中 z=θ0+θ1.x1+θ2.x2+...+θn.xn
向量化表示为为:
hθ(x)=11+expθT.x

2.2 判定边界
* z = 0时,g(z) =0.5
* z > 0时,g(z) >0.5
* z < 0时,g(z) <0.5

3.激活函数Sigmod函数

3.1 激活函数的定义:
f(x)=11+expx

3.2 激活函数的图像
激活函数的图像

4.损失函数

4.1 不用最小二乘定义损失函数的原因:
J(θ)=1mmi=112{hθ(xi)yi}2
对应的图像为:
非凸函数

由上图知,最小二乘定义的损失函数不为凸函数,不易于数学计算。因此不用最小二乘定义的损失函数。

4.2 逻辑回归对应的损失函数:
损失函数的公式
该损失函数为凸函数

损失函数向量化为:
总体损失函数

4.3正则化后的损失函数为:
正则化后的损失函数
正则化的目的:防止数据过拟合

4.4 损失函数对应的图像
损失函数对应的图像

5. 梯度下降算法

5.1 梯度下降算法求损失函数的极小值
即对损失函数正则化后的损失函数,通过梯度下降算法求极小值。即:
梯度下降算法对应的公式

5.2 算法的伪代码表述:
算法的伪代码表述

6. 多分类问题

利用二分类器进行多分类
* one vs one
利用二分类器对其中的两个类别进行训练,需要训练出 n.(n-1) 个分类器,然后选择投票数最多的类别作为整个模型最终预测的类别。

  • one vs rest
    在一对多方法中,我们将多类分类问题转化成二元分类问题。为了能实现这样的转变,我们将多个类中的一个类标记为正向类(y=1),然后将其他所有类都标记为负向类。
    最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量。

7.主要代码实现:

代码下载

#导入依赖模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
from sklearn.preprocessing import PolynomialFeatures
%matplotlib inline

#定义sigmoid激活函数
def sigmoid(z):
    return(1 / (1 + np.exp(-z)))

#定义损失函数
def costFunction(theta, X, y):
    m = y.size
    h = sigmoid(X.dot(theta))

    J = -1.0*(1.0/m)*(np.log(h).T.dot(y)+np.log(1-h).T.dot(1-y))

    if np.isnan(J[0]):
        return(np.inf)

    return J[0]

#梯度函数
def gradient(theta, X, y):
    m = y.size
    h = sigmoid(X.dot(theta.reshape(-1,1)))

    grad =(1.0/m)*X.T.dot(h-y)

    return(grad.flatten())

# 最小化损失函数
res = minimize(costFunction, initial_theta, args=(X,y), jac=gradient, options={'maxiter':400})

总结:

  • LR模型可解释性强,可控度高
  • 训练快,进行合适的特征工程之后效果很好
    结果为概率,可以用于做排名
  • 添加feature简单
  • 常作为系统的基线模型

本章代码下载 https://github.com/yanwosky4/MLNotebookProject/tree/master/note2-LogisticModel/code
邮箱: yanwosky4@gmail.com
github地址: https://github.com/yanwosky4 ,欢迎Star

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值