线性回归

通俗地说逻辑回归【Logistic regression】算法(一)

匿名 (未验证) 提交于 2019-12-02 21:53:32
在说逻辑回归前,还是得提一提他的兄弟,线性回归。在某些地方,逻辑回归算法和线性回归算法是类似的。但它和线性回归最大的不同在于,逻辑回归是作用是分类的。 还记得之前说的吗,线性回归其实就是求出一条拟合空间中所有点的线。逻辑回归的本质其实也和线性回归一样,但它加了一个步骤,逻辑回归使用sigmoid函数转换线性回归的输出以返回概率值,然后可以将概率值映射到两个或更多个离散类。 如果给出学生的成绩,比较线性回归和逻辑回归的不同如下: 线性回归可以帮助我们以0-100的等级预测学生的测试分数。线性回归预测是连续的(某个范围内的数字)。 Logistic回归可以帮助预测学生是否通过。逻辑回归预测是离散的(仅允许特定值或类别)。我们还可以查看模型分类背后的概率值。 之前介绍线性回归的时候,它的函数是这样样子的: h(x)=θ0 + θ1 * x1 + θ2 * x2 + θ3 * x3 ... 但这样的函数是没办法进行分类的工作的,所以我们要借助一下其他函数,那就是Sigmoid Function。 我们先来看看这个Sigmoid Function长什么样,Sigmoid Function的数学公式是这样子的: 如果表示在平面坐标轴上呢,那它长这个样子。 这个Sigmoid Function可以将线性的值,映射到[0-1]这个范围中 。如果映射结果小于0.5,则认为是负的样本,如果是大于0.5

挖掘建模

非 Y 不嫁゛ 提交于 2019-12-02 16:39:33
挖掘建模 经过数据探索于数据预处理,得到了可以直接建模的数据..根据挖掘目标和数据形式可以建立分类与预测,聚类分析,关联规则,时序模式和偏差检测等模型.帮助企业提取数据汇总蕴含得商业价值,提高企业得竞争力. 分类和预测问题得两种主要类型,分类主要是预测分类标号(离散属性),而预测主要是建立连续值函数模型,预测给定自变量对应得因变量得值 实现过程: 分类: 分类是构造一个分类模型,输入样本得属性值,输出对应得类别,将每个样本映射到预先定义好 得类别. 分类模型建立再已有类标记得数据集上,模型再已有样本上得准确率可以方便得计算,所以分类属于有监督得学习. 预测 预测是指建立两种或两种以上变量相互依赖得函数模型(线性回归...),然后进行预测或控制 实现过程: 分类和预测得实行过程类似, 分类算法有两步过程:第一步是学习步,通过归纳分析训练样本集来建立分类规则;第二步是分类步,先用已知得测试样本集评估分类规则得准确率,如果准确率是可以接受的,则使用该模型对未知类标号的待测样本集进行预测. 预测模型的实现也有两步,第一步是通过训练集建立预测属性(数值型)的函数模型,第二步再模型通过检验后进行预测或控制 常用的分类与预测算法 算法名称 算法描述 回归分析 回归分析是确定预测属性(数值型)与其他变量之间相互依赖的定量关系最常用的统计学方法,包括线性回归,非线性回归,Logistic回归,岭回归

线性回归的几个例子

