本帖最后由 大顺粑粑 于 2016-11-11 14:36 编辑
探索机器学习在网络规划中的应用
背景: 大家先提出一个问题,从一段DT测试log来看,有一段弱覆盖区域,现在需要规划新方案给予解决,网格经理提出了2个方案,方案如下所示,那么A方案和B方案哪个方案更好呢? plan | power(dBm) | Longitude | Latitude | f | site_type | high | azimuth | Angle | cover | B | 55 | 118.914 | 30.15142 | 900 | OMNI | 30 | 0 | 0 | 平原 | A | 55 | 118.9041 | 30.15584 | 900 | SECTOR | 30 | 130 | 6 | 平原 | A | 55 | 118.9041 | 30.15584 | 900 | SECTOR | 30 | 250 | 10 | 平原 |
以往的情况下,网格经理只能根据经验去做大致定性判断,这样就不可避免的会出现判断错误,覆盖效果达不到预期。对于基站建设这样动辄几十万投入的项目来说,损失相当大。大家迫切需要一种能快速定量分析规划方案的方法。 在这,大家提出一种基于机器学习的网络规划评估方案,它解决的问题就是:定量的去评价这2个方案,给出2个方案的合理度,方便网格经理进行判断。 基本思路:
一个地方终端接收信号的强度,基本和如下因素相关,是这些因素糅合之后的结果:大家设置一个信号的函数: 信号优劣 =f(距离基站距离 ,基站功率 ,天馈方位角,天馈下倾角 , 基站高度 ,天馈增益 ,路径情况 ,频率 , 终端高度 , 其他因素)
基于机器学习的网络规划要解决的就是,通过历史DT测试数据来构造一个适应当地无线环境的数据模型,当大家需要预测新规划方案的覆盖效果时,只要构造对应的无线特征,即可预测该地区的大致信号覆盖情况。 实现方法:
大家还是以DT弱覆盖数据作为案例,进行说明。具体DT测试情况如下:
大家把这段DT测试的log截取出,然后在这段路上规划了2个方案,A方案和B方案,方案如下:这里大家特别添加了一组QUO方案,里面填写的是一组极端数据,这主要是用于计算原始状态DT的评估情况,至于为什么要这样设置,后面会提及。 plan | power(dBm) | Longitude | Latitude | f | site_type | high | azimuth | Angle | cover | QUO | 1 | 1 | 1 | 900 | OMNI | 1 | 1 | 1 | 平原 | B | 55 | 118.914 | 30.15142 | 900 | OMNI | 30 | 0 | 0 | 平原 | A | 55 | 118.9041 | 30.15584 | 900 | SECTOR | 30 | 130 | 6 | 平原 | A | 55 | 118.9041 | 30.15584 | 900 | SECTOR | 30 | 250 | 10 | 平原 |
接下来,大家就用机器学习的办法,来对这2个方案进行预测,判断哪个方案更优秀。 一、训练数据整理 构建训练无线模型时,大家需要用到历史DT数据,作为训练的数据。 大家使用DT测试数据作为训练数据,大约一共是124W行数据。测试LOG数据格式如下:
大家对这些数据做一个初步处理,把大量信息缺失和重复的数据进行了删除。大家以BCCH接收功率-80dBm作为信号好坏的分界点,大于-80dBm的大家设置标签1,小于-80dBm的,大家设置标签0。 这样的设置方法,不可避免会出现如下的一种情况:因为信号强度是有一定波动的,即使在同一经纬度,同一CI的情况下,有时BCCH接收功率大于-80dBm,有时小于-80dBm,这样就会出现这样的后果,即各项无线特征相同,但是他们的标签却有0和1两个结果,这样的数据进行训练,就会出现问题。为解决这个情况,大家做了如下操作:把同经纬度、同CI的数据,对BCCH接收功率做一个平均值计算,确保同一特征下标签只有1个。 然后大家根据DT数据中的CI字段和现网数据库进行匹配,然后根据DT点经纬度、基站经纬度、方位角信息,计算出距离和方位角差角。对覆盖类型和基站类型进行了独立热编码,最终大家的特征字段如下:
对以上特征的来源,大家这里做一个说明:
Speed特征:来源于原始DT测试LOG Power特征:来源于DT数据中的CI字段获得,即服务小区的发射功率(已根据天馈增益,馈线损耗做调整) f特征:来源于DT数据中的CI字段获得,即服务小区的频段 Angle特征:来源于DT数据中的CI字段获得,即服务小区的下倾角 dis特征:通过DT数据点经纬度和服务小区经纬度计算获得。 Azimuth_diff特征:通过DT数据点经纬度和服务小区经纬度计算出两者的夹角,然后和该小区方位角相减获得。 0~5特征:通过覆盖类型和基站类型,进行独立热编码获得 Bcch特征:即BCCH接收功率,大于-80dBm设置为1,反之设置为0
最终大家选择了终端移动速度、小区功率,室内还是室外,挂高,频率,下倾角,距离,覆盖类型8个特征。理论上特征越多越准确,预测结果越高,但是考虑到实际数据获得的难易程度,大家只采用了这8个特征。 二、训练算法的选择 对已经整理完成数据,大家进行训练,训练前大家并不知道哪种算法对无线模型训练的效果最好,因此大家把机器学习算法都测试一遍,查看训练结果。这里大家采用了KNN,LR,RF,DT,GBDT共5种算法进行比较,测试发现随机森林(RF)算法效果最佳,因此大家采用随机森林算法。
为获得更好的训练结果,大家采用暴力遍历的方法,来寻找最优的算法参数。同时考虑到电脑本身的配置和训练时间的问题,大家最终设置的参数如下: RandomForestClassifier(n_estimators=250,max_depth=60,min_samples_leaf=1,min_samples_split=3) 最终acc在94%左右。 训练完成后,为后期使用方便,不需要每次都进行训练,大家把训练模型进行了固化,后期能更快更方便的使用。 三、测试数据整理 训练数据和无线模型完成后,大家需要构造预测数据,来完成大家的规划方案评估。从格式上来说,预测数据和之前提到的训练数据是一模一样的。 回到清凉峰方案选择的问题上来,大家现在需要构造预测数据,然后导入到训练模型中进行训练。
构造预测数据和之前提到的构造训练数据虽然格式一样,但实际内容有略微差别,在构造训练数据时,各项特征大家是根据服务小区的信息来构造各种特征字段的,但是在构造预测数据时,大家需要用大家新规划的方案的信息,来构造终端移动速度、小区功率,室内还是室外,挂高,频率,下倾角,距离,覆盖类型这8个特征。 为方便说明,大家以这段log中a点做一个说明说明: a点在B方案的情况下,a点的小区功率,挂高,下倾角,距离,方位角夹角等特征,大家采用B方案来构造预测数据。大家把特征数据导入到模型中进行预测,即可预测出a点在B方案案下的信号好坏情况。 三、结果预测 大家把这段构造的LOG导入模型进行预测,把电平值大于-80dBm的点去除以总的测试点数,即可得出该方案下-80dBm电平以上的占比情况,大家以此作为该方案的覆盖合理度。下表就是方案的预测情况。实际发现A方案改善度为100%,B方案为86.98%。 plan | power(dBm) | Longitude | Latitude | f | site_type | high | azimuth | Angle | cover | coverage | QUO | 1 | 1 | 1 | 900 | OMNI | 1 | 1 | 1 | 平原 | 76.92% | B | 55 | 118.914 | 30.15142 | 900 | OMNI | 30 | 0 | 0 | 山区 | 86.98% | A | 55 | 118.9041 | 30.15584 | 900 | SECTOR | 30 | 130 | 6 | 平原 | 100.00% | A | 55 | 118.9041 | 30.15584 | 900 | SECTOR | 30 | 250 | 10 | 平原 | 100.00% |
现在大家可以说明为什么要设置一组QUO方案进行对比了,因为QUO方案里都是极端数据,在QUO方案下,对这段路线无任何影响,因此这实际上也是这段LOG的原始覆盖情况。 四、站址搬迁对比 站址搬迁对比和方案对比其实非常相近,方案规划是在原始数据上增加新方案的影响,并进行判断,站址搬迁判断的是一个方案在2种不同情况下的对比情况。以下例举的是在CI:17473替换成A或者B方案的情况下可能的覆盖率。 plan | power(dBm) | Longitude | Latitude | f | site_type | high | azimuth | Angle | cover | coverage | QUO | 1 | 1 | 1 | 900 | OMNI | 1 | 1 | 1 | 平原 | 76.92% | A | 55 | 118.914 | 30.15142 | 900 | OMNI | 30 | 0 | 0 | 山区 | 65.09% | B | 55 | 118.9041 | 30.15584 | 900 | SECTOR | 30 | 130 | 6 | 平原 | 93.49% | B | 55 | 118.9041 | 30.15584 | 900 | SECTOR | 30 | 250 | 10 | 平原 | 93.49% |
四、极端情况 有的时候会出现,A和B方案的改善率均为100%的情况,那么是不是A和B方案就无法分辨了呢?实际答案是否定的。大家可以把信号优劣的分界点设置的更高,比如说-70dBm,这样就能进行进一步区分了。 代码部署
编程采用了python语言,机器学习算法采用了sklearn库,数据处理采用了pandas库。具体结构如下:
dt_data文件夹:用于放置训练数据,大家放置了临安的广域DT数据,在其他地区使用时,建议放置其他地区的测试数据。 Test_data文件夹:预测数据 Training_template文件夹:用于放置已经固话的训练模型 GSM_template.csv:现网基站数据 Network_training_model.py:程序源代码 Planning_scheme:方案模版,用于填写方案 Result:方案预测结果 总结
目前已有的信号覆盖评估系统,采用的方法是:基于无线传播模型的仿真App,该类App属于专业类型App,价格昂贵,且在区县分企业很少有利用。采用的方法属于根据无线传播模型进行正向仿真。 基于机器学习的网络规划方案,创新的根据当地的DT数据进行无线模型重构,更适应当地的无线使用环境,且基于开源的代码库,完全免费,在无线特征尽可能准确的情况下,能进一步提高预测的准确性。 通过机器学习训练模型,大家解决了本文开头提出的问题,而且还能解决站址搬迁方案选择的问题。网络经理进行方案选择判断时,该模型提供了一个很好的依据,而且该依据是量化的,更加直观。在第一方案现场施工谈站受阻时,如何选择备选方案,大家也有了更好的依据。站址搬迁时,如何尽可能的确保该区域覆盖稳定性,大家可以提前进行预判,这样大家在站址搬迁时也更有底气。
PS T测试数据其实是一个非常具备价值的数据,但是传统网络优化规划都没有引起充分的重视,如果在训练模型、算法足够强大,应该能发挥更强大的能量,希翼能给大家一些参考价值,转载请注明出处。
|