逻辑回归具有适合于解决复杂的非线性问题的特点,因此,在这里根据鲍鱼的多个生理特征,如性别、重量、直径等信息,采用逻辑回归的方法,对鲍鱼的年龄进行分类预测,以满足商家对鲍鱼的分类(点击文末“阅读原文”获取完整代码数据)。
相关视频
本文先介绍一个简单的逻辑回归,利用SAS软件对鲍鱼数据进行操作。
引言
鲍鱼是一种原始的海洋贝类,单壳软体动物,只有半面外壳,壳坚厚,扁而宽。是我国著名的海产八珍之一,味道清新,肉质鲜嫩,不仅美味佳肴,而且有治病功用,可治阴虚内热、废墟咳嗽等症。鲍鱼外形呈有螺旋形,结构有单个外壳、吸盘上足、触角等构成。鲍鱼还有极高的应该价值,、鲍鱼含有丰富的蛋白质,还有较多的钙、铁和维生素A等营养元素。
随着社会的进步,人们物质生活的日益丰富,人类对食物的要求越来越高。鲍鱼是中国传统的名贵食材,四大海味之首,鲍鱼的肉很好吃,自古以来人们都非常喜欢食用。但它的自然产量较小,远远不能满足需要,所以人们都想办法养殖它,目前在日本已对鲍鱼的养殖做了很多工作。我国在这方面也进行了一些工作,为鲍鱼养殖建立了一定的条件。
由于人工饲养的鲍鱼与野生的鲍鱼的个头有所不同,野生鲍鱼的个头明显大于人工饲养的,且鲍鱼种类繁多,且鲍鱼的肉质受年龄的影响较大。所以,我们需要一种简单快速的分类方法,通过对鲍鱼的性别、重量、直径、高度等生理特征分析,将鲍鱼以年龄分离开来,满足商家对鲍鱼的分类包装销售,以满足不同人群对不同种类鲍鱼的需求。
鲍鱼数据集与预处理
鲍鱼数据集(查看文末了解数据免费获取方式)是鲍鱼的各方面生理特征与它们年龄之间的一个关系。其中,我们可以由它的“年轮”得出其年龄。鲍鱼的属性信息如表1所示。
由于鲍鱼年龄从一岁到二十九岁,即目标向量元素过多,会由于两个相邻年龄里面属性相近,而易导致分类错误。所以,在数据预处理阶段,我们按鲍鱼的年龄段进行分类,即以四个年龄为一个年龄段(共七个年龄段)。鲍鱼的性别方面,幼鲍对应1,雄性对应2,雌性对应3。
基本理论
Logistic regression (逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。比如某用户购买某商品的可 能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等。(注意这里是:“可能性”,而非数学上的“概率”,logisitc回归的结果并非 数学定义中的概率值,不可以直接当做概率值来用。该结果往往用于和其他特征值加权求和,而非直接相乘) 。
逻辑回归其实仅为在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函数,逻辑回归成为了机器学习领域一颗耀眼的明星,更是计算广告学的核心。对于多元逻辑回归,可用如下公式似合分类,其中公式(4)的变换,将在逻辑回归模型参数估计时,化简公式带来很多益处,y={0,1}为分类结果。
算法以及步骤
Regression问题的常规步骤为:
- 寻找h函数(即hypothesis);
- 构造J函数(损失函数);
- 想办法使得J函数最小并求得回归参数(θ)
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:
Sigmoid 函数在有个很漂亮的“S”形,如下图所示(引自维基百科):
逻辑回归在识别鲍鱼年龄中的应用
我们现在用SAS自带的逻辑回归函数对鲍鱼的数据进行操作。鲍鱼数据70%作为训练集,15%作为验证集,15%作为测试集,然后进行训练。
将来自abalone.csv的数据加载到SAS中,并根据下表分配变量名称和格式。
Name | Data Type | Description |
Sex | Categorical | M, F, and I (infant) |
Length | Numeric (continuous) mm | Longest shell measurement |
Diameter | Numeric (continuous) mm | perpendicular to length |
Height | Numeric (continuous) mm | with meat in shell |
WT_Whole | Numeric (continuous) grams | whole abalone |
WT_Shuck | Numeric (continuous) grams | weight of meat |
WT_Vscra | Numeric (continuous) grams | gut weight (after bleeding) |
WT_Shell | Numeric (continuous) grams | after being dried |
Rings | Numeric (integer) | +1.5 gives the age in years |
读取数据
**data** abalone; infile "J:\abalone.csv" DSD delimiter=','
使用 PROC CORR 对各个变量的相关性进行探索。
**proc** **corr** data=abalone nomiss
这是鲍鱼尺寸和重量的一般描述性概述。很容易注意到,与雌性或雄性相比,幼体具有最小的长度、直径和高度。
点击标题查阅往期内容
数据分享|Python酒店评论文本分析:tfidf、贝叶斯、逻辑回归,支持向量机SVM、K最邻近KNN、随机森林、LDA主题模型
左右滑动查看更多
01
02
03
04
然后使用逻辑回归对数据进行分析,得到如下的结果:
**proc** **glm** data=abalone;
通过二元逻辑斯蒂回归,雌性被低估,而雄性被高估。
最后使用模型我们可以预测样本性别:
总结与分析
本次对鲍鱼年龄进行识别分类的实验中,由于鲍鱼年龄从1至29岁不等,所以造成分类的困难度增大。所以,在对数据进行训练之前,先把鲍鱼的年龄按年龄段分。虽然现在只有4个年龄段,但是,每个年龄段中相差较大的两个年龄之间它们的属性相差很大,所以造成分类的错误率增大,最终造成整体的正确率较低,而且不容易更正。
参考文献 (References)
[1] Jiawei Han, Micheline Kamber. 数据挖掘概念与技术. 北京: 机械工业出版社, 2007.3
[2] Pang-Ning Tan, Michael Steinbach, Vipin Kumar. Introduction to Data Mining. 北京:机械工业出版社, 2009.9