非线性回归(Non-linear Regression)学习笔记

非线性回归(Non-linear Regression)

1.概率:
1.1定义概率Probability:对一件事情发生的可能性的衡量
1.2范围 0<=P<=1
1.3计算方法:
1.3.1根据个人置信
1.3.2根据历史数据
1.3.3根据模拟数据
1.4条件概率:(A发生的条件下B发生的概率)
在这里插入图片描述
逻辑回归(Logistic Regression)
x∈(-∞,+∞),y∈(0,1)
2.1举例,肿瘤良恶性:
在这里插入图片描述
画出线性回归线,计算h(x)值若大于0.5,则认为是Malignant(恶性).
特殊例子,出现一个偏离较大的数值:
在这里插入图片描述
h(x)>0.5(恶性),Malignant=1
再重新模拟后的线性方程就无法准确分类了

2.2基本模型
测试数据为
X ( x 0 , x 1 , x 2 . . . x n ) X(x_0, x_1, x_2...x_n) X(x0,x1,x2...xn)
要学习的参数为:
θ ( θ 0 , θ 1 , θ 2 , . . . θ n ) ( θ 可以是一个向量) θ(θ_0, θ_1, θ_2,... θ_n) (θ可以是一个向量) θ(θ0,θ1,θ2...θn)θ可以是一个向量)
在这里插入图片描述
向量表示:(θ^T 为一列排列的θ)
在这里插入图片描述
处理二值数据,引入Sigmoid函数时曲线平滑化:
在这里插入图片描述
在这里插入图片描述
预测函数:
在这里插入图片描述
θ为参数,X为自变量

用概率表示
正例(y=1):(对于给定的一组数据自变量和一组参数,y=1的概率)
在这里插入图片描述
反例(y=0):(对于给定的一组数据自变量和一组参数,y=0的概率)
在这里插入图片描述
2.3 Cost函数
线性回归:
在这里插入图片描述
在这里插入图片描述
y ( i ) y^{(i)} y(i)为实例的值) x ( i ) x^{(i)} x(i)为每一个实例的自变量,求出的 h θ ( x ( i ) ) h_θ(x^{(i)}) hθ(x(i))即为预测值y_hat
在这里插入图片描述
找到合适的θ_0,θ_1使_上式最小,求导数使其为0,即可求得

Logistic regression:
Cost函数:
(使用对数log的原因:对数是个增函数,很容易求出最大值和最小值,对原函数最大/最小化和对原函数它的对数最大化和最小化是一样的?可以使运算简单很多)
在这里插入图片描述
下方程由上面两个方程合成得到(分y=1和y=0)
目标: 找到合适的θ_0,θ_1使_上式J(θ)最小,求导数使其为0,即可求得
方法:数学上一般对其变量求偏导,是其偏导等于0

2.4解法:梯度下降(gradient decent)
一个计算机中非常重要的算法
梯度下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。可以用于求解非线性方程组。
梯度下降法的计算过程就是沿梯度下降的方向求解极小值。
在这里插入图片描述
在这里插入图片描述
求偏导(求出斜率)找到曲面的最低点
(以θ对J求导数,α为学习率可能会随时变更,)
更新法则(化简上式后):(i上标表示不同的实例)
在这里插入图片描述
同时对所有的θ进行更新
重复更新直到收敛(低于设置的预测值,一般为local minimum or global minimum)

非线性回归实例应用(Logistic Regression Application):

import numpy as np
import random