你离开我真会死。 提交于 2019-12-02 15:00:41
线性回归的概念: 给定数据集D = {(x1, y1), (x2, y2)........(xm, ym)},向量x和结果y均属于实数空间R。“线性回归”试图学得一个线性模型以尽可能准确的预测实值进行标记。 其数学表达式如下图所示: 再定义损失函数: 其中h(x)为预测值,y为真实值 现在就是要找到一个θ使得J(θ)的值最小 (1)标准公式法: 然而实际情况下 往往不满秩,为了解决这个问题,常见的做法是引入正则项。 即: 下面的例子是用线性回归预测波士顿的房价: import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression, LassoCV, RidgeCV, ElasticNetCV from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler def notEmpty(s): return s != '' df = pd.read_csv('../datas/housing.data', header=None) datas = np.empty((len(df

如何理解线性回归中的“回归”,回归到哪里?

我们两清 提交于 2019-12-02 12:32:40
原文地址: https://blog.csdn.net/Laputa_ML/article/details/80100739 如何理解线性回归中的“回归”,回归到哪里?先看看线性回归的英文regression towards the mean。mean在英文中是平均值的意思。 那么平均值又怎么理解呢?个人觉得如果能和另外几个值联合起来思考更有助于理解。它们是——真实值、测量值。 真实值 就是一个物体的真实的值。比如桌面的长度的真实值。真实值有什么特点呢? 1、真实值确定存在,比如桌子的长度一定存在一个值。 2、人类永远无法得到真实值,这个比较难以理解了,为什么无法得到真实值,还是永远呢?——因为误差永远存在,无论使用多么精密的测量仪器,无论测量者多么认真仔细,无论测量多少次,误差用用存在,人类永远无法得到真实值。(你要有点哲学思维才能理解) 测量值 测量值就是人类测量桌面长度得到的值,上面说过,测量值由于误差的存在,一定不等于真实值。 平均值 通俗的理解就是多次测量结果求算术平均数的平均值。那么平均值和真实值之间是什么关系呢?个人理解如下: 1、在有限次测量次数的前提下,平均值永远不会等于真实值 2、当测量次数增加的前提下,平均值会接近真实值 3、当测量次数达到无穷∞∞的时候,平均值等于真实值 1和2都很好理解,因为误差的存在导致的。 那么3为什么当测量次数达到∞∞的时候

线性回归中“回归”的含义

孤街浪徒 提交于 2019-12-02 12:31:27
原文地址: https://blog.csdn.net/laputa_ml/article/details/80072570#comments 今天我就简单谈谈自己的一些新想法。我们从最基本的容易引起歧义的地方出发。很多人问我,回归(regression)和拟合(fitting)有什么不同?其实如果你想从数学的角度去区分它们,你就出不来了。知识往往都有“先入为主”的那种影响。我们接触的第一类回归问题,就是简单线性回归,或者多项式回归,而这恰恰和我们接触的拟合问题“天然地相似”:最小二乘法求解参数。因此,那些数学出身的学生,就始终很难将这两类问题真正区分开。但是如果从历史发展的角度,结合更多实际问题来看,这个问题是很容易体会清楚的。 开始的时候,人们得到了很多组数据,这些数据之间貌似是有联系的,于是人们想要找到一种近似的函数关系,来对这些组变量的联系进行某种描述,进而获得某种解释。 当然,人们十分清楚,如果这些数据都是精确无误的,那么经过这些点的插值函数就能较好地解决问题。但是现在,这些采集得到的数据可能是有误差的,或者是biased的,于是插值函数的准确性就反而要被质疑了。于是人们就想找一条不经过任何点,但是却能描述这些数据的基本规律的曲线。这就是拟合。拟合最初是由勒让德和高斯两位数学家在1804年和1809年提出的,那个时候,概率和统计和现在相比,简直还处于原始阶段

机器学习基础

血红的双手。 提交于 2019-12-02 12:21:49
ML是一个描述使用一组通用算法分析数据的过程的概念,它能提供你感兴趣的数据,而不用专门编写特定代码。 可以将ML视为黑箱,前沿科学家使用黑箱来实现一些高级功能,比如,检测癫痫病或者癌症,而你的邮件收件箱将会每天使用黑箱过滤垃圾邮件。 从更高的层面上说,ML可以分为监督式学习和非监督式学习。 1.1.1 监督式学习 对于监督式学习,我们的主要任务是编写一个函数将输入映射到输出。比如,如果有一个输入变量( x )和一个输出变量( y ),那么就可以使用某个算法作为从输入到输出的映射函数: y = f ( x ) 我们的目标是尽量实现映射函数,这样当有一个输入( x )的时候,我们可以预测出对应的输出变量( y )。 比如,我们有一堆水果和一些篮子。首先,我们将水果和篮子按照标签分类,如苹果、香蕉、草莓等。当将水果和篮子的标签制作好并将水果放到对应的篮子中之后,现在我们的工作就是标记新添加的水果。我们已经学习了所有的水果品种并用标签将它们标记好了。基于之前的经验,我们可以根据水果的颜色、大小和形状来标记水果的品种。 1.1.2 非监督式学习 在这种情况下,只有输入数据( x ),没有对应的输出变量。非监督式学习的目标是对数据的基础结构或分布情况进行建模,由此从数据中学习更多知识。 在非监督式学习中,我们一开始可能没有任何数据。看一下监督式学习中的例子,现在我们有一篮子水果

广义回归算法通释

放肆的年华 提交于 2019-12-02 06:32:37
广义回归算法的分类 广义的回归算法有很多种,从用途划分有预测(即狭义回归)、分类两大类。 响应变量是连续性变量,即预测算法;响应变量是类别型变量,即分类算法。 判定边界可以用方程函数表达 特征可以是单个(单变量、二维空间),也可以是多个(多变量、高维空间)。 线性关系是直线(二维空间)、平面(高维空间),非线性关系是曲线(二维空间)、曲面(高维空间)。 避免模型欠拟合或者过拟合:欠拟合,准确性低;过拟合,通用性差,样本变动会导致准确性极度不稳定。 下图是几种不同风格的2D图像,计算机目前也仅能展示到3D,可以暂且将4D甚至更高维都看成类似2D、3D的图像原理:总是有一种判定边界,不管是直线、圆、曲线,还是曲面,都能将样本拟合或者分割。这些判定边界也总是能用方程式表达出来:线性方程、多项式方程、指数方程、logistic方程,反正总有方程函数可以表达。 最优判定边界即最小化损失函数 不管预测还是分类,都属于监督学习。 监督学习的优化方法=损失函数+对损失函数的优化。 所以,回归算法要明确损失函数的定义、最小化损失函数。 损失函数:度量预测值和实际值的距离偏差,注意距离的计算公式并不是固定的。 不管模型是什么方程函数,其损失函数一般都是凹或凹凸曲面,最凹点就是最小值。 用梯度下降法求损失函数最小值 https://blog.csdn.net/qq_41800366/article

线性回归

北战南征 提交于 2019-12-02 02:34:32
0. 概述 线性回归应该是我们听过次数最多的机器学习算法了。在一般的统计学教科书中,最后都会提到这种方法。因此该算法也算是架起了数理统计与机器学习之间的桥梁。线性回归虽然常见,但是却并不简单。该算法中几乎包含了所有有监督机器学习算法的重要知识点,比如数据的表示、参数的训练、模型的评价、利用正则化防止过拟合等概念。所以说如果掌握了线性回归,可以为后面的学习打下坚实的基础。 1. 线性回归的基本形式 最简单的线性回归就是直接利用一条直线拟合二维平面上的一系列点,目的是利用这条直线概括所有训练集中样本的散布规律或趋势,最终用于新样本点的预测。二维平面上直线方程的一般形式为 y = a x + b y=ax+b,使用训练集中的数据以某种方式训练该模型后,就可以确定方程中的两个参数 a , b a,b的最优值。后面如果观察到了新的样本 x i xi,就可以带入上面学习到的公式计算 y y的值了。 在三维空间中,需要学习的是确定一个二维平面的参数; 以此类推,在 n n维空间中,需要学习的是确定一个 n − 1 n−1维的超平面的参数. 之所以称该方法为线性模型,是因为该模型是 由所有特征的线性组合构成 的,基本形式为: 式子(1-2)表示所有样本值的矩阵与对应参数向量的乘积,属于矩阵乘法((Matrix multiplication)。 具体可以参考我的另一篇博客 【机器学习

R 对数变换 《回归分析与线性统计模型》page103

守給你的承諾、 提交于 2019-12-01 22:33:28
BG:在box-cox变换中,当λ = 0时即为对数变换。 当所分析变量的标准差相对于均值而言比较大时,这种变换特别有用。对数据作对数变换常常起到降低数据波动性和减少不对称性的作用。。这一变换也能有效消除异方差性 library(MASS) library(openxlsx) data= read.xlsx("data104.xlsx",sheet = 1) #导入数据 attach(data)    op<-par(mfrow=c(2,2),mar=0.4+c(4,4,1,1),oma=c(0,0,2,0)) #将四张图放在一起,调整边界。(以后也采用此行) plot(size,effort) #图4-4(a) plot(log(size),log(effort)) #图4-4(b) #绘制频率分布直方图 hist(effort) #图4-5(a) hist(size) #图4-5(b)    effor 和 size 这两个变量的频率分布图表明,它们并不满足正态分布。为了接近正态分布,必须变换这些变量(通过频率分布图判断变量是否满足正态分布) 1.先进行基本的线性回归,利用得到的模型进行box-cox变换 lm1=lm(effort~size+t14) #拟合线性回归模型 summary(lm1) #绘制残差图进行残差分析 plot(fitted(lm1),resid(lm1)

[机器学习笔记(二)] 用tensorflow来线性回归

不羁的心 提交于 2019-12-01 17:33:06
目录 TensorFlow线性回归 前置知识 Tensor Tensor运算 自动求导 线性回归 最后 TensorFlow线性回归 环境:TensorFlow2.0 前置知识 Tensor TensorFlow使用tensor(张量)来表示数据,名字挺高大上,其实可以理解成多维数组。 import tensorflow as tf # 每次使用TensorFlow的第一件事 A = tf.constant([1, 2, 3]) # constant是表示A是一个常量 B = tf.constant([[1,2],[3,4]]) 这里我们定义了两个张量,其中A是一维张量,B是二维张量。我们打印看看 >>> A # 形状是(3,)是一个3有个元素的向量 <tf.Tensor: id=0, shape=(3,), dtype=int32, numpy=array([1, 2, 3])> >>> B # 形状是(2, 2)一个2*2矩阵 <tf.Tensor: id=1, shape=(2, 2), dtype=int32, numpy= array([[1, 2], [3, 4]])> # 两者都是int32类型,可以通过numpy()方法来得到它们的值 Tensor运算 tf.add(tensor_A, tensor_B) # 矩阵元素相加 tf.subtract(tensor_A,