机器学习实战四(logisticregression)

Lucifer Lucifer     2022-10-09     208

关键词:

机器学习实战四(Logistic Regression)

这一章会初次接触最优化算法,在日常生活中应用很广泛。这里我们会用到基本的梯度上升法,以及改进的随机梯度上升法。

Logistic回归

优点:计算代价不高,易于理解和实现

缺点:容易欠拟合,分裂精度可能不高

原理:根据现有数据堆分类边界线建立回归公式,依次进行分类。

这里的回归其实就是最佳拟合的意思。

1、基于Logistic回归和Sigmoid函数的分类。

我们需要一个这样的函数:接受所有的输入,然后预测出类别。例如,如果只有两类,则输出0和1,有个函数就有类似的性质,Sigmoid函数:

Sigmoid函数的具体计算公式如下:(sigma left( z ight) =dfrac {1}{1+e^{-z}})

很容易证明界限在0-1之间,这样就保证,无论Sigmoid函数吃进去什么数,吐出来的数一定在0-1之间。

于是Logistic分类器就可以这样构造:对于每个特征乘以一个回归系数,然后相加,将这个数放入Sigmoid函数,如果得出来数字大于0.5,分类为1,否则为0.从这个角度来看,Logistic回归也是一种概率估计。

2、基于最优化方法的最佳回归系数确定

Sigmoid函数的输入记为z,那么:
(z=w_{0}x_{0}+w_{1}x_{1}+ldots +w_{n}x_{n}),也可以写成:(z=w^{T}x),这里的向量w就是最佳回归系数。

这里我们采用的是梯度上升算法,具体原理按下不表,直接看代码。

from matplotlib import pyplot as plt
import numpy as np
import random


# 加载数据集
def loadDataSet():
    dataMat = []
    labelMat = []
    fr = open(‘testSet.txt‘)
    for line in fr.readlines():
        lineArr = line.strip().split()
        dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
        labelMat.append(int(lineArr[-1]))
    return dataMat, labelMat


# Sigmoid函数
def sigmoid(inX):
    return 1.0 / (1 + np.exp(-inX))


# 梯度上升
def gradAscent(dataMatIn, classLabels):
    dataMatrix = np.mat(dataMatIn)
    labelMat = np.mat(classLabels).transpose()
    m, n = dataMatrix.shape
    alpha = 0.01
    maxCycles = 500
    weights = np.ones((n, 1))
    for k in range(maxCycles):
        h = sigmoid(dataMatrix * weights)
        error = (labelMat - h)
        weights = weights + alpha * dataMatrix.transpose() * error
    return weights

梯度上升算法在每次更新回归系数时都需要遍历整个数据集,这样的计算复杂度无疑是太高了。有一种改进的方法是每次只用一个样本点来更新回归系数,这种方法被称为随机梯度上升算法,在新的样本到来时可以增量更新,是一种在线学习算法。

# 随机梯度上升
def stocGradAscent(dataMatrix, classLabel, numIter=150):
    dataIndex = np.array(dataMatrix)
    classLabel = np.array(classLabel)
    m, n = dataMatrix.shape
    weights = np.ones(n)
    for j in range(numIter):
        dataIndex = list(range(m))
        for i in range(m):
            alpha = 4 / (1.0 + j + i) + 0.0001
            randIndex = int(random.uniform(0, len(dataIndex)))
            h = sigmoid(np.sum(dataMatrix[randIndex] * weights))
            error = classLabel[randIndex] - h
            weights = weights + alpha * error * dataMatrix[randIndex]
            del dataIndex[randIndex]
    return weights

书中的预测病马死亡率的例子不难实现,而且介绍到数据预处理在机器学习中的重要性,因为机器学习的算法输入数据是有格式要求的,有时我们获取的数据会存在异常值或者缺失值的时候,就有进行预处理的必要。

Logistic小结:
寻找一个非线性函数Sigmoid的最佳拟合参数,求解过程由最优化算法完成,常用梯度上升算法,但是计算量大,可以由随机梯度上升算法改进,这是一个在线算法,在新数据到来时完成参数更新,不需要重新读取整个数据集。


Next:支持向量机,一种与Logistic回归类似的分类算法,被认为是目前最好的现成的算法之一。

总结:Logistic的原理并不复杂,这里只是初步接触最优化算法,像梯度上升和梯度下降之类的,还需要好好的研究。

References:https://github.com/plantree/Machine-Learing-In-Action/chapter5

人工智能学习

...二阶段:编程python工具库实战/python网络爬虫第三阶段:机器学习机器学习入门/机器学习提升第四阶段:数据挖掘实战数据挖掘入门/数据分析实战第五阶段:深度学习深度学习网络与框架/深度学习项目实战 https://blog.cs... 查看详情

