AI算法实现与云平台应用( 三 )


这里介绍一下逻辑回归的实现 。LR是一个监督模型,也就是必须要有训练样本 。LR也是一个线性模型,就是说你给的特征是有线性关系的,例如我们训练一个模型,可以根据年龄来预测收入 。我们通常认为年龄越高收入越高,其实并不是这样的,例如超过了60岁,年龄跟收入是成反比的,这里就不能只用年龄了作为特征 。它是高性能的,等一下会介绍,只需要做一个加法就可以了 。LR是高性能的,因为一次预测只需一次加法运算,这跟神经网络要做矩阵的乘法和加法是不一样的 。LR的可解析性强,它的每个权重都是人可以理解的,有一定的含义 。LR的扩拓展性强,很容易实现一个分布式的LR,支持亿万维的特征 。即使是也无法支持这么高维度的模型 。
图6 逻辑回归2
图6是一个例子 。逻辑回归需要的样本是用数字编码好的,我们原始的输入可能是字符串,男和女,或者是一个英文,这就需要特征抽取进行编码 。像年龄,刚才提到了,因为逻辑回归是一个线性的模型,因此并不会把年龄作为特征,这里简单做了一个分桶 。这里有一个隐藏的含义,假设年龄0到30,预测它的收入是大于50万,两者是线性相关的 。如果是成正比的话,这个权重就会大于0,年龄越大这个权重得到的越大,实际上并不是这样的,做机器学习里面有很对trick,比如说这个分桶不一定有效的,我们把它做成多分桶的,甚至每一岁做一个特征,这里可能就有80个特征 。这是一个简单的例子,如果我们可以收集到这样一些样本,把它进行0-1编码,我们就可以训练一个LR的模型 。实际上模型是什么?DNN的模型是一个矩阵,而LR的模型就是一维的数组,数组的长度跟特征的维度一样多的,每个特征都对应一个权重 。
图7 逻辑回归3
当我们来一个新的样本,知道他的性别男,年龄27岁 。怎么预测他的收入是不是大于50呢?逻辑回归的算法很简单了,数据维度跟特征维度是一样,乘以样本,把对应维度里面的值相加 。如果场景是二分类,经过激活函数得到一个值,大于1的我们就认为是1;如果它是一个回归的问题,就不需要激活函数了,得到的就是一个预测值 。

AI算法实现与云平台应用

文章插图
LR是很简单的,前面我们看到图象分类,的下棋都可以用这个简单的模型 。包括我们做的信用卡的反欺诈,可以把用户信息、消费记录,包括消费的时间地点进行编码 。更复杂的情况,我们把年龄和性别做一个组合,会生成新的特征,即男30到60岁,女30到60岁等 。我们可能会发现只有在特定的性别和年龄的组合上,权重才是更高的 。我们如果把原始特征这样编码,LR学不出这种非线性的变换,这个时候需要有更强大的特征工程能力,可以对这种特征做任意的组合,或者根据我们的业务经验生成更好的特征 。以前在凤巢的时候就是不断地做特征,不断地加,最后发现效果特别好的特征,最后准确率就提高了 。现在大家都说DNN可以自动调参,但在真实场景下这个过程是不可避免的 。即使用很复杂的模型,我们的特征不做分桶交叉,也很难得到很好的模型 。
如果是做图像处理,我们就在每一维里记录图像的像素值,然后把像素值最为一个特征 。如果做图象分类,肯定不会用逻辑回归,因为图象的特征,它并不是跟你的目标线性相关的,我们只能用更复杂的模型如CNN和DNN来表达这种能力 。
图8 逻辑回归3
怎么实现逻辑的回归?如果用实现就很简单,图8就是一个完整的实现逻辑回归模型,可以把图片加载进来进行多分类 。标出来的部分(第一个红框)定义了一些,这里面就是我们的所谓的模型,这里定义了一个矩阵,维度是784×10 。为什么784?因为我们用的数据集是手写的数据识别的数据集,大小是28×28,它的象素就有784个,它的模型也是784,因为它是10分类,它的模型其实就是784×10,把这个分类模型打印出来,得到的是一个矩阵,有784行,每一行有10列 。