def gradient_descent(x, y, theta, alpha, m, iteration_times):
    """
    m denotes the number of examples here, not the number of features
    Parameters
    ----------------
    x: 实例
    y: 分类标签
    theta: 要学习的参数θ
    alpha: learning rate
    m: 更新法则公式中实例的个数,对应示例数组shape[0]
    iteration_times: 使用此方法循环训练更新的次数
    """
    for i in range(0, iteration_times):
        hypothesis = np.dot(x, theta)  # h(x) = x·θ,θ的shape已转换为能和x点乘,x无需转置,每次更新完后θ会发生变化
        loss = hypothesis - y  # hypothesis其实就是y_hat(估计值h(x)),这里loss就等于y_hat减去y(实际)
        # avg cost per example (the 2 in 2*m doesn't really matter here.
        # But to be consistent with the gradient, I include it)
        '''cost:对精确度的衡量,会随着gradient descent的次数减小'''
        cost = np.sum(loss ** 2) / (2 * m)  # 这里的cost函数与课文中提到的cost函数不一样,这里使用了一个简单的cost便于计算和展示
        print('Iteration:%d|cost:%f' % (i, cost))
        # avg gradient per example
        gradient = np.dot(loss.T, x) / m  # loss·x = (h(x)-y)·x,使用矩阵形式同时对所有x执行运算,loss要转置一下,theta要求平均值
        # update
        theta = theta - alpha * gradient  # 即更新法则的公式:θ=θ-α∑(h(x)-y)x
    return theta


# 产生测试拟合的数据
def gen_data(num_points, bias, variance):
    """
    Parameters
    ---------
    num_points:实例数
    bias:生成y时产生一个偏差值
    variance:方差
    """

    x = np.zeros(shape=(num_points, 2))
    y = np.zeros(shape=num_points)
    # basically a straight line
    for i in range(0, num_points):
        # bias feature
        x[i][0] = 1
        x[i][1] = i
        # target variable
        y[i] = (i + bias) + random.uniform(0, 1) * variance  # random.uniform(0,1)[0, 1)均匀分布,同random.random()产生0~1随机数
    return x, y


def main():
    # generate 100 points with a bias of 25 and 10 variance as a bit of noise
    x, y = gen_data(100, 25, 10)
    print(x)
    print(y)
    m, n = np.shape(x)  # x是二维数组,行数赋值给m,列数赋值为n
    a = np.shape(y)  # y是1维的数组,只会一个数值
    print(m, n)  # (100行,2列) 2维数组,100行2列
    print(a)  # (100,) 1维数组,100个数值
    iteration_times = 100000
    alpha = 0.0005  # 取0~1,比较好的算法会设置开始的alpha数值较大后期数值较小
    theta = np.ones(n)  # 初始化θ:[1. 1.] ,初始时x的值认为是h(x)的值
    theta = gradient_descent(x, y, theta, alpha, m, iteration_times)
    print(theta)  # 约为[30 1]

    # 得出的theta就可以用于对新实例的计算和预测
    # 回归算法和神经网络中都会用到此梯度下降的方法


if __name__ == '__main__':
    main()

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于基因组的贝叶斯线性和非线性回归模型预测是一种利用基因组数据进行预测的统计方法。这种方法的目标是根据个体的基因组信息来预测其特定性状或表型,如疾病易感性、身高、体重等。 在基因组预测模型中,贝叶斯线性回归是一种常用的方法。它基于贝叶斯统计学理论,通过将先验知识与观测数据相结合,给出后验分布,从而得到模型参数的估计值。贝叶斯线性回归模型通过寻找最可能的参数值,建立起基因组和表型之间的关系,并通过这种关系进行预测。 与贝叶斯线性回归模型相比,贝叶斯非线性回归模型则允许模型参数具有非线性关系。这种模型的优势在于能够更灵活地拟合基因组和表型之间的关系,从而提高预测的准确性。贝叶斯非线性回归模型通常使用非线性函数来描述基因组和表型之间的关系,例如多项式函数或指数函数等。 基于基因组的贝叶斯线性和非线性回归模型预测的关键步骤包括数据准备、模型选择和参数估计。首先,需要对基因组数据进行处理和标准化,以确保数据质量和一致性。然后,选择合适的模型结构和特征,以提高预测精度。最后,通过贝叶斯方法估计模型参数,得到预测结果。 基于基因组的贝叶斯线性和非线性回归模型预测在遗传学、生物信息学和医学研究等领域具有广泛的应用。它不仅可以帮助我们理解基因组与表型之间的关系,还可以用于基因组选择、疾病预测和个体化医学等任务,为人类健康和疾病研究提供重要支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值