HeaderSIS.jpg

Difference between revisions of "IS480 Team wiki: 2017T1 Team Atoms Final"

From IS480
Jump to navigation Jump to search
 
(41 intermediate revisions by 2 users not shown)
Line 45: Line 45:
 
[[Image:Atoms finals dashboard.png|center|800px]]
 
[[Image:Atoms finals dashboard.png|center|800px]]
 
<center>
 
<center>
[[Image:Atoms finals slideicon.png|100px]]
+
[[Image:Atoms finals slideicon.png|100px|link=File:Atoms IS480 Finals slide.pdf]]
 
[[Image:Atoms finals application.png|130px|link=http://kddlabs.com]]
 
[[Image:Atoms finals application.png|130px|link=http://kddlabs.com]]
 
[[Image:Atoms finals videoicon.png|100px|link=https://www.dropbox.com/s/9m4bpk2n0m4q6jd/Atoms%20Video.mp4?dl=0]]
 
[[Image:Atoms finals videoicon.png|100px|link=https://www.dropbox.com/s/9m4bpk2n0m4q6jd/Atoms%20Video.mp4?dl=0]]
Line 79: Line 79:
 
[[Image:Atoms bug metric description.png|center|600px]]
 
[[Image:Atoms bug metric description.png|center|600px]]
 
<br>
 
<br>
[[Image:Atoms bug metric.jpg|center|800px]]
+
[[Image:Atoms_bug_score.png|center|1000px]]
 +
[[Image:Atoms bug metric.jpg|center|1000px]]
 
<br>
 
<br>
[[Image:Atoms bug score.png|center|800px]]
 
 
<!--/Content-->
 
<!--/Content-->
  
Line 187: Line 187:
 
'''Existing & Potential Risk'''
 
'''Existing & Potential Risk'''
 
<div style="font-family:Roboto;font-size:18px">
 
<div style="font-family:Roboto;font-size:18px">
Currently there are <b>no outstanding risk</b>. All identified risk and challenges have been addressed. However, from the period of Acceptance till before Mid-Terms, we have faced and resolved concerns arising from 1) Technical Risk and 2) Client Management Risk as described below:  
+
Currently there are <b>no outstanding risk</b>. All identified risk and challenges have been addressed. However, from the period of Mid-Terms till before Finals , we have faced and resolved concerns arising from 1) Client Management Risk as described below:  
  
 
</div>
 
</div>
 
<br/>
 
<br/>
 +
'''Risks & Challenges Faced'''
 +
<center>
 +
{| class="wikitable" style="font-family:Roboto; background-color:#FFFFFF; width: 1000px;" align="center"
 +
|-
  
'''Risks & Challenges Faced'''
+
! style="color:#ecf0f1; background-color:#38474E;" width="50pt" | S/N
[[Image:Atoms midterm risk.png|center|900px]]
+
! style="color:#ecf0f1; background-color:#38474E;" width="100pt" | Risk Type
 +
! style="color:#ecf0f1; background-color:#38474E;" width="250pt" | Risk Event
 +
! style="color:#ecf0f1; background-color:#38474E;" width="100pt" | Likelihood
 +
! style="color:#ecf0f1; background-color:#38474E;" width="100pt" | Impact
 +
! style="color:#ecf0f1; background-color:#38474E;" width="50pt" | Category
 +
! style="color:#ecf0f1; background-color:#38474E;" width="250pt" | Mitigation Strategy
 +
|-
 +
|style="text-align: center;"| 1
 +
|style="text-align: center;"| Client Management Risk
 +
|style="text-align: left;"| Team Atoms will face modifications to be made within a short period of time before every lab release. As the team will have to provide a highly customized and similar lab session experience with the existing lab exercises used in class. In addition, the team will also have to provide a new highly customized system user guide with every lab release.
 +
|style="text-align: center;"| High
 +
|style="text-align: center;"| High
 +
|style="text-align: center;"| A
 +
|style="text-align: left;"|Team will actively engage sponsor as early as possible before each lab release to provide sufficient time for changes required. In addition, the team will also dedicate time to specifically prepare for each lab release.
 +
|-
 +
|}
 +
</center>
  
===<div style="background: #38474E; padding: 15px; line-height: 0.3em; text-indent: 15px; font-size:16px; font-family:Garamond"><font color= #FFFFFF>Technical Complexity</font></div>===
+
==Technical Complexity==
====System Architecture====
+
===System Architecture===
 +
<center>
 
[[Image:Atoms system architecture.PNG| 500px]]   
 
[[Image:Atoms system architecture.PNG| 500px]]   
 
[[Image:Atoms system architecture2.PNG| 500px]]
 
[[Image:Atoms system architecture2.PNG| 500px]]
====Frontend====
+
</center>
 +
 
 +
===Recap===
 +
A summary from our previous complexities achieved -
 +
https://wiki.smu.edu.sg/is480/IS480_Team_wiki%3A_2017T1_Team_Atoms_MidTerm#Technical_Complexity
 +
<center>
 +
{| class="wikitable" style="font-family:Roboto; background-color:#FFFFFF; width: 1000px;" align="center"
 +
|-
 +
 
 +
! style="color:#ecf0f1; background-color:#38474E;" width="50pt" | S/N
 +
! style="color:#ecf0f1; background-color:#38474E;" width="100pt" | Technical Complexity
 +
! style="color:#ecf0f1; background-color:#38474E;" width="250pt" | Description
 +
|-
 +
 
 +
|style="text-align: center;"| 1
 +
|style="text-align: center;"| Canvas Graph Traversing Algorithm
 +
|style="text-align: left;"| Team Atoms designed a graph traversing algorithm to handle all the possible combinations the user could draw in the canvas
 +
|-
 +
 
 +
|style="text-align: center;"| 2
 +
|style="text-align: center;"| Concurrency issue with Django + Matplotlib
 +
|style="text-align: left;"| Team Atoms handled concurrency issues causing visualization charts to overlap each other (which becomes unreadable)
 +
|-
 +
 
 +
|style="text-align: center;"| 3
 +
|style="text-align: center;"| Ensemble Algorithm
 +
|style="text-align: left;"| Team Atoms wrote our own Ensemble algorithm where we implemented our own Voting Classifier.
 +
|-
 +
|}
 +
</center>
 +
 
 +
The following are new technical challenges faced by the team from Mid-Terms till Finals:
 +
 
 +
===Frontend===
 
<div style="font-family:Roboto;font-size:18px">
 
<div style="font-family:Roboto;font-size:18px">
'''1. Canvas Graph Traversing Algorithm'''
+
'''1. Interactive Association Graph'''
 
</div>
 
</div>
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
In the KDDLabs, user can draw their own data mining process in the canvas with all the legit combination of functions. When users execute the process in the canvas, they are able to choose to partially execute the process or fully execute. In order to achieve this feature, our team designed a graph traversing algorithm to handle all the possible combinations the user could draw in the canvas.
+
In order to provide a better visualization when rule based mining is applied, we used d3.js to visualize the association rules on an interactive graph instead of a static image visualization. This will enable the users to move the nodes around to get a clearer view of the different rules generated. In addition, we were also able to achieve a high level of customization for the visualization by configuring the line color, node color and even node size based on its confidence and lift levels and items length.
The pseudo code and logical flow are as follow:
 
 
</div>
 
</div>
[[Image:Atoms midterms pseudocode canvas.PNG|center|450px]]
+
[[Image:Atoms finals interactive graph.png|center|700px]]
[[Image:Atoms midterms canvaspseudocode.jpg|center|650px]]
 
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
Following is an example when user is trying to execute the “Decision Tree Classifier 2”.
+
As the team was new to the D3 visualization library, there was a steep learning curve for us. The library was challenging to understand and grasp effectively in a short period of time. In addition, changes also have to be made on the backend where we had to modify the structure of the dataset in order to make it compatible with D3.
 
</div>
 
</div>
[[Image:Atoms midterms processflow.jpg|center|600px]]
+
 
<div style="font-family:Roboto;font-size:16px">
 
Only the nodes in execution list will be traversed and executed as shown below.
 
</div>
 
[[Image:Atoms midterms processflow2.jpg|center|650px]]
 
 
<br/><br/>
 
<br/><br/>
  
====Backend====
+
===Backend===
 
<div style="font-family:Roboto;font-size:18px">
 
<div style="font-family:Roboto;font-size:18px">
'''2. Concurrency issue with Django & Matplotlib'''
+
'''2. XGBoost Classification Implementation'''
 
</div>
 
</div>
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
*Django’s default architecture handles multiple requests using a built-in load balancer to cater to concurrent users and actions.  
+
What is XGBoost?
*Matplotlib is a library in Python used for plotting charts.
+
XGBoost is short for eXtreme gradient boosting. It is a library designed and optimized for boosted tree algorithms. It's main goal is to push the extreme of the computation limits of machines to provide a scalable, portable and accurate for large scale tree boosting. The term “Gradient Boosting” is proposed in the paper Greedy Function Approximation: A
*Standard requests such as read/write operations work out of the box without issue
+
Gradient Boosting Machine, by Friedman.
 +
 
 +
<b>Implementation</b> <br/>
 +
We implemented the XGBoost Classification algorithm using the Python API (http://xgboost.readthedocs.io/en/latest/python/python_api.html) and plugged it into our functionalities. Since the library also provides a Scikit-Learn Wrapper, it should work natively with our features:
 +
*Generate Accuracy Report
 +
*Generate Graph (Using Graphviz)
 +
*Generate Confusion Matrix
 +
*Ensemble
 +
*Predict
 +
 
 +
<b>Complications</b> <br/>
 +
However, complications arose when we used a dataset with columns that contained spaces -- the Graphviz library did not handle spaces properly when performing text splitting, causing the plot to crash.
 
</div>
 
</div>
[[Image:Atoms midterm concurrency.png|center|450px]]
+
[[Image:Atoms finals xgboost.png|center|450px]]
[[Image:Atoms midterms processflow2.jpg|center|650px]]
+
 
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
'''Problem'''
+
Outcome: Rules not split correctly - Strings broken up
*An issue will arise from a common use case shown above, when an Ensemble node runs and triggers multiple Decision Trees
 
*Each Decision Tree when executed, plots images (Confusion Matrix) - as a result, images appear to be drawn on a same canvas and 3 charts overlap each other (which becomes unreadable)
 
<br/>
 
'''Solution'''
 
*There is limited resources and documentation on this specific topic, therefore we had to find a solution ourselves
 
*One workaround is to assign a random id to each plot from (0,10000) and have every chart function create a plot on a different Figure object in the backend
 
*We also found out that each figure has to be closed after saving to prevent further complications (memory leaks)
 
*As a result, we also had to implement this for every other visualization to prevent the same issue when multiple users run a plot at the same time.
 
 
</div>
 
</div>
[[Image:Atoms midterm concurrencyconfusionmatrix.png|center|450px]]
+
[[Image:Atoms finals xgboost1.png|center|650px]]
<br/><br/>
 
  
<div style="font-family:Roboto;font-size:18px">
 
'''3. Ensemble Algorithm'''
 
</div>
 
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
In Machine Learning (Classification), A hard Voting Classifier Ensemble technique “combines conceptually different machine learning classifiers and use a majority vote” (Sklearn).
+
'''Fixes'''
For most algorithms, we make use of sklearn libraries to perform tasks. However, there is a problem in this particular use case shown below:
+
Attempt #1:
 +
Initially, we wanted to override the library to write a custom split but it can cause future implications when the new version releases etc. So we replaced the spaces between the strings with an underscore. Everything seems to work fine until we connected the XGBoost to an Ensemble and it did not work because other classifiers were having different feature names (without spaces)!
 +
[[Image:Atoms finals xgboost2.png|center|650px]]
 +
<br/>
 +
Attempt #2:
 +
Instead of changing the feature names permanently, we only modified it when it went into the graphing library and replaced it back with the original (into the XGBoost Model attribute) after the export graph was complete.
 +
[[Image:Atoms finals xgboost3.png|center|800px]]
 
</div>
 
</div>
[[Image:Atoms midterms processflow2.jpg|center|650px]]
+
Results:
<div style="font-family:Roboto;font-size:16px">
+
[[Image:Atoms finals xgboost4.png|center|760px]]
'''Problem'''
+
<br/><br/>
*This scenario means that each Classifier (Decision Tree) is trained before the Ensemble combines the results
 
*However, sklearn’s VotingClassifier requires each Classifier to be created and trained together as a whole - Once the Ensemble is created to accept different Classifiers it loses its trained state!
 
*This means that we cannot use this library and would have to <b>implement our own Voting Classifier</b>.
 
[[Image:Atoms midterm ensemble.png|center|500px]]
 
'''Solution'''
 
*Once we understood how and Ensemble Voting works, we had to call each Classifier’s “predict” function and select the most occurring value for each row
 
*This would mean overriding Ensemble’s predict function for our use case as shown in the code below:
 
[[Image:Atoms midterm overwritingensemble.png|center|600px]]
 
[[Image:Atoms midterm ensembleoutput.png|center|400px]]
 
<br/>
 
  
 
==Quality of Product==
 
==Quality of Product==
 +
===<div style="background: #38474E; padding: 15px; line-height: 0.3em; text-indent: 15px; font-size:16px; font-family:Garamond"><font color= #FFFFFF>Recap</font></div>===
 +
A summary from our previous measures in place to ensure that we deliver a quality product-
 +
https://wiki.smu.edu.sg/is480/IS480_Team_wiki%3A_2017T1_Team_Atoms_MidTerm#Quality_of_Product
 +
<center>
 +
{| class="wikitable" style="font-family:Roboto; background-color:#FFFFFF; width: 1000px;" align="center"
 +
|-
 +
 +
! style="color:#ecf0f1; background-color:#38474E;" width="50pt" | S/N
 +
! style="color:#ecf0f1; background-color:#38474E;" width="100pt" | Quality Measures
 +
! style="color:#ecf0f1; background-color:#38474E;" width="250pt" | Description
 +
|-
 +
 +
|style="text-align: center;"| 1
 +
|style="text-align: center;"| Deployment script
 +
|style="text-align: left;"| Manual deployment can lead to multiple human error. Hence, we have created a deployment shell script that partially automates the process of the deployment of our web application.
 +
|-
 +
 +
|style="text-align: center;"| 2
 +
|style="text-align: center;"| Bench marking for Visualization
 +
|style="text-align: left;"| Team Atoms measured how much time it would take for different dimensions of data sets, we generated datasets of different columns and rows and ran each charting function to see how much time it took.
 +
|-
 +
 +
|style="text-align: center;"| 3
 +
|style="text-align: center;"| Secure API - System security
 +
|style="text-align: left;"| For each API request to modify files, there is an implementation to verify if the file belongs to the user before the operation.
 +
|-
 +
 +
|style="text-align: center;"| 4
 +
|style="text-align: center;"| Google Analytics tracking implementation
 +
|style="text-align: left;"| Team Atoms have also implemented Google analytics tracking to understand how students are interacting with our KDD Labs website, where they’re coming from and how often they visit, what parts of the site are capturing their attention and what parts aren’t sparking interest.
 +
|-
 +
 +
|style="text-align: center;"| 5
 +
|style="text-align: center;"| System logger
 +
|style="text-align: left;"| Our system will consistently monitor and log down critical user actions and the problems the user encounters. This will help us to automatically track errors made in the system which will be used for our internal feedback when users utilize the KDD Labs system.
 +
|-
 +
|}
 +
</center>
 +
 +
===<div style="background: #38474E; padding: 15px; line-height: 0.3em; text-indent: 15px; font-size:16px; font-family:Garamond"><font color= #FFFFFF>Extra Implementations</font></div>===
 +
The following are new measures in place by the team from Mid-Terms till Finals to ensure that we deliver a quality product:
 +
 
<div style="font-family:Roboto;font-size:18px">
 
<div style="font-family:Roboto;font-size:18px">
'''1. Deployment Script'''
+
'''1. Application configuration file'''
 
</div>
 
</div>
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
Manual deployment can lead to multiple human error. Hence, we have created a deployment shell script that partially automates the process of the deployment of our web application. The steps that are automated includes:
+
 
 +
We made used of a ConfigParser that allows us to read parameters from a configuration files into the python application. The configuration file contains the parameters and initial settings required for the application. Using a configuration files to store these parameters have several benefits.
 +
*System administrator does not need to modify any source code
 +
*Sensitive information not exposed on in source code
 
<br/><br/>
 
<br/><br/>
1.    Stopping/Starting of system services running our web server and our web application<br/>
 
2.    Downloading of new source code from git repository<br/>
 
3.    Changing file system permission of directories and files<br/>
 
4.    Execution of Django specific deployment command<br/>
 
  
With a frequent deployment rate (every iteration - 2 weeks) the chances of error due to manual deployment is much higher. Hence with the deployment script we will be able to reduce such errors.  
+
[[Image:Atoms finals configfile.png|center|500px]]
 +
[[Image:Atoms finals configfile1.png|center|500px]]
 
</div>
 
</div>
 
<br/>
 
<br/>
  
 
<div style="font-family:Roboto;font-size:18px">
 
<div style="font-family:Roboto;font-size:18px">
'''2. Bench marking for Visualization'''
+
'''2. Detailed Technical documentation (Handover) '''
 
</div>
 
</div>
 +
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
This is a scatter matrix plot for the famous Iris data set. It involves plotting every column against one another. Therefore, the computation is (# of rows) x (# of columns)2
+
In order to facilitate a proper handover and successful continuity of the project. We had to ensure that the system is well documented. The documentation contains detailed information on the usage of KDDLabs along with examples and illustration. In addition, we have also created a comprehensive installation and deployment guide for future developers. <br/>
<br/><b>Complexity:</b> [[Image:Atoms midterm benchmarkingcomplexity.png|100px]]
+
<b>Documentation can be found here:</b> - https://jinyuan.github.io/KDDLab/  
</div>
+
*For user to view and learn how each KDDLabs function works.
[[Image:Atoms midterm benchmarking iris.png|center|500px]]
+
*For system admin to view how to install and deploy the KDDLabs project.
<div style="font-family:Roboto;font-size:16px">
+
[[Image:Atoms finals technicaldocumentation.png|center|800px]]  
'''Problem'''
 
*This would cause datasets which a large number of columns to take a considerable amount of time, consuming resources for a single user
 
*If many users execute this chart at the same time, it would result in a very long response time
 
<br/>
 
'''Solution'''
 
*To accurately measure how much time it would take for different dimensions of data sets, we generated datasets of different columns and rows and ran each charting function to see how much time it took.
 
</div>
 
[[Image:Atoms midterm benchmarking timing.png|center|800px]]
 
<div style="font-family:Roboto;font-size:16px">
 
'''Findings'''
 
*From the benchmark tests, we found out that the number of rows did not affect the performance as much as the number of columns
 
*From our findings, we implemented validations in place to disallow users to select too many columns (>10) for scatter matrix
 
 
<br/>
 
<br/>
 +
[[Image:Atoms finals technicaldocumentation1.png|center|800px]]
 
</div>
 
</div>
<br/>
 
  
<div style="font-family:Roboto;font-size:18px">
 
'''3. Secure API - System security'''
 
</div>
 
<div style="font-family:Roboto;font-size:16px">
 
*All backend APIs require user login to prevent unauthorized direct API calls
 
*For each API request to modify files, there is an implementation to verify if the file belongs to the user before the operation.
 
*If there is an unauthorized API request to the system, an appropriate error message will be displayed and the request will also be logged for investigation
 
</div>
 
[[Image:Atoms midterm secureapi.png|center|600px]]
 
 
<br/>
 
<br/>
  
 
<div style="font-family:Roboto;font-size:18px">
 
<div style="font-family:Roboto;font-size:18px">
'''4. Google Analytics tracking implementation'''
+
'''3. System security - For Data sharing function'''
 
</div>
 
</div>
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
Google analytics tool can help our sponsor understand how students are interacting with our KDD Labs website, where they’re coming from and how often they visit, what parts of the site are capturing their attention and what parts aren’t sparking interest.
+
Since the data sharing function allow user to sent out the shareable link outside the system, it is crucial to secure the data exposed in the link. So we made use of hash function to encrypt the data in the link and we also provide user accessibility check when the user click the link. The shareable link will expire in 24 hours after the shareable link generated.
</div>
 
[[Image:Atoms midterm googleanalytics.png|center|600px]]
 
<br/>
 
<div style="font-family:Roboto;font-size:16px">
 
We also keep tracking user's’ behaviour and count number of events triggered in our system. This will allow us to keep a close monitor on functionalities being utilized in our system and assist us with tracking abnormal behavior. Furthermore, this will also be a useful tracking tool for the teaching team to understand the students usage behaviour. There are a total of 32 different activities that have been tracked since the website was announced to the students on the 7th Sep 17. The graph below shows the top 10 activities in our website.
 
[[Image:Atoms midterm googleanalytics top10.png|center|800px]]
 
 
</div>
 
</div>
 +
[[Image:Atoms finals systemsecurity.png|center|600px]]
 
<br/>
 
<br/>
  
<div style="font-family:Roboto;font-size:18px">
 
'''5. System logger'''
 
</div>
 
<div style="font-family:Roboto;font-size:16px">
 
Our system will consistently monitor and log down critical user actions and the problems the user encounters. This will help us to automatically track errors made in the system which will be used for our internal feedback when users utilize the KDD Labs system. We will then analyse these errors further and derive the root cause of such errors to try improve on our system if possible.
 
</div>
 
[[Image:Atoms midterm systemlogger.png|center|600px]]
 
<br/>
 
<div style="font-family:Roboto;font-size:16px">
 
Furthermore, to make the logging files easy to locate, we have created a logger that will rotate the logging file twice a day. The file name will be changed to the date and time when the file was last modified.
 
[[Image:Atoms midterm systemlogger rotation.png|center|500px]]
 
</div>
 
 
<br/>
 
<br/>
  
===<div style="background: #38474E; padding: 15px; line-height: 0.3em; text-indent: 15px; font-size:16px; font-family:Garamond"><font color= #FFFFFF>Intermediate Deliverables</font></div>===
+
===<div style="background: #38474E; padding: 15px; line-height: 0.3em; text-indent: 15px; font-size:16px; font-family:Garamond"><font color= #FFFFFF>Final Deliverables</font></div>===
  
 
{| class="wikitable" style="background-color:#FFFFFF; font-family: Roboto"
 
{| class="wikitable" style="background-color:#FFFFFF; font-family: Roboto"
Line 388: Line 436:
 
===<div style="background: #38474E; padding: 15px; line-height: 0.3em; text-indent: 15px; font-size:16px; font-family:Garamond"><font color= #FFFFFF>Deployment</font></div>===
 
===<div style="background: #38474E; padding: 15px; line-height: 0.3em; text-indent: 15px; font-size:16px; font-family:Garamond"><font color= #FFFFFF>Deployment</font></div>===
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
'''Note: Application link provided is for our test server, which is only available within the SMU Network. Otherwise consider using VPN to access the SMU Network'''
+
 
 
<br/>
 
<br/>
 
To view application, visit <br/>
 
To view application, visit <br/>
Test server: http://10.0.106.101/ <br/>
+
Test server: http://kddlabs.com <br/>
 
Username: demo<br/>
 
Username: demo<br/>
 
Password: demopassword123
 
Password: demopassword123
Line 405: Line 453:
 
[[Image: Atoms UAT1.PNG|150px|link=IS480 Team wiki: 2017T1 Team Atoms User Testing 1]]
 
[[Image: Atoms UAT1.PNG|150px|link=IS480 Team wiki: 2017T1 Team Atoms User Testing 1]]
 
[[Image: Atoms UAT2.PNG|150px|link=IS480 Team wiki: 2017T1 Team Atoms User Testing 2]]
 
[[Image: Atoms UAT2.PNG|150px|link=IS480 Team wiki: 2017T1 Team Atoms User Testing 2]]
 +
[[Image: Atoms UAT3.PNG|150px|link=IS480 Team wiki: 2017T1 Team Atoms User Testing 3]]
 
[[Image: Atoms Liveusage.PNG|150px|link=IS480 Team wiki: 2017T1 Team Atoms Live Usage]]
 
[[Image: Atoms Liveusage.PNG|150px|link=IS480 Team wiki: 2017T1 Team Atoms Live Usage]]
 
</center>
 
</center>
Line 422: Line 471:
  
 
<p>
 
<p>
The team’s list of test cases can be found on our private repository [https://www.dropbox.com/sh/qiw71fh79t57bgc/AAC9vhkbvkcdIsbVseHNkZB1a?dl=0 here].
+
The team’s list of test cases can be found on our private repository [https://www.dropbox.com/sh/ogs0tf3sn3das0g/AAAujuSYb1KEn8sD5Vr-2lsSa?dl=0 here].
 
</p>
 
</p>
 
</div>
 
</div>
  
====User Acceptance Test 1 & 2====
+
====User Acceptance Test 1,2,3====
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
Team Atoms has conducted 2 user tests which allowed us to better manage sponsor expectations as well as improve on usability of our application interface.
+
Team Atoms has conducted 3 user tests which allowed us to better manage sponsor expectations as well as improve on usability of our application interface.
 
</div>
 
</div>
 
<center>
 
<center>
[[Image: Atoms midterms uat summary.png|800px]]
+
[[Image: Atoms finals uat.png|800px]]
 
<div style="font-family:Roboto;font-size:16px">
 
<div style="font-family:Roboto;font-size:16px">
 
For more detailed version of Team Atoms user acceptance test results, access it here:
 
For more detailed version of Team Atoms user acceptance test results, access it here:
Line 438: Line 487:
 
&nbsp;&nbsp;&nbsp;
 
&nbsp;&nbsp;&nbsp;
 
[[Image: Atoms UAT2.PNG|150px|link=IS480 Team wiki: 2017T1 Team Atoms User Testing 2]]
 
[[Image: Atoms UAT2.PNG|150px|link=IS480 Team wiki: 2017T1 Team Atoms User Testing 2]]
 +
[[Image: Atoms UAT3.PNG|150px|link=IS480 Team wiki: 2017T1 Team Atoms User Testing 3]]
 
</center>
 
</center>
 
<br/>
 
<br/>
Line 447: Line 497:
  
 
<br/>
 
<br/>
<b>Lab1</b>
+
=====Lab1=====
 
<div style="font-family:Roboto; font-size:16px">
 
<div style="font-family:Roboto; font-size:16px">
 
<p>
 
<p>
Line 454: Line 504:
 
<b>Number of Users(s):</b> 45 <br />
 
<b>Number of Users(s):</b> 45 <br />
 
<b>Lab1 User Guide:</b> Created instructions can be found [https://www.dropbox.com/s/vblj4ebf20li9vp/Lab_1_KDD.pdf?dl=0 here] <br />
 
<b>Lab1 User Guide:</b> Created instructions can be found [https://www.dropbox.com/s/vblj4ebf20li9vp/Lab_1_KDD.pdf?dl=0 here] <br />
<center><div style="font-family:Roboto; font-size:16px"> </div>
+
<b>Lab1 Feedback Results:</b> Live user feedback can be found [https://www.dropbox.com/s/3k2w0rusy92ehf3/Lab_1_KDD_Feedback.pdf?dl=0 here] <br />
<b> FEEDBACK RESULTS FROM LIVE USERS </b>
+
</p>
 
 
 
[[Image:Atoms lab1feedback Q1.png|center|600px]]
 
[[Image:Atoms lab1feedback Q1.png|center|600px]]
 
[[Image:Atoms lab1feedback Q4.png|center|600px]]
 
[[Image:Atoms lab1feedback Q4.png|center|600px]]
</center>
+
 
<b>Lab1 Feedback Results:</b> The rest of the results from the Live user feedback can be found [https://www.dropbox.com/s/3k2w0rusy92ehf3/Lab_1_KDD_Feedback.pdf?dl=0 here] <br />
 
</p>
 
 
</div>
 
</div>
<br/>
 
  
<b>Lab2</b>
+
=====Lab2=====
 
<div style="font-family:Roboto; font-size:16px">
 
<div style="font-family:Roboto; font-size:16px">
 
<p>
 
<p>
Line 474: Line 520:
 
<b>Lab2 Feedback Results:</b> Live user feedback can be found [https://www.dropbox.com/s/gurygkcam51obiy/Lab_2_KDD_Feedback.pdf?dl=0 here] <br />
 
<b>Lab2 Feedback Results:</b> Live user feedback can be found [https://www.dropbox.com/s/gurygkcam51obiy/Lab_2_KDD_Feedback.pdf?dl=0 here] <br />
 
</p>
 
</p>
 +
[[Image:Atoms Lab2 feedback.PNG|center|600px]]
 +
[[Image:Atoms Lab2 feedback1.PNG|center|600px]]
 
</div>
 
</div>
 +
 +
=====Lab3=====
 +
<p>
 +
<b>Release Date: </b>16 Oct 2017, Monday<br />
 +
<b>Duration: </b>2-3 hours per user<br />
 +
<b>Number of Users(s):</b> 45 <br />
 +
<b>Lab3 User Guide:</b> Created instructions can be found [https://www.dropbox.com/s/lych7e221u7a2y1/Lab_2_KDD.pdf?dl=0 here] <br />
 +
<b>Lab3 Feedback Results:</b> Live user feedback can be found [https://www.dropbox.com/s/xvavowh4izn2xzu/Lab_3_KDD_Feedback.pdf?dl=0 here] <br />
 +
</p>
 +
[[Image:Atoms Lab3 feedback.PNG|center|600px]]
 +
[[Image:Atoms Lab3 feedback1.PNG|center|600px]]
 +
 +
=====Lab4=====
 +
<div style="font-family:Roboto; font-size:16px">
 +
<p>
 +
<b>Release Date: </b>6 Nov 2017, Monday<br />
 +
<b>Duration: </b>2-3 hours per user<br />
 +
<b>Number of Users(s):</b> 45 <br />
 +
<b>Lab4 User Guide:</b> Created instructions can be found [https://www.dropbox.com/s/zdw4atf337o58ar/Lab_4_KDD.pdf?dl=0 here] <br />
 +
<b>Lab4 Feedback Results:</b> Live user feedback can be found [https://www.dropbox.com/s/xki6upjl4yb1789/Lab_4_KDD_Feedback.pdf?dl=0 here] <br />
 +
</p>
 +
[[Image:Atoms Lab4 feedback.PNG|center|600px]]
 +
[[Image:Atoms Lab4 feedback1.PNG|center|600px]]
 +
</div>
 +
 +
==Project Handover==
 +
===<div style="background: #38474E; padding: 15px; line-height: 0.3em; text-indent: 15px; font-size:16px; font-family:Garamond"><font color= #FFFFFF>Handover Components</font></div>===
 +
<div style="font-family:Roboto;font-size:16px">
 +
Team Atoms have already provided a comprehensive handover to the sponsor, the team provided a detailed walk through of each component and proper hand-over documentation. Below are the documents that we handed over to our client:
 +
 +
</div>
 +
<center>
 +
{| class="wikitable" style="background-color:#FFFFFF; font-family: Roboto"
 +
|-
 +
! style="font-weight: bold;background: #38474E;color:#fff;" | Component
 +
! style="font-weight: bold;background: #38474E;color:#fff;" | Description
 +
! style="font-weight: bold;background: #38474E;color:#fff;" | Links
 +
|-
 +
 +
|-
 +
| Source Code
 +
| The source code is in a github repository and have already been shared with the sponsors.
 +
|
 +
 +
|-
 +
| Technical Documentation
 +
| This a comprehensive documentation of our systems usage and developer guide for future continuity.
 +
| https://jinyuan.github.io/KDDLab/
 +
 +
 +
|-
 +
| Design Documents
 +
| These are the design documents of our existing system (Database architecture, Sequence diagrams, System architecture, System interaction, Technologies used)
 +
| https://www.dropbox.com/sh/uleaa2j3d69r4nv/AACNr_m-Tn_zySqkzWzrhQcka?dl=0
 +
 +
 +
|-
 +
| Deployment Script
 +
| These are the automated scripts that can be run for automated deployment and documentation of how it can be done.
 +
| https://www.dropbox.com/sh/weyy8wvaoh2ml4x/AADvY74vzmtB3PVMvX7UzBSka?dl=0
 +
 +
|-
 +
| Sample Configuration Files
 +
| These are samples of configuration files for system modification.
 +
| https://www.dropbox.com/sh/7f2r4qjjuq5sjn8/AAALB0XAAut74eEJ8oBgh0s8a?dl=0
 +
 +
|-
 +
| Live Lab usage Feedback & Testing Results
 +
| These are feedback collected along the way at the end of every lab assignment and detailed results of our test findings.
 +
| https://www.dropbox.com/sh/wuuzs3sx6z5k9ai/AABoch0_5n3Tb2kZJqbociBTa?dl=0
 +
 +
|-
 +
| Presentation Slides
 +
| These are slides for our acceptance, midterms and finals.
 +
| https://www.dropbox.com/sh/ikr48enwgs0oknl/AADISgdBMWg0Q_435tjixBHna?dl=0
 +
 +
|-
 +
| Poster & Video
 +
| These are marketing material for the project
 +
| https://www.dropbox.com/sh/6dg1gw01scnwyv2/AADWJVMAGofBGaN368gvE0xRa?dl=0
 +
 +
|-
 +
| Outstanding Issues
 +
| This a compiled list of known issues to take note for the existing system's limitations and possible future improvements.
 +
| https://www.dropbox.com/s/sapl462ofli49qv/KDDLabs%20Known%20Issues.docx?dl=0
 +
 +
|}
 +
</center>
  
 
==Reflection==
 
==Reflection==
Line 493: Line 629:
 
===<div style="background: #38474E; padding: 15px; line-height: 0.3em; text-indent: 15px; font-size:16px; font-family:Garamond"><font color= #FFFFFF>Individual Reflections</font></div>===
 
===<div style="background: #38474E; padding: 15px; line-height: 0.3em; text-indent: 15px; font-size:16px; font-family:Garamond"><font color= #FFFFFF>Individual Reflections</font></div>===
  
[[Image:Atoms midterms reflections.PNG|750px|center]]
+
[[Image:Atoms finals reflections.png|750px|center]]
  
 
<!--/Content-->
 
<!--/Content-->

Latest revision as of 03:07, 21 November 2017

Atoms Logo.png


Team Atom Icon Home.png

HOME

  Team Atom Icon Aboutus.png

ABOUT US

  Team Atom Icon Projectoverview.png

PROJECT OVERVIEW

  Team Atom Icon Projectmanagement.png

PROJECT MANAGEMENT

  Team Atom Icon Documents.png

DOCUMENTATION



Project Progress Summary


Atoms finals dashboard.png

Atoms finals slideicon.png Atoms finals application.png Atoms finals videoicon.png Atoms finals postericon.png

User: demo | Password: demopassword123

Project Management

Project Status

Atoms finals projectstatus.png

Project Schedule (Plan vs. Actual)

There were afew changes made to the project schedule and scope as the team decided to push themselves and added new refinements to the project. In addition, the sponsor has requested for an additional technical documentation due to their intentions to open source the project and submit a software research publication around the application. The changes made did not affect the timely completion of the project. We have also brought the project handover forward to allow more time for the sponsor the take over the project and provide sufficient time for support.

Planned Project Schedule

Atoms Schedule V7.png

Actual Project Schedule

Atoms finals actualschedule.png

Project Metrics


Atoms schedule metric description.png
Atoms schedule metric.png
Schedule Metric Breakdown: https://www.dropbox.com/s/tmpczn3wr520nqf/Project_schedule%20.xlsx?dl=0


Atoms bug metric description.png


Atoms bug score.png
Atoms bug metric.jpg


Change Management

Below is the change log for Iteration 11 to 14 (after Mid-Terms):

Change Log
Iteration Date Type Change Request Rationale Feasibility Outcome Priority Status of Request Issued By
11 10/10/2017 Scope Add interactive GIF tutorial (For first time users) Supervisor recommended including a interactive tutorial guide for first time users to allow them to easier learn how to use the system Fits into schedule without any expected delay as a consequence Accepted Low Closed Supervisor
12 16/10/2017 Scope Change denogram implementation for clustering (Distance cut off) Sponsor requested for a better way to view denogram and allow users to utilise it more effectively through distance cut off Fits into schedule without any expected delay as a consequence Accepted High Closed Sponsor
12 16/10/2017 Scope Add interactive association visualisation Team decided to make visualisaiton for association link graph interactive as it adds more value to the visualisation and project Fits into schedule without any expected delay as a consequence Accepted Low Closed Team
12 18/10/2017 Scope Deployment documentation instructions Team decided to create an additional set of deployment documentation to facilitate project handover Fits into schedule without any expected delay as a consequence Accepted Low Closed Team
12 20/10/2017 Scope Technical documentation of system Sponsor request for technical documentation as they will like to open source the project and submit for software publication Fits into schedule without any expected delay as a consequence Accepted High Closed Sponsor
13 30/10/2017 Schedule Change implementation for association rules Lab4 release have to be delayed by 1 week due to changes in association computation/ algorithm Fits into schedule without any consequence Accepted High Closed Sponsor

Project Risks


Atoms Risk category.png


Existing & Potential Risk

Currently there are no outstanding risk. All identified risk and challenges have been addressed. However, from the period of Mid-Terms till before Finals , we have faced and resolved concerns arising from 1) Client Management Risk as described below:


Risks & Challenges Faced

S/N Risk Type Risk Event Likelihood Impact Category Mitigation Strategy
1 Client Management Risk Team Atoms will face modifications to be made within a short period of time before every lab release. As the team will have to provide a highly customized and similar lab session experience with the existing lab exercises used in class. In addition, the team will also have to provide a new highly customized system user guide with every lab release. High High A Team will actively engage sponsor as early as possible before each lab release to provide sufficient time for changes required. In addition, the team will also dedicate time to specifically prepare for each lab release.

Technical Complexity

System Architecture

Atoms system architecture.PNG Atoms system architecture2.PNG

Recap

A summary from our previous complexities achieved - https://wiki.smu.edu.sg/is480/IS480_Team_wiki%3A_2017T1_Team_Atoms_MidTerm#Technical_Complexity

S/N Technical Complexity Description
1 Canvas Graph Traversing Algorithm Team Atoms designed a graph traversing algorithm to handle all the possible combinations the user could draw in the canvas
2 Concurrency issue with Django + Matplotlib Team Atoms handled concurrency issues causing visualization charts to overlap each other (which becomes unreadable)
3 Ensemble Algorithm Team Atoms wrote our own Ensemble algorithm where we implemented our own Voting Classifier.

The following are new technical challenges faced by the team from Mid-Terms till Finals:

Frontend

1. Interactive Association Graph

In order to provide a better visualization when rule based mining is applied, we used d3.js to visualize the association rules on an interactive graph instead of a static image visualization. This will enable the users to move the nodes around to get a clearer view of the different rules generated. In addition, we were also able to achieve a high level of customization for the visualization by configuring the line color, node color and even node size based on its confidence and lift levels and items length.

Atoms finals interactive graph.png

As the team was new to the D3 visualization library, there was a steep learning curve for us. The library was challenging to understand and grasp effectively in a short period of time. In addition, changes also have to be made on the backend where we had to modify the structure of the dataset in order to make it compatible with D3.



Backend

2. XGBoost Classification Implementation

What is XGBoost? XGBoost is short for eXtreme gradient boosting. It is a library designed and optimized for boosted tree algorithms. It's main goal is to push the extreme of the computation limits of machines to provide a scalable, portable and accurate for large scale tree boosting. The term “Gradient Boosting” is proposed in the paper Greedy Function Approximation: A Gradient Boosting Machine, by Friedman.

Implementation
We implemented the XGBoost Classification algorithm using the Python API (http://xgboost.readthedocs.io/en/latest/python/python_api.html) and plugged it into our functionalities. Since the library also provides a Scikit-Learn Wrapper, it should work natively with our features:

  • Generate Accuracy Report
  • Generate Graph (Using Graphviz)
  • Generate Confusion Matrix
  • Ensemble
  • Predict

Complications
However, complications arose when we used a dataset with columns that contained spaces -- the Graphviz library did not handle spaces properly when performing text splitting, causing the plot to crash.

Atoms finals xgboost.png

Outcome: Rules not split correctly - Strings broken up

Atoms finals xgboost1.png

Fixes Attempt #1: Initially, we wanted to override the library to write a custom split but it can cause future implications when the new version releases etc. So we replaced the spaces between the strings with an underscore. Everything seems to work fine until we connected the XGBoost to an Ensemble and it did not work because other classifiers were having different feature names (without spaces)!

Atoms finals xgboost2.png


Attempt #2: Instead of changing the feature names permanently, we only modified it when it went into the graphing library and replaced it back with the original (into the XGBoost Model attribute) after the export graph was complete.

Atoms finals xgboost3.png

Results:

Atoms finals xgboost4.png



Quality of Product

Recap

A summary from our previous measures in place to ensure that we deliver a quality product-

https://wiki.smu.edu.sg/is480/IS480_Team_wiki%3A_2017T1_Team_Atoms_MidTerm#Quality_of_Product
S/N Quality Measures Description
1 Deployment script Manual deployment can lead to multiple human error. Hence, we have created a deployment shell script that partially automates the process of the deployment of our web application.
2 Bench marking for Visualization Team Atoms measured how much time it would take for different dimensions of data sets, we generated datasets of different columns and rows and ran each charting function to see how much time it took.
3 Secure API - System security For each API request to modify files, there is an implementation to verify if the file belongs to the user before the operation.
4 Google Analytics tracking implementation Team Atoms have also implemented Google analytics tracking to understand how students are interacting with our KDD Labs website, where they’re coming from and how often they visit, what parts of the site are capturing their attention and what parts aren’t sparking interest.
5 System logger Our system will consistently monitor and log down critical user actions and the problems the user encounters. This will help us to automatically track errors made in the system which will be used for our internal feedback when users utilize the KDD Labs system.

Extra Implementations

The following are new measures in place by the team from Mid-Terms till Finals to ensure that we deliver a quality product:

1. Application configuration file

We made used of a ConfigParser that allows us to read parameters from a configuration files into the python application. The configuration file contains the parameters and initial settings required for the application. Using a configuration files to store these parameters have several benefits.

  • System administrator does not need to modify any source code
  • Sensitive information not exposed on in source code



Atoms finals configfile.png
Atoms finals configfile1.png


2. Detailed Technical documentation (Handover)

In order to facilitate a proper handover and successful continuity of the project. We had to ensure that the system is well documented. The documentation contains detailed information on the usage of KDDLabs along with examples and illustration. In addition, we have also created a comprehensive installation and deployment guide for future developers.
Documentation can be found here: - https://jinyuan.github.io/KDDLab/

  • For user to view and learn how each KDDLabs function works.
  • For system admin to view how to install and deploy the KDDLabs project.
Atoms finals technicaldocumentation.png


Atoms finals technicaldocumentation1.png


3. System security - For Data sharing function

Since the data sharing function allow user to sent out the shareable link outside the system, it is crucial to secure the data exposed in the link. So we made use of hash function to encrypt the data in the link and we also provide user accessibility check when the user click the link. The shareable link will expire in 24 hours after the shareable link generated.

Atoms finals systemsecurity.png



Final Deliverables

Topic of Interest Link
Project Management Project Schedule
Minutes
Metrics
Risk Management
Change Management
Project Overview Project Overview
Team's Motivation
Project Scope
Project Documentation Diagrams
Technologies Implemented
Low & Mid Fidelity Prototypes
Testing Testing Documentation


Deployment


To view application, visit
Test server: http://kddlabs.com
Username: demo
Password: demopassword123


Note: This public server is currently being utilized for Live Usage by the IS424 Data Mining and Business Analytics students for their labs and project completion.
Production server: https://kddlabs.cn/

Testing

Atoms internaltesting.PNG Atoms UAT1.PNG Atoms UAT2.PNG Atoms UAT3.PNG Atoms Liveusage.PNG

Internal Testing

We engage in comprehensive manual testing in every iteration. The developers will conduct individual testing before committing their codes on our shared repository, GitHub. We believe in testing the application manually at this level because tests can be specially adjusted to cater to changes in the application, both on the front and back end. Furthermore, manual testing brings about the human factor, allowing us to better discover problems that might surface during real usage due to natural human behavior.

Once the developers have fixed the bugs, the fixed set of codes will be merged and integrated with the other functionalities. Subsequently, the integrated code is then deployed on the test server and the lead quality assurance will run a final check against the set of test cases created. This helps to ensure that the deployed application works with no major incidents.

The team's lead quality assurance then performs regression testing on the test server where previous functionalities developed are tested again. This helps to ensure that existing functionalities in the application are not affected by the integration. Once bugs have been identified, the lead quality assurance will then update the bug-tracking Excel sheet and notify the relevant developers of the issues and the corresponding priority level.


The team’s list of test cases can be found on our private repository here.

User Acceptance Test 1,2,3

Team Atoms has conducted 3 user tests which allowed us to better manage sponsor expectations as well as improve on usability of our application interface.

Atoms finals uat.png

For more detailed version of Team Atoms user acceptance test results, access it here:

Atoms UAT1.PNG     Atoms UAT2.PNG Atoms UAT3.PNG


Live Usage

Through our live usage and roll out, IS424 students were able to complete their take home lab assignments on our system. Thus we were able to gather feedback from our end users about KDD Labs system directly. In addition, we were also able to compare the user experience with the existing alternative used in class (SAS EM). From our feedback, we have received positive response about the KDD Labs system stating that the students were able to complete their in class lab exercise. Not only that, they also found that the KDD Labs system was easier to use as compared to SAS EM.


Lab1

Release Date: 01 Sep 2017, Friday
Duration: 2-3 hours per user
Number of Users(s): 45 
Lab1 User Guide: Created instructions can be found here
Lab1 Feedback Results: Live user feedback can be found here

Atoms lab1feedback Q1.png
Atoms lab1feedback Q4.png
Lab2

Release Date: 15 Sep 2017, Friday
Duration: 2-3 hours per user
Number of Users(s): 45 
Lab2 User Guide: Created instructions can be found here
Lab2 Feedback Results: Live user feedback can be found here

Atoms Lab2 feedback.PNG
Atoms Lab2 feedback1.PNG
Lab3

Release Date: 16 Oct 2017, Monday
Duration: 2-3 hours per user
Number of Users(s): 45 
Lab3 User Guide: Created instructions can be found here
Lab3 Feedback Results: Live user feedback can be found here

Atoms Lab3 feedback.PNG
Atoms Lab3 feedback1.PNG
Lab4

Release Date: 6 Nov 2017, Monday
Duration: 2-3 hours per user
Number of Users(s): 45 
Lab4 User Guide: Created instructions can be found here
Lab4 Feedback Results: Live user feedback can be found here

Atoms Lab4 feedback.PNG
Atoms Lab4 feedback1.PNG

Project Handover

Handover Components

Team Atoms have already provided a comprehensive handover to the sponsor, the team provided a detailed walk through of each component and proper hand-over documentation. Below are the documents that we handed over to our client:

Component Description Links
Source Code The source code is in a github repository and have already been shared with the sponsors.
Technical Documentation This a comprehensive documentation of our systems usage and developer guide for future continuity. https://jinyuan.github.io/KDDLab/


Design Documents These are the design documents of our existing system (Database architecture, Sequence diagrams, System architecture, System interaction, Technologies used) https://www.dropbox.com/sh/uleaa2j3d69r4nv/AACNr_m-Tn_zySqkzWzrhQcka?dl=0


Deployment Script These are the automated scripts that can be run for automated deployment and documentation of how it can be done. https://www.dropbox.com/sh/weyy8wvaoh2ml4x/AADvY74vzmtB3PVMvX7UzBSka?dl=0
Sample Configuration Files These are samples of configuration files for system modification. https://www.dropbox.com/sh/7f2r4qjjuq5sjn8/AAALB0XAAut74eEJ8oBgh0s8a?dl=0
Live Lab usage Feedback & Testing Results These are feedback collected along the way at the end of every lab assignment and detailed results of our test findings. https://www.dropbox.com/sh/wuuzs3sx6z5k9ai/AABoch0_5n3Tb2kZJqbociBTa?dl=0
Presentation Slides These are slides for our acceptance, midterms and finals. https://www.dropbox.com/sh/ikr48enwgs0oknl/AADISgdBMWg0Q_435tjixBHna?dl=0
Poster & Video These are marketing material for the project https://www.dropbox.com/sh/6dg1gw01scnwyv2/AADWJVMAGofBGaN368gvE0xRa?dl=0
Outstanding Issues This a compiled list of known issues to take note for the existing system's limitations and possible future improvements. https://www.dropbox.com/s/sapl462ofli49qv/KDDLabs%20Known%20Issues.docx?dl=0

Reflection

Team Reflection

This journey has proven to be an enriching learning experience for Team Atoms. The project had many new learning points for the team as it was highly technical- we had to understand and grasp the concepts of the data mining process and algorithms within a short period of time. In addition, we also learnt the importance of good stakeholder management which allows us to better react to unforeseen circumstances. Through an active team participation and communication we were able to mitigate existing issues and deliver a quality project on time.

Sponsors' Testimonial


Atoms midterms sponsor.PNG

"Team ATOMS is a capable and sincere team, that has done very well in the course of the project. KDD Labs project is very challenging and in particular requires a very diverse set of technical skills. ATOMS have made substantial efforts in acquiring new skills and integrating them to deliver a quality product in a timely manner. They have stoically faced the technical issues and challenging feature/change requests, and demonstrated an excellent work ethic in delivering on their targets. Discussions with them have been thought provoking and rewarding, and have significantly contributed towards improving the product quality" - Sponsor, Doyen Sahoo

Individual Reflections

Atoms finals reflections.png