Solutions to “Just KNIME It!” Challenge 6 - Season 3

:boom: It’s Wednesday once again! :sun_with_face: And here we are with a fresh Just KNIME It! challenge.

:soccer: As the UEFA European Football Championship unfolds, let’s create a data app to visualize, for any timeframe in football history, what teams held the most victories :trophy:. We can’t wait to see if you find any surprising rankings!

Here is the challenge. Let’s use this thread to post our solutions to it, which should be uploaded to your public KNIME Hub spaces with tag JKISeason3-6.

:sos: Need help with tags? To add tag JKISeason3-6 to your workflow, go to the description panel in KNIME Analytics Platform, click the pencil to edit it, and you will see the option for adding tags right there. :slight_smile: Let us know if you have any problems!

4 Likes

Here’s my solution. This challenge was a little more complicated than I first thought.

6 Likes

Hello! This is my solution!!

5 Likes

I would suggest that you don’t use a nightly build KAP to build workflows for JKI. Very few other Knimers use nightly builds for production work. Its always tempting because of new features but it means most Knimers won’t be able to use your workflow.

2 Likes

Thank you for your reply. I noticed I did a wrong aggregation.
I fixed it and I uploaded again using KNIME 5.2.5
I added 1980s information too.

5 Likes

Hi @alinebessa :wave: :slightly_smiling_face:

Tonight, I managed to come up with a solution for the JKISeason3-6 challenge, even though I don’t really understand much about the game of soccerc :smile:

8 Likes

Hi all,
Here is my solution.

I have developed two types of tournaments. It includes features such as a range filter (by year) and a top N filter. One of my favorite components, the Choropleth Map, makes it easy to visualize trends.

The second application is specifically designed for examing the details of each tournament.

8 Likes

Welcome to our community, @mr_icaro!

2 Likes

Hello, this is my solution.

I used a range slider to select the year range and an integer widget to select the number of top teams to display.
The bar chart shows total win, draw and lose.

7 Likes

Hi!!
I’m delighted I can go with this event (again)
here are my solutions :


cheers,
Veni

8 Likes

Hi,
I only focus on the UEFA Euro, which uses win rate data to evaluate the results of each team.

BR

6 Likes

TL:DR:

  • implemented ELO system - all-time ELO turned out useless, however after 3h of execution I at least saved the .table file to local wf data area
  • made it interactive - user pics cut of date and number of years to go backwards in time as well as the competitions to include
  • ELO is calculated for the selected timeframe / competitions - in the first match every team starts with ELO = 1000
  • Top 10 by average ranking for each year shown in rank bump chart
  • absolute ranking over full timeframe shown in Table View
  • full Match history and ELO development shown in different Table View

I think this one derailed a little bit for me :D. This tends to happen when sports data is involved…

I was trying to work out how to best determine “the best team” whilst also somehow considering the quality of opponents… then it occurred to me… there is something called ELO that is used in matchmaking for multiplayer games (warcraft 3, startcraft 2… and of course… CHESS just to name those that I have touched in the distant past).

It actually was not too difficult to find a source for ELO algorithms and to implement it - I though started to get concerned a little when I realised that every row needed to be processed individually inside a recursive loop as the new ELO after a match needed to be considered in the next matches ELO calculation… 46k rows… can’t take too long right? :joy: It looked ok to start with however after a few hours of running when hitting the high 30ks the end seemed near however processing slowed down more and more…

I then realised that KNIME was running on 2k of RAM max so I cancelled, set it to 16gb and started again… three hours later it was done… and the outcome was gibberish as ELO doesn’t work very well over this long timeframe once ELO differences between teams are large.

Given the computational effort my poor computer put into it I saved the data regardless and moved on to building something that makes sense on top of the algo so:
To limit the rows to be processed, there are widgets to pick a cut of date (no matches after this date to be considered) and a full number of years to go backwards from that date (no games earlier than the calculated date are considered). Also the competitions to be included can now be selected via widget.

So despite the all-time calculation definitely not working out I wanted to share the results here:

Top 3 teams based on total ELO after processing all 46k games:

South Korea? Really did not see that one coming!

Top 3 Teams in the 1980s:
Based on Average ELO (Rank Chart example)

Based on Absolute ELO (Table View Example)

You can find the workflow here:

8 Likes

Hi all, here is my solution to Just KNIME It! Challenge 6 - Season 3.

9 Likes

Here it´s my solution!

https://hub.knime.com/pablofernandez/spaces/Public/latest/JKISeason3-6~2U4odL9nSnp2VROf/

Including also possibility to choose Tournaments, and average of Winning matches over Total matches.

4 Likes

Hi all, here is my solution.

I feel like there are a lot of complicated solutions from everyone these days, so I went back to the beginner’s mood and created an application with a simple table view.


The challenge asked us to show the top 3, but I’ve expanded it and set it up to display the top 10. The upper table lists the teams by number of wins and winning percentage from the 1980s, the bottom one allows the user to set the time period for the tally using the Date&Time widget which can show calendar.

6 Likes


Friendly matches have been ignored.

To improve my productivity as a KNIMEer, I used Components available in the Community Hub. It definitely helps.

4 Likes

Hi everyone,
Years were converted to decades using string manipulation to facilitate selection from a drop-down list. I’m not very familiar with soccer, so… the median of annual number of matches and participating countries in each tournament over the entire period were calculated to estimate their importance and scale. Total victories were calculated (1 point per win, 0.5 per draw) and displayed in a bar chart with the top three highlighted in red.

7 Likes

Hello knimers
This is my take to the challenge. All challenge requests are addressed in the visualization dashboard.

Keep it coding :vulcan_salute:t4:

6 Likes

I have implemented another version using the Elo algorithm.

This algorithm is a simplified version of FIFA’s “SUM” algorithm, equivalent to an Elo like algorithm.Mainly simplified the setting of K value (I value), without taking different K values according to the competition category, but unifying them into one K value.

FIFA “SUM” algorithm:

The workflow implementation referred to @ Dennis Ganzaroli’s article:

There may be differences in ranking compared to FIFA, so different K values may need to be taken based on the category of the competition. But this involves certain professional knowledge, so it has not been further refined.

6 Likes

Approach
To answer the question, I needed to know what & where does a win mean? E.g. is it absolute wins or winning percentages? Do friendlies or Confederation Cups count? How about teams that win all of their very few matches?

Why not use it all? Start with dates, filter by wins and tournaments, then let the user decide if they want to get the top 3 teams by absolute wins or winning percentage.

Apart from just returning the top 3 teams, we should provide more context for each team.

  1. How many wins, losses, and draws?
  2. How many tournaments did they take part in?
  3. What’s their best win and worst loss?
  4. What’s the breakdown of their WLD?

And, how did the other teams do?

How

  1. Build 2 datasets:
    A) Aggregated dataset of wins, losses, draws for each team and tournament for specified duration
    B) Add on features to original dataset: home, away outcomes; goal difference

  2. Use dataset A to get the top 3 winners, and rest of the pack info

  3. Use dataset B to get best & worst match details for each of the 3 winners

  4. Display results in dashboard

Link to Workflow

tada???
Dashboard of top 3 teams & miscellanea

Main workflow


The actual Data App

5 Likes