当前位置:首页 » 操作系统 » 线性函数算法

线性函数算法

发布时间: 2024-01-26 13:51:14

❶ 解线性规划数学模型有哪些方法

模型建立:
从实际问题中建立数学模型一般有以下三个步骤;
1.根据影响所要达到目的的因素找到决策变量;
2.由决策变量和所在达到目的之间的函数关系确定目标函数;
3.由决策变量所受的限制条件确定决策变量所要满足的约束条件。
线性规划难题解法
所建立的数学模型具有以下特点:
1、每个模型都有若干个决策变量(x1,x2,x3……,xn),其中n为决策变量个数。决策变量的一组值表示一种方案,同时决策变量一般是非负的。
2、目标函数是决策变量的线性函数,根据具体问题可以是最大化或最小化,二者统称为最优化。
3、约束条件也是决策变量的线性函数。
当我们得到的数学模型的目标函数为线性函数,约束条件为线性等式或不等式时称此数学模型为线性规划模型。
例:
生产安排模型:某工厂要安排生产Ⅰ、Ⅱ两种产品,已知生产单位产品所需的设备台时及A、B两种原材料的消耗,如表所示,表中右边一列是每日设备能力及原材料供应的限量,该工厂生产一单位产品Ⅰ可获利2元,生产一单位产品Ⅱ可获利3元,问应如何安排生产,使其获利最多?
解:
1、确定决策变量:设x1、x2分别为产品Ⅰ、Ⅱ的生产数量;
2、明确目标函数:获利最大,即求2x1+3x2最大值;
3、所满足的约束条件:
设备限制:x1+2x2≤8
原材料A限制:4x1≤16
原材料B限制:4x2≤12
基本要求:x1,x2≥0
用max代替最大值,s.t.(subject to 的简写)代替约束条件,则该模型可记为:
max z=2x1+3x2
s.t. x1+2x2≤8
4x1≤16
4x2≤12
x1,x2≥0
解法
求解线性规划问题的基本方法是单纯形法,已有单纯形法的标准软件,可在电子计算机上求解约束条件和决策变量数达 10000个以上的线性规划问题。为了提高解题速度,又有改进单纯形法、对偶单纯形法、原始对偶方法、分解算法和各种多项式时间算法。对于只有两个变量的简单的线性规划问题,也可采用图解法求解。这种方法仅适用于只有两个变量的线性规划问题。它的特点是直观而易于理解,但实用价值不大。通过图解法求解可以理解线性规划的一些基本概念。

❷ 线性插值法计算公式是什么

线性插值法计算公式:Y=Y1+(Y2-Y1)×(X-X1)/(X2-X1)。其中Y2>Y1,X2>X>X1。线性插值是指插值函数为一次多项式的插值方式,其在插值节点上的插值误差为零。线性插值相比其他插值方式,如抛物线插值,具有简单、方便的特点。线性插值可以用来近似代替原函数,也可以用来计算得到查表过程中表中没有的数值。

线性插值使用的原因

目前,线性插值算法使用比较广泛。在很多场合我们都可以使用线性插值。其中,最具代表性的使用方法是变量之间的对应关系没有明确的对应关系,无法使用公式来描述两个变量之间的对应关系,在这种情况下使用线性插值是比较好的解决办法。可以在变量的变化区间上取若干个离散的点,以及对应的输出值,然后将对应关系分成若干段,当计算某个输入对应的输出时,可以进行分段线性插值。

❸ 什么是线性时间算法

计算公式:K(N)=AO(N)+B

线性时间
在计算复杂性理论,一个被称为线性时间或 Ο(n)时间的算法,表示此算法解题所需时间正比于输入资料的大小,通常以n表示。换句话说,执行时间与输入资料大小为线性比例。例如将一列数字加总的所需时间,正比于串行的长度。

❹ 线性模型-分类模型

线性模型也可用于分类问题。我们首先来看二分类。我们可以利用下面的公式预测:

y^=w[0]x[0]+w[1]x[1]+...+w[p]*x[p]+b>0

