system: [SYSTEM]

user: 3. 模型建立 为了消除原始数据数量级和量纲的差异，以及部分算法的条件所限，我们先前先对数据进行了标准化处理，利用R语言中的scale()函数进行标准化。 3.1. 因子分析 因子分析(Factor Analysis)是对相关系数矩阵内部结构的依赖性的研究，它将多个变量浓缩为几个不互相干扰的主要因素，从而来表现出原始数据与因子之间的相关关系。 模型的形式为： X i = a 1 F a 1 + a 2 F a 2 + ⋯ + a p F a p + U i 其中，是第i个可观测变量( i = 1 ⋯ k )，是公共因子( j = 1 ⋯ p )，并且当 p < k 时。是变量独自拥有的部分(无法被公共因子解释)。可以被看作是每个因子对复合可观测变量的贡献。 以下我们使用R语言对预处理数据执行因子分析，利用psych包对18个自变量进行因子分析，观察各因子的累计贡献率，提取出适当的因子数，再通过正交旋转变换得到相应的旋转成份矩阵并结合各因子所含主要自变量进行命名，最后就是建议相应的评价体系，并给49个城市打分、给出排名，根据结果给出相应的评价与建议。 3.1.1. 判断需提取的公共因子数 首先利用psych包中的fa.parallel()来判断需提取的公共因子数，从表4所示，从中可知前3个因子已经提取出了原始数据的76.48%的信息，并且特征值差异大，解释能力强。综合以上提取前三个因子作为主要因素，然后进行因子旋转。 Table 4 The cumulative contribution rate of each facto 因子 特征值 方差贡献率% 累计贡献率% 1 6.925 38.472 38.472 2 4.661 25.892 64.364 3 2.181 12.115 76.48 表4. 各因子的累积贡献率 3.1.2. 因子旋转 三个主要因子与原始数据之间的相关性由因子载荷矩阵反映，由于旋转前各因子的信息结构不太明确，各个因子的解释能力不够强。于是我们进行了方差极大的正交旋转变换，利用R语言中的fa( )函数，并利用正交旋转来旋转三个因子，以获得该相应的旋转成份矩阵，具体见表5。 从表5中可以得知，含阴影的数据是各个因子中影响因素较大的指标系数。我们可以看出：第一个公因子对所有初始变量累积方差的贡献率达到38.472%，其中X3 (财政预算内收入)、X4 (社会消费品零售总额)、X7 (金融机构年末存款余额)、X10 (电话普及率)、X11 (互联网用户数)和X18 (人均财政教育费用支出)这6个指标上具有很大的负荷值，所以我们也可以得知这6个指标对因子一有很大的影响，结合实际情况以及变量的观察，我们发现这6个指标主要与社会经济、信息化普及程度有关，于是我们将因子一定义为：综合经济和信息化程度因子。 Table 5 The cumulative contribution rate of each facto 指标 Fa1 Fa2 Fa3 指标 Fa1 Fa2 Fa3 X1 0.289 0.321 0.649 X9 0.504 0.206 0.26 X2 - −0.132 0.893 X10 0.916 0.252 - X3 0.925 0.152 0.125 X11 0.826 - 0.176 X4 0.957 - - X12 −0.153 0.827 0.178 X5 0.133 0.152 0.89 X13 0.221 0.737 0.203 X6 0.411 0.823 0.145 X14 0.213 0.875 - X7 0.909 0.224 X15 0.149 0.778 −0.113 X8 - 0.767 0.112 X16 0.726 0.506 0.103 表5. 各因子的累积贡献率 第二个公共因子对所有初始变量的累计方差贡献率达到了25.892%，其中在X6 (城乡居民人均储蓄年末余额)、X8 (居民人均生活用水量)、X12 (人均城市道路面积)和X14 (万人拥有医生数)四个指标中具有较大的负荷值，这4个指标主要与城市环境、基础设施以及医疗服务有相应的关系，于是我们将因子二定义为：城市环境与医疗服务水平因子。 第三个公共因子对所有初始变量的累计方差贡献率达到了12.115%，其中在X2 (GDP增长率)与X5 (第二、第三产业占GDP比重)两个指标中具有较大的负荷值，这2个指标主要与城市经济有相应的关系，于是我们将因子三定义为：经济增长效益因子。 3.1.3. 因子综合得分以及评价 利用fa.diagram ( )获取正交图并通过fa.varimax$weights得到相应的因子得分，我们可以得到每个因子的表达式： F a 1 = 0.289 X 1 + 0.925 X 3 + 0.957 X 4 + 0.133 X 5 + 0.411 X 6 + 0.909 X 7 + 0.504 X 9                 + 0.916 X 10 + 0.826 X 11 − 0.153 X 12 + 0.221 X 13 + 0.213 X 14 + 0.149 X 15                 + 0.726 X 16 + 0.726 X 17 + 0.945 X 18 F a 2 = 0.321 X 1 − 0.132 X 2 + 0.152 X 3 + 0.152 X 5 + 0.823 X 6 + 0.224 X 7 + 0.767 X 8                 + 0.206 X 9 + 0.252 X 10 + 0.827 X 12 + 0.737 X 13 + 0.875 X 14 + 0.778 X 15                 + 0.506 X 16 + 0.506 X 17 F a 3 = 0.649 X 1 + 0.893 X 2 + 0.125 X 3 + 0.89 X 5 + 0.145 X 6 + 0.112 X 8 + 0.26 X 9                 + 0.176 X 11 + 0.178 X 12 + 0.203 X 13 − 0.113 X 15 + 0.103 X 16 + 0.103 X 17                 + 0.126 X 18 在此基础上，我们使用每个因子的方差贡献率与三个主要因子的总方差贡献率的比例作为每个因子的系数，并进行加权求和，我们可以可知因子综合得分的计算公式为： F a = 0.385 F a 1 + 0.259 F a 2 + 0.121 F a 3 0.765 各城市的主因子得分以及因子综合得分计算结果如表6所示。 Table 6 Factor score and comprehensive ranking of comprehensive competitiveness of each cit 城市 Fa1 Fa2 Fa3 因子综合得分 综合排名 城市 Fa1 Fa2 Fa3 因子综合得分 综合排名 北京市 3.32 0.48 −0.14 1.386 3 东莞 −0.89 3.75 0.11 0.642 5 上海市 3.92 0 0.05 1.515 1 昆明 −0.61 0.23 −0.26 −0.207 27 广州市 1.5 1.49 0.42 1.014 4 太原 −0.86 0.7 −0.13 −0.166 24 深圳市 1.41 2.94 1.3 1.462 2 南昌 −0.58 −0.53 0.4 −0.312 35 成都 0.94 −0.18 −0.19 0.292 9 南宁 −0.41 −0.17 −1.12 −0.337 41 杭州 0.38 0.24 0.58 0.279 10 贵阳 −0.83 0.04 0.34 −0.268 32 武汉 0.38 0.06 0.24 0.191 12 海口 −1.11 0.85 −0.33 −0.247 29 天津 0.8 −0.28 0.79 0.331 8 长春 −0.5 −0.41 −0.2 −0.323 37 南京 0.49 0.61 0.55 0.413 6 泉州 −0.2 −1.12 0.25 −0.337 40 重庆 1.95 −1.53 0.14 0.371 7 洛阳 −0.54 −0.92 −0.1 −0.458 49 西安 −0.01 −0.18 0.12 −0.036 20 常州 −0.6 −0.03 0.72 −0.152 23 长沙 −0.28 −0.04 0.55 −0.052 22 珠海 −1.51 1.83 0.95 0.008 15 青岛 0.16 −0.39 0.31 −0.002 16 金华 −0.49 −0.66 −0.03 −0.363 42 沈阳 0.36 0.71 −5.69 −0.366 44 烟台 −0.37 −0.72 0.05 −0.323 36 大连 −0.12 0 −1.86 −0.271 33 惠州 −0.69 −0.44 0.04 −0.375 46 厦门 −0.76 0.93 0.61 0.022 14 徐州 −0.15 −1.09 −0.2 −0.364 43 苏州 0.49 0.04 0.19 0.222 11 嘉兴 −0.49 −0.5 −0.05 −0.324 38 宁波 0.07 −0.34 0.48 −0.003 17 潍坊 −0.25 −1 −0.39 −0.402 48 无锡 −0.21 0.03 0.46 −0.017 18 南通 −0.24 −0.85 0.5 −0.252 31 福州 −0.13 −0.77 0.5 −0.189 26 扬州 −0.6 −0.87 0.59 −0.385 47 合肥 −0.42 −0.54 0.75 −0.211 28 汕头 −0.34 −1.09 0.36 −0.370 45 郑州 −0.02 −0.16 0.19 −0.026 19 哈尔滨 −0.2 −0.56 −0.87 −0.327 39 温州 −0.15 −0.93 0.41 −0.249 30 乌鲁木齐 −0.8 1.09 −1.18 −0.168 25 佛山 −0.43 0.94 0.04 0.083 13 石家庄 −0.09 −0.82 −0.48 −0.305 34 济南 −0.28 0.14 0.21 −0.046 21 表6. 各城市综合竞争力的因子得分及综合排名 由表6可知，上海综合排名是49个城市中的第一名，其次是深圳市、广州市与北京市。广州是的3个因子得分较为均匀，比较适合任命生活与发展，而深圳市则是在经济方面得分较高，是我国经济不断增长的驱动力与助推器。相比而言，成都的综合经济和信息化程度因子得分较大，而其余两因子得分不高，而杭州市则是在因子三(经济增长效益因子)得分出众，作为浙江省的省会，确实是有自身城市的优越性和实力。其他城市在此就不做逐一分析，总之，通过因子分析我们可以建立相关的城市评价体系。接下来，在此基础上，我们利用各主因子得分作为变量数据，通过四种分类算法对此城市评价指标进行评估，来寻找最优分类方法以及对城市竞争力影响较大的因素。 3.2. 分类方法 通过因子分析，我们已经得出了相应的评价体系，并且得出了各城市的总得分与总排名，也对部分城市进行了分析。在此基础上，利用因子得分数据为我国的49个城市进行分类。 在进行每种分类算法的研究之前，我们首先将数据划分为训练集与测试集。其中，训练集占比3/4，测试集占比1/4。主要目的是为了防止模型出现过拟合情况，使得模型泛化性更强，利用训练集进行模型训练，利用测试集进行验证。 3.2.1. K-中心聚类 1) 基本原理 聚类分析：根据事物的某个特征把数据对象划分成多个子集的过程，每个子集都是一个簇，并且使簇的对象彼此相近，但与其他簇中的对象不相近 [ 8 ] 。 相比K-均值算法，K-中心点算法对异常值不敏感，它并不采用若干类中对象的平均值作为簇中心，而选用实际对象来代表所在的簇，以此为簇中心。 我们利用个城市进行聚类，通过训练集中36个城市进行聚类，并用测试集中的13个城市进行验证，与2016年官方排名进行比较，计算其准确率。 2) 实际应用 用R软件对各城市二级指标数据进行K-中心聚类。我们得到以下结果表7和表8。 Table 7 Clustering result 聚类结果 1 北京市 上海市 广州市 深圳市 成都 杭州 天津 南京 西安 长沙 大连 苏州 宁波 无锡 2 武汉 重庆 青岛 沈阳 厦门 东莞 昆明 太原 海口 珠海 乌鲁木齐 3 福州 合肥 郑州 温州 佛山 济南 南昌 南宁 贵阳 长春 泉州 洛阳 常州 金华 烟台 惠州 徐州 嘉兴 潍坊 南通 扬州 汕头 哈尔滨 石家庄 表7. 聚类结果 Table 8 Performance results of K-center clustering mode 测试集 官网数据 测试集中分类 A B C 合计 官网分类 A 1 0 0 1 B 0 1 3 4 C 0 1 7 8 合计 1 2 10 13 表8. K-中心聚类模型性能结果 由上两个表我们可以看出，用K-中心聚类分出来的城市类别，导致了部分城市与已有的城市分类数据相差较大，准确率不是很高，有16个城市分类错误，其中分类后属于一线城市的数量竟然多达14个，有10个城市分错了类。其中，在测试集中的13个城市内，有4个城市分类错误，该算法准确率仅有69.23%。 3.2.2. 决策树分类 1) 基本原理 决策树(Decision Tree)是一种预测模型，它可以用来做回归也可以做分类，它是一种类似于流程图的树结构，我们可以将它分为三个部分：决策节点，分支和叶节点。决策节点表示对属性上的测试，属性上的不同测试结果代表为分支；分支表示为某个决策节点的不同取值，每个叶节点代表一种可能的分类结果 [ 9 ] 。 本文主要利用利用C4.5算法(从候选划分属性中找出信息增益高于平均水平的属性，再从中选择增益率最高的属性)，对训练集中36个城市进行训练，并画出其决策树，然后再用测试集进行验证。 2) 实际应用 利用R软件中RWeka包的J48( )函数，建立决策树模型。再通过加载partykit、grid包，我们得到以下的决策树模型，见图1。 由图1可以看出，此时的分类规则是：如果Fa1 (综合经济和信息化程度)小于等于−0.02时，则属于二线城市，其中有24个城市属于此范畴；当Fa1大于−0.02且Fa1小于等于0.94时，属于新一线城市，有8个城市在此范畴内；当Fa1大于0.94时，此范畴属于一线城市，并有4个城市落入其中。 图1. 基于C4.5算法的训练决策树 Table 9 Decision tree model performance result 测试集 官网数据 测试集中分类 A B C 合计 官网分类 A 1 0 0 1 B 0 3 1 4 C 0 1 7 8 合计 1 4 8 13 表9. 决策树模型性能结果 我们可以从表9看出Fa1对城市等级分类有重大影响，即影响城市等级分类的影响因素是综合经济和信息化程度，而Fa2、Fa3与城市等级分类并没有太大的影响。利用测试集数据，发现13个城市中方只有2个城市分类错误，我们可以得知分类准确率为84.62%。可知：该模型的一线城市、二线城市以及三线城市的分类准确率较高，并且影响城市等级分类的主要因素为Fa1中系数较大的指标。说明用决策树对城市进行分类是可行的，并且分类错误率较低。 3.2.3. BP神经网络 1) 基本原理 BP神经网络是一种根据误差的反向传播，对多层前馈网络进行训练，该算法称为BP算法，主要思想是梯度下降法，利用梯度搜寻技术，为了最小化网络的实际输出量和预期输出之间的误差均方误差 [ 10 ] 。 本文主要利用BP神经网络进行分类处理，并对测试集中的13个城市进行分类，计算准确率。 计算过程为：① 网络状态初始化；② 前向计算过程。 2) 实际应用 用R软件对数据建立一个包括4个隐藏层节点的神经网络模型，本次共进行了4634次迭代，迭代结束时损失函数为0.513，权值的最大调整量为0.009，再对神经网络进行可视化，可接着得到图2。 图2. BP神经网络 接着对模型进行性能预测评估，通过R软件，发现只有两个城市分类错误，见表10，得到混淆矩阵精度为84.62%，Kappa为0.726，总的看来该模型性能还是比较高的；再从城市分类的灵敏度看，除了一线城市和新一线城市的灵敏度较低外，二线城市的灵敏度还是比较高的，而一线城市和新一线城市的灵敏度较低，可能与原始数据中，这两类的城市数据较少有关，基于此认为总体模型性能还是挺好的。 Table 1 0 Performance results of BP neural network mode 测试集 官网数据 测试集中分类 A B C 合计 官网分类 A 1 0 0 1 B 0 3 1 4 C 0 1 7 8 合计 1 4 8 13 表10. BP神经网络模型性能结果 3.2.4. KNN算法 1) 基本原理 K最近邻(KNN)分类算法，是最简单的机器学习算法之一，虽然它的想法很简单，但是该方法功能及其强大。K最近邻方法主要思想是：将未分类的数据归入到与他们最相似的一类之中，其中主要利用相应的距离公式计算出该对象与各类的距离 [ 11 ] 。 2) 实际应用 我们利用R语言class包中的knn( )函数，通过训练集进行训练，测试集进行验证的方式，得到混淆矩阵如表11所示。 Table 1 1 KNN model performance result 测试集 官网数据 测试集中分类 A B C 合计 官网分类 A 1 0 0 1 B 0 3 1 4 C 0 2 6 8 合计 1 5 7 13 表11. KNN模型性能结果 计算得表11，13个测试城市中有3个城市分类错误，该算法的准确率为76.92%，准确率较高，说明该算法用于城市等级分类还是可行。从图中发现，测试集中的13个城市中，有一个一线城市错分为了新一线城市，两个二线城市错分为了新一线城市，其他城市分类正确，总体来看该模型性能还是较好的。 3.2.5. 加权KNN算法 1) 基本原理 核函数加权最近邻(KKNN)分类算法，是KNN算法的一种扩展，主要思想是：通过给每个点的距离加入一个权重，是的距离较近的点可以得到更大的权重，而距离较远的点则得到较小的权重。 2) 实际应用 我们利用R语言kknn包中的kknn( )函数，通过训练集进行训练，测试集进行验证的方式，得到混淆矩阵如表12所示。 计算得知，该算法的准确率达为76.92%，与KNN算法准确率相同，从理论来看，该算法会比KNN更精确，但是由于数据量较少等原因，在此数据中并未能体现出其优越性。 Table 1 2 KKNN model performance result 测试集 官网数据 测试集中分类 A B C 合计 官网分类 A 1 0 0 1 B 0 3 1 4 C 0 2 6 8 合计 1 5 7 13 表12. KKNN模型性能结果