chrisw wrote: ↑Sun Jun 30, 2019 3:07 pm
Ferdy wrote: ↑Sun Jun 30, 2019 2:26 pm
chrisw wrote: ↑Sun Jun 30, 2019 11:35 am
Different approach, but involves a bit of chess programming....
Build evaluation feature list. mobility for each piece, pieces hanging, pieces attacked, attacks around king, something about pawns, castle status, each piece development, checks, and so on, use your imagination.
Sure we can do that.
chrisw wrote: ↑Sun Jun 30, 2019 11:35 am
Perform linear regression using EPDs for large pool of players and for individual players you are interested in to get optimal weights.
Which are your independent and dependent variables? Which weight to optimize? Can you give an example?
for each EPD, build eval feature list, (for example, light square bishop mobility, range 0-14) squash to 0-1. Each feature times weight contributes to evaluation.
I guess in the parlance, the eval features are the independent variables and game result dependent.
linear regress a bunch of EPDs to find weights.
eventually, you find weights for large pool, and weights for some specific player X, or Tal. Compare.
Perhaps I am being entirely random, but it might show something. For example, checks might be weighted more heavily for Tal, and pieces all protecting each other weight more heavily for Nimzovitch. Guessing.
It is much clearer now. Something like below with Tal as an example, check if this is what you mean.
1. Measure Tal's evaluation features weights. Features are [mobility, king attack, material , etc]
2. Get positions from Tal's games, pos_tal.
2.1. Middle phase positions
2.2. Others
3. Get positons from other players games, pos_other_player.
3.1. Middle phase positions
3.2 Others
4. Find the optimal weights in each feature in the pos_tal using multiple linear regression.
4.1 For each epd, measure the mobility, king safety, etc using Stockfish's eval command.
4.2 Save the epd with opcode c0. Example epd1, c0 "mobility=10, kingsafety=15, etc=cp_value, res=game_result";
4.3 That epd will be used in the regression to get optimal weights or coefficients of the features.
5. Find the optimal weights in each feature in the pos_other_player using multiple linear regression.
5.1 Same as in 4.1
5.2 Same as in 4.2
5.3 Same as in 4.3
6. Compare the optimal weights, feature by feature between results in (4) and (5)
6.1 If Tal's king attack feature has higher weight compared to that of (5) then Tal indeed liked to attack opponent's king.
6.2 If Tal's material feature has lower weight compared to that of (5), then Tal really liked to sacrifice material.
If we add more eval features we probably need to modify Stockfish to expose more of its evaluation features onto its eval command.