这个问题可能与数学理论有关,也可能与数学理论无关,但我还是想在这里问一下。我有一个如下的TESTCase.m:
function ret=TESTCase(Input,k)
if k==1
if Input(2)~=1
Input(2)=1;
ret=(Input(1)-2).^2+5.*Input(2).^2;
end
else if k~=1
ret=(Input(1)-2).^2+(Input(2)-Input(1)).^2;
end
end
然后,尝试使用fminunc和fminsearch,如下所示:
TEST
我在MATLAB中有以下代码:
% Set options for fminunc
options = optimset('GradObj', 'on', 'MaxIter', 400);
% Run fminunc to obtain the optimal theta
% This function will return theta and the cost
[theta, cost] = ...
fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
我
在极大似然估计的上下文中使用函数fminunc时,我面临一个错误。我担心这是非常直截了当,但我的经验与MATLAB是非常有限的。
“法线”函数包含日志似然函数。我试图估计期望和性病。给定存储在变量x中的观测值的正态分布的偏差。
function f = normal(X, theta)
mean = theta(1);
sigma = theta(2);
z = (X-mean)./sigma;
f = -(sum(-log(sigma) -(1/2).*z.^2 ));
我基本上执行以下代码:
theta = [1,1]
f = @(theta)normal(x, theta)
[e
最近,我报名参加了课程机器学习,并且正在用matlab为虹膜数据集问题制作我自己的分类器。我正在为每个物种训练一个分类器(1-VS-all方法)。代码运行平稳,没有任何错误,但结果与我所期望的不太一样。这是我的matlab代码:
clear, clc
% loading the data
data = csvread('data.csv');
% extracting the features
X = data(:, (1:end-3));
X = [ones(size(X, 1), 1) X];
% computing the number of training ex
我试图在Matlab中编写一个ML算法。以下是我的不同职能:
西格莫迪:
function g = sigmoid(z)
g = zeros(size(z));
g = 1 ./ (1+exp(z));
costFunction.m
function [J, grad ] = costFunction(theta, X, y)
m = length(y); % number of training examples
z = -X * theta;
g = sigmoid(z);
J = 1/m * ((-y * log(g)') - ((1 - y) * log(1 - g)'
我在MATLAB中对文本数据进行了L2正则化的logistic回归。我的程序适用于小型数据集。对于较大的集合,它会无限地运行。
我已经看到了潜在的重复问题()。在这个问题中,初始θ的成本是NaN,控制台中打印了一个错误。对于我的实现,我得到了一个实际的值成本,即使将冗长的参数传递给fminunc(),也不会出现错误。因此,我相信这个问题未必是重复的。
我需要帮助把它放大到更大的集合。我目前正在处理的培训数据的大小大约为10k*12k (10k文本文件累计包含12k单词)。因此,我有m=10k培训示例和n=12k特性。
我的成本职能定义如下:
function [J gradient] = co
因此,我正在尝试对数据集执行k折交叉验证,但在获取octave以接受输入时遇到问题。首先,我尝试使用嵌套的平方损失函数来运行fminunc,但Octave只是说还不支持。我的下一次尝试有一个squaredLoss函数文件,它作用于一个全局数据集,我每次都会在main函数中更改该数据集,但它总是抛出该数据集未定义的消息。由于我不能将数据集作为参数传递给fminunc,我应该如何解决这个问题(或者我是否错误地使用了全局变量?)
for i = 1:NUMBER_OF_FOLDS
global funcdata;
funcdata = data{i};
[theta(i),
我正在尝试运行梯度下降,当使用完全相同的数据时,无法获得与内置fminunc的八度相同的结果。
我的代码是
%for 5000 iterations
for iter = 1:5000
%%Calculate the cost and the new gradient
[cost, grad] = costFunction(initial_theta, X, y);
%%Gradient = Old Gradient - (Learning Rate * New Gradient)
initial_theta = initial_theta - (alpha * grad);
end
我一直在使用MATLAB函数来解决我的优化问题。我想试试minFunc包:
在使用fminunc时,我定义了一个函数funObj.m,它给出了目标值和任意点'x‘的梯度。它还接受几个外部输入,例如,{a,b,c},它们是矩阵。因此,函数原型看起来如下:
function [objVal,G] = funObj(x,a,b,c)
我想在minFunc包中使用相同的设置。从这些例子中,我认为这应该是可行的:
options.Method='lbfgs';
f = @(x)funObj(x,a,b,c);
x = minFunc(f,x_init,options);
但是当
我试图在MATLAB中完成以下工作
调用循环- for i=1:1000,在循环内部,我使用fminunc优化函数。优化是在一个参数向量上进行的,其中一个参数出现在函数的矩阵中。现在看来,fminunc调用了一种算法,该算法反转矩阵,然后搜索最小值。所发生的情况是,当搜索一个使矩阵不可可逆的最小值时,当MATLAB试图反演矩阵时,它会产生一个误差,循环停止。有什么办法可以让我调整一下吗?或者更不理想的情况是,每当发生这种情况时,MATLAB都会忽略对i值的优化,并继续使用i+1。
我有一个混合的专家代码,它的工作与少量的参数。其内容如下:
global x_au;
global x_vi;
global x_alpha;
global y;
global parameter;
options = optimoptions(@fminunc,'GradObj', 'on', 'Algorithm','quasi-newton','MaxIter', 10000,'Display','iter-detailed'); % change number of ite