如何在机器学习中训练连续输出(回归)

时间:2015-11-15 15:50:03

标签: python machine-learning regression rbm dbn

我想训练回归模型(不是分类),其输出是连续数字。

假设我有输入变量X,其范围在-70到70之间。 我有输出变量Y,范围在-5到5.X有39个功能,Y有16个功能,每个有50,000个例子。然后我想用python中的深度信任网络(DBN)训练它们。

我在theano主页中使用了脚本,该脚本用MNIST数据(分类)描述了DBN。 http://deeplearning.net/tutorial/DBN.html

你能否告诉我为了应用上面解释的回归问题,我必须更改哪些具体的行?

例如,我必须改变......

  1. sigmoid函数为tanh函数。 :我听说tanh激活函数在回归中比sigmoid更好。正确?
  2. 而不是使用负对数似然,我必须使用最小二乘误差....?
  3. zscore输入和输出数据标准化?
  4. 如果您有任何想法解决这个问题,请告诉我... 大多数机器学习示例基于MNIST手数分类。如果你向我推荐一些不错的博客或主页,我会很高兴能获得与回归相关的有用信息。

    谢谢你提前。

1 个答案:

答案 0 :(得分:0)

@hyungwon yang: 

我还没有看到python代码,但我认为以下内容很有用:

sigmoid函数与tanh函数:没有必要,许多出版物使用sigmoid进行非线性回归。坦率地说,可以根据您拥有的数据类型进行选择。我使用sigmoid作为许多非线性模型,它对我有用。

最小二乘误差:您可以通过内置的Matlab函数回归执行此操作,而不是将其与如此多的参数混淆。

Normalisations:你可以做一个min-max规范化(参考Charu Agarwal的数据挖掘),我在Matlab中的实现如下:

%inputData: Is your N samples * of first feature, you have to iteratively do %this process for each and every feature.
function normOut = NormaliseAnyData (inputData)
denominator = (max(inputData) - min (inputData));
numerator = (inputData - min(inputData)); 
normOut = numerator/denominator;
end

希望它有所帮助。如果您有其他问题,请与我们联系。