这个公式与线性回归的公式非常相似,但我们没有返回特征的加权求和,而是为预测设置了阈值(0)。如果函数值小于0,我们就预测类别-1,如果函数值大于0,我们就预测类别+1。对于所有用于分类的线性模型,这个预测规则都是通用的。同样,有很多不同的方法来找出系数(w)和截距(b)。
对于用于回归的线性模型,输出y^是特征的线性函数,是直线、平面或超平面(对于更高维的数据集)。对于用于分类的线性模型, 决策边界 是输入的线性函数。换句话说,(二元)线性分类器是利用直线、平面或超平面来分开两个类别的分类器。
学习线性模型有很多种算法。这些算法的区别在于以下两点:
1.系数和截距的特定组合对训练数据拟合好坏的度量方法;
2.是否使用正则化,以及使用哪种正则化方法。
不同的算法使用不同的方法来度量“对训练集拟合好坏”。由于数学上的技术原因,不可能调节w和b使得算法产生的误分类数量最少。对于我们的目的,以及对于许多有用而言,上面第一点(称为 损失函数 )的选择并不重要。
最常见的两种线性分类算法是 Logistic回归(logistic regression) 线性支持向量机(linear support vector machine,线性SVM)

Python version:3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)]
pandas version:0.23.4
matplotlib version:3.0.2
Numpy version:1.15.4
Scipy version:1.1.0
IPython version:7.2.0
scikit-learn version:0.20.1

对于LogisticRegression和LinearSVC,决定正则化强度的权衡参数叫作C。C值越大,对应的正则化越弱。换句话说,如果参数C值较大,那么LogisticRegression和LinearSVC将尽可能将训练集拟合到最好,而如果C值较小,那么模型更强调使系数向量(w)接近于0。
参数C的作用还有另一个有趣之处。较小的C值可以让算法尽量适应“大多数”数据点,而较大的C值强调每个数据点都分类正确的重要性。
mglearn.plots.plot_linear_svc_regularization()

Training set score:0.953
Test set score:0.958
C=1的默认值给出了相当好的性能,在训练集和测试集上都达到95%的精度。但由于训练集和测试集的性能非常接近,所以模型很可能是欠拟合的。我们尝试增大C来拟合一个更灵活的模型:

Training set score:0.972
Test set score:0.965
使用C=100可以得到更高的训练集精度,也得到了稍高的测试集精度,这也证实了我们的直觉,即更复杂的模型应该性能更好。

Training set score:0.934
Test set score:0.930
最后,看一下正则化参数C取三个不同的值模型学到的系数:

LogisticRegression模型默认应用L2正则化。更强的正则化使的系数更趋向于0,但系数永远不会正好等于0。进一步观察图像,还可以第3个系数那里发现有趣之处,这个系数是“平均周长”(mean perimeter)。C=100和C=1时这个系数为正,其绝对值比C=1时还要大。在解释这样的模型时,系数可以告诉我们某个特征与哪个类别有关。例如,人们可能会认为高“纹理错误”(texture error)特征与“恶性”样本有关。但“平均周长”系数的正负号发生变化,说明较大的“平均周长”可以被当作“良性”的指标或“恶性”的指标,具体取决于我们考虑的是哪个模型。这也说明,对线性模型系数的解释应该始终持保留态度。
如果想要一个可解释性更强的模型,使用L1正则化可能更好,因为它约束模型只使用少数几个特征:

Training accuracy of l1 logreg with C=0.001:0.91
Test accuracy of l1 logreg with C=0.001:0.92
Training accuracy of l1 logreg with C=1.000:0.96
Test accuracy of l1 logreg with C=1.000:0.96
Training accuracy of l1 logreg with C=100.000:0.99
Test accuracy of l1 logreg with C=100.000:0.98