机器学习实战教程汇总(十三篇)

机器学习实战教程(13篇)这些网址非常适合想学习机器学习,却苦于没有项目(尤其缺少数据)的人。无意中看到,给自己做一个记录。机器学习实战教程(一):K-近邻算法(史诗级干货长文)... 查看详情

机器学习实战运用:速刷牛客5道机器学习题目(代码片段)

目录前言一、AI1 鸢尾花分类_1描述:解答:二、AI2 鸢尾花分类_2描述解答三、 AI3 决策树的生成与训练-信息熵的计算描述 解答 四、AI4 决策树的生成与训练-信息增益描述 解答:选择最优划分算法 五、AI5 使用... 查看详情

opencv4机器学习:决策树原理及分类实战(代码片段)

...结合OpenCV4,来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章,持续更新:OpenCV4机器学习(一):... 查看详情

机器学习实战[machinelearninginaction]

内容简介  机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或模式,成为各行业求生存、谋发展的决定性手段,这使得这一过去为分析师和数学家所专... 查看详情

《机器学习实战》-机器学习基础(代码片段)

目录机器学习基础什么是机器学习机器学习应用场景海量数据机器学习的重要性机器学习的基本术语监督学习和非监督学习监督学习:supervisedlearning非监督学习:unsupervisedlearning机器学习工具介绍Python非PythonNumPy函数库基础测试Nu... 查看详情

机器学习常见性能指标《机器学习实战》笔记

均方根误差平均绝对误差 查看详情

《机器学习实战》logistic回归算法

=====================================================================《机器学习实战》系列博客是博主阅读《机器学习实战》这本书的笔记也包含一些其他python实现的机器学习算法              查看详情

机器学习实战~~机器学习算法

以下内容都是通过看寄《机器学习实战》这本书后进行的总结。有疏漏的地方请指正。 一般在实际问题中选择相应的算法需考虑两个问题:第一:使用算法的目标,想要算法完成何种任务。比如预测明天下雨的概率 还是... 查看详情

《机器学习实战》问题记录(代码片段)

...于实验室研究方向变更,本文不再更新~ 本文是对《机器学习实战》进行学习时遇到问题记录。由于书中代码使用Python2.X,而本机使用Python3.X,导致运行时有部分程序出现错误。问题1:问题位置:3.2在Python中使用Matplotlib注解... 查看详情

机器学习实战机器学习基础

1.1机器学习概念:机器学习能让我们从数据集中受到启发,换句话说,我们会利用计算机来彰显数据背后的真实含义。机器学习就是把无序的数据转换成有用的信息。1.2机器学习的主要任务:大多数人都见过回归的例子——数据... 查看详情

机器学习实战第1章机器学习基础

第1章机器学习基础机器学习概述机器学习就是把无序的数据转换成有用的信息。获取海量的数据从海量数据中获取有用的信息我们会利用计算机来彰显数据背后的真实含义,这才是机器学习的意义。机器学习场景例如:识别动... 查看详情

《机器学习实战》知识点笔记目录

  从今天起,开始学习《机器学习实战》,并记录学习到的知识点。            --2017-12-311,第2章KNN算法笔记_函数classify0  查看详情

机器学习流程模板及多模型对比实战梳理

机器学习流程模板及多模型对比实战梳理目录机器学习流程模板及多模型对比实战梳理#数据加载 查看详情

机器学习实战之第一章机器学习基础

第1章机器学习基础机器学习概述机器学习就是把无序的数据转换成有用的信息。获取海量的数据从海量数据中获取有用的信息我们会利用计算机来彰显数据背后的真实含义,这才是机器学习的意义。机器学习场景例如:识别动... 查看详情

机器学习实战一(knn)

机器学习实战一(kNN)跟着老师做一个项目,关于行车记录仪识别前方车辆,并判断车距,不太好做。本来是用OpenCV,做着做着,突然发现需要补习一下机器学习的内容。《机器学习实战(machinelearinginaction)》这本书买了很久... 查看详情

机器学习贝叶斯算法详解+公式推导+垃圾邮件过滤实战+python代码实现(代码片段)

文章目录一、贝叶斯简介二、贝叶斯公式推导三、拼写纠正案例四、垃圾邮件过滤案例4.1问题描述4.2朴素贝叶斯引入五、基于朴素贝叶斯的垃圾邮件过滤实战5.1导入相关库5.2邮件数据读取5.3构建语料表(字典)5.4构建训... 查看详情

机器学习实战笔记-1基础

机器学习基础什么是机器学习机器学习能让我们从数据集中受到启示。换句话说。我们会利用计算机来彰显数据背后的真实含义。简单的说机器学习就是把无序数据转换成实用的信息。关键术语特征(属性):对一类物体我们关心... 查看详情