E N D
Data mining Project 吕飞、曲浥尘 、耿乾坤
题目 • This can be a brand new project or a continuation of last year’s Course Look up and Selection of Course Registration System. This project will generate reports from the database, do data mining and analysis, and provide useful information for both students and faculty based on the school’s requirements.
题目 • Some examples: • Generating students’ registration and course statistics, showing popularity of courses, etc. • Analyzing students/candidates background information to see from which geo-area and family background, SJTU got the most students. SJTU can use this kind of information to do targeted promotion of their school. The students’ HR data can be real or simulated.
需求1 • 1、推测学生感兴趣的课程-------依据统计数据,对课程A感兴趣的同学也很可能对课程B感兴趣。 • 2、学生分班、依据学生的生源地区、兴趣爱好等进行分班。
需求2 • 3、由历史数据,预测今后几年每年选某一门课程的人数,为学校配备教师、教室等资源提供参考;类似的,可预测每年每个学院有招多少新生 • 4、学生潜力分类,依据学生的各科成绩,预测学生的出路---考研、保研、出国,或者工作,即可对相关人群提供相关指导,也可依据相关人群数目大小,制定各项活动。
数据挖掘模型 • association rule • 依据已选课程,列出可能感兴趣的课程 ----吕飞 • Classification • 学生潜力分类 ----曲浥尘 • time series forecasting • 预测选课人数,学院及学校新生人数 ----耿乾坤 • clustering • 依据生源地、兴趣爱好对学生分班
association rule (1) • 原理: • Microsoft 关联算法遍历数据集以查找同时出现在某个事例中的项。然后,该算法按照由 MINIMUM_SUPPORT参数指定的事例数,将出现次数最少的关联项分组为项集。例如,项集可以为“Mountain 200=Existing, Sport 100=Existing”,并且支持的数目可以为 710,那么该算法将根据项集生成规则。可以使用这些规则根据是否存在该算法标识为重要项的其他特定项,预测数据库中的某项是否存在。例如,某规则可以为“if Touring 1000=existing and Road bottle cage=existing, then Water bottle=existing”,并且其概率可能为 0.812。在此例中,该算法发现由于购物篮中存在 Touring 1000 轮胎和水壶套,因此预测购物篮中也可能存在水壶。
association rule (2) • 生成数据的算法/思路 • 在无法得到真实数据的情况下,必须自己模拟真实数据。但是由于各学院学生需要修读的课程各不相同,种类繁多,而且大部分课程对于一届学生的修读是有学期限定的(比如数学分析就,要求大一就要修读,因而要想做到模拟的真实性,就必须对所有的课程都要十分了解(比如开课院系,开课学期,哪些院系学生需要修读,哪届学生需要修读等等),由于时间的限制,做到模拟的真实性基本没有可能。因而我这样考虑:一般情况下,学生选的课除了一些必修的基础课程(比如数学,物理,英语之类)基本都是自己学院开设的课程,那么我在随机生成数据的时候就限定一门课程由开这门课的院系的学生选择。对于一些大课和公共课,由于很多院系的学生都需要选择,那么我就在所有学生中进行随机选择。
association rule (3) • 创建挖掘模型步骤 • 添加带有嵌套表的数据源视图 添加数据源视图 建立多对一的关系 • 创建关联结构和模型 • 修改和处理关联模型 调整 Association 模型的参数 处理挖掘结构和所有模型 • 浏览关联模型 • 预测关联
association rule (4) • 挖掘结果示例图:
association rule (4) • 挖掘结果示例图:
association rule (5) • 获取结果的DMX语言: • SELECT • PredictAssociation([Association].[v Student Course],5) • From • [Association] • NATURAL PREDICTION JOIN • (SELECT (SELECT 'CV340' AS [Course ID] • UNION SELECT 'ME001' AS [Course ID]) AS [v Student Course]) AS t
Classification (1) • 原理: • 采用Microsoft 决策树算法通过在树中创建一系列拆分来生成数据挖掘模型。这些拆分以“节点”来表示。每当发现输入列与可预测列密切相关时,该算法便会向该模型中添加一个节点。该算法确定拆分的方式不同,主要取决于它预测的是连续列还是离散列。
Classification (2) • 生成数据的算法/思路
Classification (3) • 创建挖掘模型步骤 • 添加数据源视图 • 创建关联结构和模型 • 修改和处理关联模型 调整 决策树 模型的参数 处理挖掘结构和所有模型 • 浏览关联模型 • 预测关联
Classification (4) • 挖掘结果示例图:Estimate
Classification (5) 挖掘结果示例图:Job
Classification (6) 挖掘结果示例图:Salary
Classification (7) • 获取结果及其DMX语言:
Time Series forecasting (1) • 原理: • Microsoft 时序算法默认情况下,结合算法ARTXP与ARIMA,为数目可变的预测产生最佳预测 • ARTXP 算法针对预测序列中的下一个可能值进行了优化。 • ARIMA 算法用于提高长期预测的准确性。
Time Series forecasting (2) • 原理: • 默认情况下,Analysis Services 结合使用这两个算法,并且它们的权重相等。 • 在 SQL Server 2008 Enterprise 中,可以通过选择 MIXED 选项并设置参数来自定义结果混合,该参数针对短期预测或长期预测为结果加权。
Time Series forecasting (3) • 生成数据的算法/思路 • 目标:预测新生人数、选课人数。 • 数据:每年每学院学生人数、每门课选课人数。 • 过程:以5年为一阶段,依据个人对各学院的了解,手动确定每个学院在这一阶段入学人数增加或减少,共有15年 • 过程:基于对学校课程的了解,设置60%的课程每年选课人数基本不变,39%+的课程人数有增加或减少,1/1000的课程人数有增加,并且增加了上课教师。
Time Series forecasting (4) • 创建挖掘模型步骤 • 创建视图: • vCourseRegistrationStatistics, vSchoolStudentNumber,vTotalStudentStatisticsvTotalCourseRegistrationStatistics • 创建数据源<ConnectionString>Provider=SQLNCLI10.1;Data Source=GENGQIANKUN-PC;Persist Security Info=True;Password=;User ID=;Initial Catalog=CourseRegistration</ConnectionString>
Time Series forecasting (5) • 创建挖掘模型步骤 • 选课数据源视图: ….… • 选课数据挖掘结构: • 其他3个模型类似
Time Series forecasting(8) • 获取结果的DMX语言1: • query1 = "SELECT " + • "PredictTimeSeries([ForecastingSchoolStudentNumber].[v School Student Number], " + forecastNum + ") " + • "From " + • "[ForecastingSchoolStudentNumber] " + • "where [ForecastingSchoolStudentNumber].[School ID] = " + schoolId;
Time Series forecasting(9) • 获取结果的DMX语言2: • query2 = "SELECT " + • "PredictTimeSeries([ForecastingCourseRegNumber].[v Course Registration Statistics]," + n + ") " + • "From " + • "[ForecastingCourseRegNumber] " + • " where [ForecastingCourseRegNumber].[Course ID] = '" + • courseId + "'";// +"' order by Year Index";
前台 • 界面使用asp.net,用adomd.net连接Analysis service,获取挖掘结果,并用图表显示。 • 具体效果请看演示
剩下的工作 • Clustering算法 • 每种模型预测功能的丰富 • 界面美化,将界面上课程ID改成课程名等
Datamining 谢谢大家! Thanks for Dr Tok! Thank you very much for giving support on Datamining! 谢谢任老师和俞助教的监督和指导!大作业基本完成