将二分类算法推广到多分类算法的一种常见方法是“一对多余”(one-vs.-rest)方法。在“一对多余”方法中,对每个类别都学习一个二分类模型,将这个类别与所有其他类别尽量分开,这样就生成了与类别格式一样多的二分类偶像。在测试点上运行所有二分类器来进行预测。在对应类别上分数最高的分类器“胜出”,将这个类别标签返回作为预测结果。
每个类别都对应一个二类分类器,这样每个类别都有一个系数(w)向量与一个截距(b)。
我们将“一对多余”方法应用在一个简单的三分类数据集上。我们用到了一个二维数据集,每个类别的数据都是从一个高斯分布中采样得出的:

在上面的数据集上训练一个LinearSVC分类器:

Coefficient shape: (3, 2)
Intercept shape: (3,)
我们看到,coef_的形状是(3,2),说明coef_每行包含三个类别之一的系数向量,每列包含某个特征(这个数据集有2个特征)对应的系数值。现在intercetp_是一维数组,保存每个类别的截距,我们将这3个二分类器给出的直线可视化:

你可以看到,训练集中所有属于类别0的点都在类别0对应的直线上方,这说明它们位于这个二分类器属于“类别0”的那一侧。属于类别0的点位于与类别2对应的直线上方,这说明它们被类别2的二分类器划为“其余”。属于类别0的点位于与类别1对应的直线左侧,这说明类别1的二元分类器将它们划为“其余”。因此,这一区域的所有点都会被最终分类器划为类别0(类别0的分类器的分类置信方程的结果大于0,其他两个类别对应的结果小于0)。
但图像中间的三角形区域属于哪一个类别呢,3个分类器都将这一区域内的点划为“其余”。这里的点应该应该划归到哪一个类别呢?答案是分类方程结果最大的那个类别,即最接近的那条线对应的类别。

线性模型的主要参数是正则化参数,在回归模型中叫作alpha,在LinearSVC和LogisticRegression中叫作C。alpha值较大或C值较小,说明模型比较简单。特别是对于回归模型而言,调节这些参数非常重要。通常在对数尺度上对C和alpha进行搜索。你还需要确定的是用L1正则化还是L2正则化。如果你假定只有几个特征是真正重要的,那么你应该用的是L1正则化,否则默认使用L2正则化。如果模型的可解释性很重要的话,使用L1也会有帮助。由于L1只用到几个特征,所以更容易解释哪些特征对模型时重要的,以及这些特征的作用。
线性模型的训练速度非常快,预测速度也很快。这种模型可以推广到非常大的数据集,对稀疏数据也很有效。如果你的数据包含数十万甚至上百万个样本,你可能需要研究使用LogisticRegression和Ridge模型的solver='sag'选项,在处理大型数据时,这一选项比默认值要更快。其他选项还有SGDClassifier类和SGDRegressor类,它们对线性模型实现了可扩展性更强的版本。
线性模型的另一个优点在于,利用我们之前见过的用于回归和分类的公式,理解如何进行预测是相对比较容易的。不幸的是,往往并不完全清楚系数为什么是这样的。如果你的数据集中包含高度相关的特征,这一问题尤为突出。在这种情况下,可能很难对系数做出解释。
如果特征数量大于样本数量,线性模型的表现通常都很好。它也常用于非常大的数据集,只是尤为训练其他模型并不可行。但在更低维的空间中,其他模型的泛化性能可能更好。

热点内容
编程主机电脑 发布:2024-11-29 00:43:51 浏览:983
oc访问成员变量吗 发布:2024-11-29 00:14:59 浏览:517
七牛云服务器生成缩略图 发布:2024-11-29 00:12:36 浏览:272
如何重设华为账号密码 发布:2024-11-29 00:03:33 浏览:813
安卓听小说下载到哪个文件夹 发布:2024-11-29 00:03:01 浏览:932
闲鱼挂脚本 发布:2024-11-29 00:01:27 浏览:630
ae加快缓存 发布:2024-11-28 23:50:34 浏览:342
java的版本号 发布:2024-11-28 23:48:18 浏览:100
sql存储过程区别 发布:2024-11-28 23:35:37 浏览:919
ms计算机需要什么配置 发布:2024-11-28 23:34:21 浏览:975